Thursday, July 9th, 2009
Review of TypeMock Racer
Multithreaded code is difficult to write and nearly impossible to get right without a significant amount of knowledge of the internals of the operating system; things like kernel mode, user mode, pre-emption, scheduling to name a few. What’s even more difficult is the task of trying to test code that is by its very nature designed to perform very complex tasks that can be quite difficult to simulate. At best, you can use the debugger to manually freeze and thaw threads and step through code to identify and fix problems with multithreaded code. The problem has always been that the tooling available for developers on the Microsoft platform has been nearly non-existent, save for that from Intel and some obscure third-parties. With the trend towards TDD, developers have long been able to create unit tests for code that typically is not running concurrently in multiple threads of execution. Leave it to the folks at TypeMock to rescue those of us tasked with creating, debugging and maintaining multithreaded code. They have created a really interesting product that, frankly, no one else has atempted; a unit testing framework for multithreaded code. The product is called TypeMock Racer and it’s priced at $890 per seat. Definitely not cheap, but if you are writing multithreaded code, you simply MUST have this in your toolkit. I downloaded a 21-day trial copy and ran thorough the sample code scenarios as well as skimmed thorough the documentation and I have to say that I’m impressed at the deliberate approach TypeMock have taken to make testing multithreaded code as simple as possible for developers. Basically, you decorate your test methods the same way that you would normally do with other unit test frameworks and Racer performs it’s magic by exercising your code in an attempt to detect concurrency violations for several known threading problems such as deadlocks, starvation, and a few other anti-patterns. What is especially nice is the ability to visualize the results of the test using a graphical flowchart-type dialog that is displayed and shows the flow of control for your threads and pinpoints the source of the problem so you can more easily correct the problem. Another cool thing that Racer does is provides support for saving metadata about the test which can be provided as an attribute if you need to re-run a test under the indentical set of circumstances. This is very helpful for working though Heisenbergs and other scenarios that would, otherwise, be early impossible to reproduce under test. I strongly recommend you take a look at what Racer has to offer and see if it might help you write better multithreaded code that can be proven to be robust through unit tests for a variety of scenarios.


on Thursday, July 1st, 2010 at 1:46 pm:
Buy:Viagra Super Force.Viagra Professional.Levitra.Super Active ED Pack.Cialis Super Active+.Cialis.Cialis Soft Tabs.Viagra.VPXL.Tramadol.Cialis Professional.Viagra Super Active+.Propecia.Maxaman.Soma.Viagra Soft Tabs.Zithromax….