Skip to content

About

Pakostii (pronounced “pák-ost-ee”) is a distributed systems testing framework built with Go, utilizing the power of Linux, eBPF, and Containerd.

  1. Be easy to use but powerful enough to handle complex distributed systems testing scenarios
  2. Provide an easy to set up, easy to run, easy to debug environment for distributed systems testing
  3. Be easy to use in cloud environments like CI/CD pipelines in order to allow developers to streamline their testing workflows

While pakostii is at its early stages, it already provides a handful of features for distributed systems testing.

  • Simulate a network of nodes with one or multiple services running on each node.
  • Define test cases with fault injection. Currently only network isolation faults are supported, while the end goal is to provide a suite of fault types to simulate real-world distributed systems failures, which includes all sorts of network issues, disk I/O issues, OOM, and more.
  • Interact with cluster members via provided APIs like in-cluster HTTP calls and per-container command execution.

pakostii’s main goal is to simplify the setup required to run distributed systems tests by abstracting away network and container provisioning, fault injection, test teardown, while providing a powerful enough API exposed to test cases.

pakostii takes care of:

  • Network provisioning by defining a custom network namespace for each node and creating a LAN gateway for communication between nodes.
  • OCI Container provisioning via Containerd.
  • Artifact collection for easy debugging and result analysis.
  • Teardown of resources after test execution, which includes stopping any container tasks and removing configured network topologies.

Pakostii is at very early stages and does not provide a full suite of fault types to simulate real-world distributed systems failures. You can see pakostii is a POC with major rework needed to make it production-ready.

Since pakostii heavily relies on Linux APIs, you can run pakostii tests on Linux hosts only. On top of that, there is a list of prerequisites that need to be met before running pakostii tests:

  • Go version is at least 1.26.2
  • Linux Kernel >= 5.9 and BPF/XDP enabled for tests that use network isolation faults.
  • Containerd v2 is installed and running on your system.

If this sounds interesting to you, head over to the getting started page to learn how to get started with pakostii.