I've been thinking that we need better testing for the client code. In
particular it's currently difficult to simulate all the different
types of failures a client might see. I'm wondering how we might do
this - two ideas come to mind; 1) aspectj and 2) mocks (mockito).
Anyone have other suggestions?
I've used 1 before on an ad-hoc basis to find issues in the server
quorum code (aspects which would randomly cause a connect, bind,
write, read, etc.... to fail). 2 seems better from a deterministic
basis (ie repeatable tests that are easier to verify pass/fail). The
only issue I see with 2 (other than refactoring some of the client
code) is the need to mock networking level code. Perhaps both
approaches could be applied together or separately.