cunīcu is written almost completely in Go and heavily relies on awesome tooling and packages for Golang:
- GoReleaser for release automation
- Ginkgo and Gomega for testing
- Pion for its ICE, STUN, TURN implementation
- Gont for end-to-end testing in various network topologies
Furthermore use the following services to manage our development:
- GitHub for source code management and CI pipelines
- Codacy for code quality checks
- Codecov for code coverage analysis
We aim to maintain a test coverage above 80% of the lines of code. Please make sure that your merge requests include tests which do not lower the coverage percentage.
cunīcu's code-base is tested using the Ginkgo/Gomega testing framework.
Unit tests can be found alongside the code in files with a
End-to-end (e2e) integration tests can be found in the
The e2e tests use Gont to construct virtual network environment using Linux's
net namespaces and
veth point-to-point links.
This allows us to test cunīcu in both simple and complex network topologies including, L2 switches, L3 routers, firewalls and NAT boxes.