This document discusses the use of deterministic simulation to test distributed systems. It describes how Flow, a programming language extension to C++, can be used to simulate concurrency and external communications deterministically. This allows debugging a simulation instead of the live distributed system. Key aspects of the simulation include single-threaded pseudo-concurrency, simulating external connections and files, and ensuring all control flow is deterministic based only on inputs. The simulator is used to run tests and simulated disasters to uncover bugs in a more efficient manner than real world testing alone.