SMCRemote is a simple client server application that allows remote invocation of my State Machine Compiler (SMC). Users can write .sm files and then invoke SMCRemoteClient. This will ship the .sm files to a special server, which will compile them down into Java or C++. The resulting files will then be shipped back to the client, along with the stdout and stderr streams of the compiler.
I wrote lots and lots of unit tests for this program, but was using manual acceptance tests (I know Lisa... No manual tests ever!)
Then I began to suspect that there was a concurrency problem. Two simultaneous compiles might not work correctly. Manual testing just wasn't repeatable enough to verify that this was happening, nor that any fix was truly a fix.
Just as I was contemplating this problem, I ran into Ward at OOPSLA. He showed me the FIT framework, and the solution to my problem was immediately evident to me (not to mention how awed I was by the elegance of the FIT concept.)
Back from OOPSLA I took a couple of days and wrote the CommandLineFixture. This allowed me to start up the server in a local environment, and force concurrent compiles. Sure enough, there was a concurrency problem, and it was repeatable using my new acceptance test.
I fixed the problem and the acceptance test now passes perfectly.
One lesson learned: UnitTestYourFixtures
|Last edited December 16, 2002
Return to WelcomeVisitors