Diorama is a deterministic simulation testing framework designed for distributed JVM applications.
The key idea is to run a set of distributed JVM processes within the same single test process. Each node in the distributed system is executed via an isolated class loader in its own parent thread, while the node may itself be multi-threaded and create child threads. Network interactions between distributed nodes will be mocked with synchronized message passing across the parent threads corresponding to each node.
The primary intention is to eventually use Fray for conducting concurrency testing across distributed systems. Since Fray can precisely control the order of thread interleavings in any JVM program, this would correspond to controlling both the inter-node message passing order within distributed systems as well as their intra-node concurrency.
Documentation
- Usage Guide - A step-by-step guide on how to use Diorama for testing distributed JVM applications
- Server Protocol Specification - Details of the client-server communication protocol for launching JVM applications
- Mock Sockets Architecture - State machine diagrams for mocked socket classes