A Distributed Systems Testing Framework