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


You might find this article on the JMock site useful -

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.