Separate Protocol Logic from I/O for Deterministic Tests • Somtochi Onyekwere • Bug Bash EU 2026

Separate Protocol Logic from I/O for Deterministic Tests • Somtochi Onyekwere • Bug Bash EU 2026

Title history
  • Separate Protocol Logic from I/O for Deterministic Tests • Somtochi Onyekwere • Bug Bash EU 2026 — observed on 20261030-1054 UTC (YouTube)
🎙 Somtochi Onyekwere 👥 1.1M 📅 October 30, 2026 ⏱ 20 min 👁 318 📄 science communication 🧭 2026-10-30
Available in: English (current) Français

Keywords

deterministic testingprotocol logicI/Ostate machinegossip protocol

Summary

In this lightning talk from Bug Bash EU 2026, Somtochi Onyekwere, a Staff Software Engineer at Fly.io, presents a design pattern for testing distributed system protocols deterministically. He argues that separating protocol logic from I/O (message sending, timers, randomness) enables efficient and reproducible testing. The approach involves modeling the protocol as a state machine that takes input events and returns outbox actions, leaving the actual I/O execution to the caller. This separation allows for a local, virtual-time simulation, where events are queued in a binary heap and processed sequentially, bypassing real network and OS interactions. He illustrates this with a gossip protocol (PlumTree) used in Corrosion, Fly.io’s SQLite replication system, highlighting how failures and parameter changes can be easily injected and measured. The talk also notes that while this method greatly simplifies protocol testing, integration into the real system still requires separate verification. Overall, the talk offers a practical, cost-effective way to test complex distributed protocols without needing large clusters, and it emphasizes the broader sans-IO pattern.

167 words

Critical Evaluation

Value of the Information & Strength of the Argument

The talk provides valuable insights into a pragmatic solution for a common problem in distributed systems: the difficulty of testing protocols at scale. The argument is well-structured, starting with the challenges of integration testing and then logically introducing the separation of concerns as a remedy. The concrete example with PlumTree and the description of the custom test harness (binary heap, virtual time) make the approach credible and applicable. The speaker also acknowledges the trade-offs, such as added complexity for library users and the need for integration testing, which strengthens the argument’s balance. The value lies in its actionable advice and the clear demonstration of how to achieve deterministic tests without a multi-verse debugger.

Scientific Rigor, Source Quality, Title Accuracy

The talk is based on the speaker’s direct experience at Fly.io, lending it practical authority. However, it does not cite external sources or literature, so its scientific rigor is limited. The title is highly accurate, matching the content precisely. The description includes links to the conference, the speaker’s GitHub and LinkedIn, and GOTO’s social media, but no academic references. The talk’s adequacy to the title is excellent, as it directly addresses the stated topic without digressions. The lack of formal sources is mitigated by the openness of the code, which is mentioned as being available on GitHub.

225 words

Title / Content Match

The title accurately reflects the content: the talk explains how to separate protocol logic from I/O to achieve deterministic tests.

Quality & Reliability

7/10

The talk provides a clear, practical approach to deterministic testing of distributed protocols, based on hands-on experience at Fly.io. The method is sound and well-illustrated with a concrete example, but lacks formal rigor and in-depth analysis.

Key Moments

Cited Sources

Contribution & Novelties

The talk contributes a practical, well-explained example of applying the sans-IO pattern to distributed protocol testing. The key novelty is the systematic separation of protocol logic from all external effects (I/O, timers, randomness) to enable a deterministic, virtual-time simulation harness that can scale to thousands of nodes on a single machine. This is not entirely new (the sans-IO pattern exists in network programming), but its application to a distributed consensus-like gossip protocol is illustrative and transferable. The talk also provides concrete insights into measuring protocol latencies under simulated failures and parameter tuning.

Pour aller plus loin :

  • Gossip protocol on Wikipedia — Background on epidemic broadcast used in the example.
  • Finite-state machine on Wikipedia — The state machine modeling concept.
  • Deterministic simulation on Wikipedia — The idea of reproducible simulation.
  • Sans-IO pattern (no URL, but concept known from Python networking community) — A design pattern where protocols are independent of the transport layer.
  • PlumTree protocol (originally from INRIA, paper ‘PlumTree: Embedding Social Network Structure into Epidemic-based Broadcasting’) — The specific broadcast protocol used in the example.

176 words

Radar Profile

The radar profile shows a balanced distribution with a strong technical level (8) and moderate scores for information quantity/quality and reliability (7 each). This indicates a focused, practical talk that offers concrete advice but lacks extensive depth or external validation.

Reliability 7/10