Home

Awesome

A Go testing framework for distributed applications

GitHub build goreportcard Codecov branch License GitHub go.mod Go version Go Reference DOI

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).

Getting started

Have a look at our slide set to get you started.

Features

Examples

Please refer to our documentation

Contact

Please have a look at the contact page: cunicu.li/docs/contact.

Funding acknowledment

<img alt="European Flag" src="https://erigrid2.eu/wp-content/uploads/2020/03/europa_flag_low.jpg" align="left" /> The development of Gont has been supported by the ERIGrid 2.0 project
of the H2020 Programme under Grant Agreement No. 870620

License

Gont is licensed under the Apache 2.0 license.