
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)
Keywords
Summary
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
Markers derived by PSI from the transcript: the creator did not define chapters.
- Introduction: speaker and topic presentation, problem statement about testing distributed systems.
- Challenges of integration tests for distributed protocols: cost, non-reproducibility, complexity.
- Idea: separate protocol logic from I/O, making it a state machine with input events and outbox actions.
- Concrete example: PlumTree gossip protocol and how it is implemented in Corrosion.
- Implementation details: trait/interface for effects, caller provides environment, outbox-based design.
- Testing approach: binary heap event loop, virtual time, simulated 2000-node cluster without threads.
- Simulating failures and tweaking parameters: measuring latencies, injecting node downtime, random selection seeds.
- Benefits: determinism, quick execution, replayability, ability to tune parameters.
- Caveats: integration still needs testing, not a silver bullet, added complexity for users.
- Summary: sans-IO pattern, protocol doesn't need to own IO, separating actions from effects improves testability.
Cited Sources
- Bug Bash EU 2026 — Conference event page
- Speaker's GitHub — Mentioned as source for open-source code
- Speaker's LinkedIn — Speaker profile
- GOTO Conferences LinkedIn — Channel/company page
- GOTO Conferences Bluesky — Channel social media
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.