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. Thoughts? Patrick
