Testing concurrent accesses


I've recently come across a bug in one of my applications where destroying a model can occur while it's locked in another place for processing. Just for the record: the destroy correctly aborts because of this but there are files removed by dependent models being destroyed to that can't be restored when the rollback occurs (after_destroy is not delayed until the actual commit...).

I know how I can solve this but I would like to create a test before (TDD/BDD are my friends...) and I don't know how I can handle this in tests (reproducing a race condition isn't especially easy).

Is there anyone on this list with experience to share on this particular subject?


You might find this article on the JMock site useful - http://www.jmock.org/threads.html

They suggest trying to separate out the concurrency as a separate class and then write unit tests around the business logic while mocking out the concurrency.

This approach has worked for me in the past.