Testing consensus implementations using communication closure
Cezara Dragoi, Constantin Enea, Burcu Kulahcioglu Ozkan, Rupak Majumdar, Filip Niksic
摘要
Large scale production distributed systems are difficult to design and test. Correctness must be ensured when processes run asynchronously, at arbitrary rates relative to each other, and in the presence of failures, e.g., process crashes or message losses. These conditions create a huge space of executions that is difficult to explore in a principled way. Current testing techniques focus on systematic or randomized exploration of all executions of an implementation while treating the implemented algorithms as black boxes. On the other hand, proofs of correctness of many of the underlying algorithms often exploit semantic properties that reduce reasoning about correctness to a subset of behaviors. For example, the communication-closure property, used in many proofs of distributed consensus algorithms, shows that every asynchronous execution of the algorithm is equivalent to a lossy synchronous execution, thus reducing the burden of proof to only that subset. In a lossy synchronous execution, processes execute in lock-step rounds, and messages are either received in the same round or lost foreverÐsuch executions form a small subset of all asynchronous ones.
We formulate the communication-closure hypothesis, which states that bugs in implementations of distributed consensus algorithms will already manifest in lossy synchronous executions and present a testing algorithm based on this hypothesis. We prioritize the search space based on a bound on the number of failures in the execution and the rate at which these failures are recovered. We show that a random testing algorithm based on sampling lossy synchronous executions can empirically find a number of bugsÐincluding previously unknown onesÐin production distributed systems such as Zookeeper, Cassandra, and Ratis, and also produce more understandable bug traces.
CCS Concepts: • Software and its engineering → Software testing and debugging; • Theory of computation → Distributed computing models.
问问这篇 Paper
智能体会读完全文。
Lune 把这篇 Paper 索引到了最后一个公式,引用它的顶会 Paper 也一样。你提问,回答直接引用原文。
引用它的顶会 Paper5
- Automatic Reliability Testing For Cluster Management ControllersXudong Sun, Wenqing Luo, Jiawei Tyler Gu, Aishwarya Ganesan 等OSDI 2022 · 被引用 44 次
- Randomized Testing of Byzantine Fault Tolerant AlgorithmsLevin N. Winter, Florena Buse, Daan de Graaf, Klaus von Gleissenthall 等OOPSLA 2023 · 被引用 23 次
- Greybox Fuzzing of Distributed SystemsRuijie Meng, George Pîrlea, Abhik Roychoudhury, Ilya SergeyCCS 2023 · 被引用 22 次
- Model-Guided Fuzzing of Distributed SystemsEge Berkay Gulcan, Burcu Kulahcioglu Ozkan, Rupak Majumdar, Srinidhi NagendraOOPSLA 2025 · 被引用 3 次
- Reward Augmentation in Reinforcement Learning for Testing Distributed SystemsAndrea Borgarelli, Constantin Enea, Rupak Majumdar, Srinidhi NagendraOOPSLA 2024 · 被引用 1 次
相关 Paper
- Modulo: Finding Convergence Failure Bugs in Distributed Systems with Divergence Resync ModelsBeom Heyn Kim, Taesoo Kim, David LieUSENIX ATC 2022 · 被引用 10 次
- Runtime Protocol Refinement Checking for Distributed Protocol ImplementationsDing Ding, Zhanghan Wang, Jinyang Li, Aurojit PandaNSDI 2025 · 被引用 6 次
- Model Checking Guided Testing for Distributed SystemsDong Wang, Wensheng Dou, Yu Gao, Chenao Wu 等EuroSys 2023 · 被引用 21 次
- ECFuzz: Effective Configuration Fuzzing for Large-Scale SystemsJunqiang Li, Senyi Li, Keyao Li, Falin Luo 等ICSE 2024 · 被引用 12 次
- Verifying Almost-Sure Termination for Randomized Distributed AlgorithmsConstantin Enea, Rupak Majumdar, Harshit Jitendra Motwani, V. R. SathiyanarayanaPOPL 2026 · 被引用 1 次
