Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Glusterfs | 4,102 | 2 days ago | 218 | gpl-2.0 | C | |||||
Gluster Filesystem : Build your distributed storage in minutes | ||||||||||
Testing Distributed Systems | 2,237 | 22 days ago | 1 | cc-by-4.0 | HTML | |||||
Curated list of resources on testing distributed systems | ||||||||||
Maelstrom | 1,607 | 7 days ago | 1 | February 07, 2018 | 11 | epl-1.0 | Clojure | |||
A workbench for writing toy implementations of distributed systems. | ||||||||||
Waltz | 385 | 4 | 6 months ago | 16 | January 05, 2022 | 20 | apache-2.0 | Java | ||
Waltz is a quorum-based distributed write-ahead log for replicating transactions | ||||||||||
Testground | 361 | 2 | 3 months ago | 23 | January 27, 2022 | 226 | other | Go | ||
🧪 A platform for testing, benchmarking, and simulating distributed and p2p systems at scale. | ||||||||||
Nosqlbench | 142 | 19 | 2 days ago | 183 | January 13, 2023 | 240 | apache-2.0 | Java | ||
The open source, pluggable, nosql benchmarking suite. | ||||||||||
Panic Server | 123 | 24 | 8 | 3 years ago | 14 | January 30, 2018 | 1 | JavaScript | ||
Testing for collaborative apps and tools | ||||||||||
Schism | 70 | 3 months ago | 2 | mit | Elixir | |||||
Partition testing tool for elixir | ||||||||||
Gont | 56 | a day ago | 7 | apache-2.0 | Go | |||||
A testing framework for distributed Go applications | ||||||||||
Libpitaya | 54 | 23 days ago | 56 | April 29, 2020 | 24 | mit | C | |||
a client sdk for pitaya game server framework |
Gont is a Go package to support the development networked and distributed applications.
It can construct a virtual network using Linux network spaces, to simulate switches, routers, NAT and endpoints, on a single machine (VM, cloud or native). In addition, it supports developers with tooling for tracing and debugger tooling for investigating distributed applications.
Gont is heavily inspired by Mininet. It allows the user to build virtual network topologies defined Go code. Under the hood the network is then constructed using Linux virtual bridges and network namespaces.
Gont runs on all moderatly recent Linux versions and requires NET_ADMIN
capabilities (or root access).
Using Gont, developers can test complex distributed peer-to-peer and federated applications like routing daemons or social networks and messaging. Integration tests can be automated and executed in CI environments like GitHub actions (which are in fact used to test Gont itself).
Have a look at our slide set to get you started.
Various common network nodes:
Hostname resolution for test nodes (/etc/hosts overlay)
Execution of sub-processes, Go code & functions in the network namespace of test nodes
Simultaneous setup of multiple isolated networks
Ideal for Golang unit tests
Can run in workflows powered by GitHub's runners
Lean code thanks to functional options
Full IPv6 support
Per link network emulation and bandwidth limiting via for Netem and TBF queuing disciplines
Use of existing network namespaces as nodes
Configuration of per-host nftables firewall rules
Built-in Ping & Traceroute diagnostic tools
Built-in packet tracing with PCAPng output
SSLKEYLOGFILE
environment variable
Distributed tracing of events
slog.Handler
to emit structured log records as trace eventszapcore.Core
to emit zap log messages as trace eventsBuilt-in Delve debugger
Have a look at the unit tests for usage examples:
traceroute
(for testing)libpcap
(for compiling BPF filter expressions of packet tracing feature) The development of Gont has been supported by the ERIGrid 2.0 project
of the H2020 Programme under Grant Agreement No. 870620
Gont is REUSE compliant and mainly licensed under the Apache 2.0 license