ooni-probe-cli/internal/tutorial
Simone Basso 9ffa124511
chore: upgrade deps and attempt to enable using go1.19 (#869)
* upgrade to our go.mod enabled of psiphon-tunnel-core such that
we're now using v2.0.24 of the tunnel-core;

* upgrade to the latest lucas-clemente/quic-go release;

* upgrade to the latest ooni/oohttp release (which is based on go1.19
but the diff seems good enough to continue using go1.18.x as well);

* upgrade to the latest ooni/oocrypto release (for which we can make the
same remarks regarding using go1.18.x);

* deal with changes in lucas-clemente/quic-go API as well as changes
in what a go1.19 *tls.Conn compatible type should look like.

Unfortunately, we cannot switch to go1.19 because psiphon forks quic-go
and their fork's still not building using such a version of go.

Part of ooni/probe#2211.
2022-08-19 11:26:50 +02:00
..
experiment/torsf refactor: move tracex outside of engine/netx (#782) 2022-06-02 00:50:55 +02:00
generator doc(measurex): explain how to write experiments (#529) 2021-09-30 01:36:03 +02:00
measurex fix(measurex): allow API user to choose parallelism (#581) 2021-11-05 14:37:03 +01:00
netxlite chore: upgrade deps and attempt to enable using go1.19 (#869) 2022-08-19 11:26:50 +02:00
README.md doc(tutorial): explain the big picture (#582) 2021-11-05 14:51:14 +01:00

Tutorials: writing OONI nettests

This package contains a living tutorial explaining how to write OONI nettests. The code in here is based on existing nettests.

Because it's committed to the probe-cli repository and depends on real OONI code, it should always be up to date.

Index

  • Rewriting the torsf experiment: this tutorial explains to you how to write a simple experiment. After reading it, you will understand the interfaces between an experiment and the OONI core. What this tutorial does not teach you, though, is how to tell the OONI core about this experiment. To see how to do that, you should check how we do that in internal/engine/allexperiments.go.

  • Using the measurex package to write network experiments: this tutorial explains to you how to use the measurex library to write networking code that generates measurements using the OONI data format. You will learn how to perform DNS, TCP, TLS, QUIC, HTTP, HTTPS, and HTTP3 measurements.

  • Low-level networking using netxlite: this tutorial introduces you to the netxlite networking library. This is the underlying library used by measurex as well as by many other libraries inside OONI. You need to know about this library to contribute to measurex as well as to other parts of the OONI core that perform network operations.

Therefore, after reading these tutorials, you should have a better understanding of how an experiment interacts with the OONI core, as well as of which libraries you can use to write experiments.

Regenerating the tutorials

(cd ./internal/tutorial && go run ./generator)