Smc Remote

Here BobMartin reports his success in a difficult environment with an unusual fixture. See CommandLineFixture for more about the fixture itself or go to SampleApplications for more examples.

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