diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml new file mode 100644 index 0000000..eda0725 --- /dev/null +++ b/.github/workflows/e2e.yml @@ -0,0 +1,44 @@ +name: End-to-end interoperability testing + +on: [push, pull_request] + +jobs: + tests: + name: End-to-end test + + strategy: + fail-fast: false + matrix: + ocaml-version: ["4.14.2"] + operating-system: [ubuntu-latest] + + runs-on: ${{ matrix.operating-system }} + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Use OCaml ${{ matrix.ocaml-version }} + uses: ocaml/setup-ocaml@v2 + with: + ocaml-compiler: ${{ matrix.ocaml-version }} + + - name: Install openvpn + run: sudo apt install -y openvpn + + - name: Install dependencies + run: | + opam install --deps-only -t . + opam install bisect_ppx + + - name: Build + run: opam exec -- dune build --instrument-with bisect_ppx + + - name: Testing + run: | + opam exec -- dune runtest --instrument-with bisect_ppx + opam exec -- dune exec bench/bench_engine.exe + sudo ip tuntap add mode tun e2e-test + cd tests/e2e && sudo ./test-server.sh e2e-test + cd tests/e2e && sudo ./test-client.sh e2e-test + ./coverage.sh