I am working on a framework that uses some third-party libraries. Framework clients can use code in a multi-threaded context, but the framework itself does not spawn threads or uses shared memory or locks / synchronization. I see some multithreading issues in the client environment and am looking for a deterministic multithreaded testing system, since the problem seems to be happening in a third-party framework.
Tried so far:
1) The ability to play it in a few runs in the jmeter performance testing environment
2) The ability to reproduce it not so consistently by stress testing using testng multithreading annotation. (@Test (threadPoolSize = 10, invocationCount = 100, timeOut = 10000))
Cons: it just executes the method in the thread pool and does not guarantee strip / static code analysis or provides a deterministic playback method.
3) Tried Junit ActiveTestSuite and @ConcurrentJunitRunner. This is similar to the testng annotation.
4) MultiThreadedTC : seems to work well for multi-threaded lock / sync / shared memory code
5) GroboUtils It seems to be more focused on testing / monitoring shared memory
6) IBM ConTest, , , , , , .
, Microsoft Chess HelGrind/DRD Java, .?
unit test/build, .