Hello Chris,
i am currently finishing the B&S assignment, so maybe i can give you
some advices on how to test the DB implementation based on my experience
(although i didn't submit my assigment yet, meaning i could be wrong in my
approach). Anyway, here is how i tested my own DB implementation :
1) first, use java.util.Logger intensively in the database implementation.
It is part of the J2SE core classes and can be disabled at runtime, so
this is in the scope of the assignement. This allow you to check
exactly what the database code has done. Then performs several simple
case ( several threads updating the same record for example, find
on all the database), and check the results.
2) use JUnit to automate the test process. Here, i would advise
to use the Callable interface to launch client threads (and not
Runnable), because it's easier this way to get the Exception occuring
in the client thread code.
Here, you can check that every client thread has finishing its job
(detecting some possible deadlock), that the database supports the
load and that concurrent accesses create not data corruption or lost.
2) use JCarder on all the test you made in 2):
http://www.jcarder.org/. This is an open source dynamic deadlock finder. According to the tests i
have made, it can find possible deadlock even if it doesn't occurs,
which makes it very powerful. You just need to run the instrumented
code on the use case involved. Note that this tool has limitations
(mainly, don't work on java.util.concurrent classes).
I hope this helps,
Gilles