Interoperability tests for pion/dtls. The aim is to test every DTLS 1.2 and 1.3 feature supported by Pion, first against itself, then against other DTLS implementations.
The suite connects Pion clients and servers to peers and runs shared test cases against each implementation. Cases that a peer does not support or that its adapter has not implemented are skipped.
The following implementations have test runners:
| Implementation | Runner |
|---|---|
| Pion DTLS v4 | pion-v4 |
| Pion DTLS v3 | pion-v3 |
| BoringSSL | boringssl |
| OpenSSL 3 | openssl3 |
| OpenSSL 4 | openssl4 |
| wolfSSL | wolfssl |
| Mbed TLS | mbedtls |
| TLS-Anvil (DTLS 1.2 and 1.3 server tests) | anvil |
With Nix and Devenv installed, enter the development environment to get Go, Task, and the peer implementations:
devenv shell
task interoptask interop runs all implementations using the Pion version in go.mod.
Use RUNNER to select one:
task interop RUNNER=pion-v4
task interop RUNNER=boringssl
task interop RUNNER=openssl4Pass a branch, tag, or commit to clone it into .cache/pion-dtls/<ref> and test
that checkout. An existing cached checkout is reused:
task interop -- main
task interop -- v4.0.0
task interop -- ee71667c005d4ae1745490f2c6ef87555d898c68You can also pass a relative or absolute path to a local pion/dtls v4 checkout, including uncommitted changes:
task interop -- ../dtls
task interop RUNNER=pion-v4 -- /path/to/dtlsThe runner uses a temporary Go workspace to test the selected checkout.
devenv.nix defines the tools and peer binaries. Inside devenv shell,
you can check the bundled OpenSSL versions and BoringSSL shim:
openssl-3 version
openssl-4 version
bssl-shim -is-handshaker-supportedJoin the Pion Discord for discussion and see the contributing guide to get involved.
MIT licensed. See LICENSE.