Closed bassosimone closed 1 year ago
I have started sketching out this functionality in https://github.com/ooni/2023-05-richer-input/pull/1 and https://github.com/ooni/2023-05-richer-input/pull/2.
In https://github.com/ooni/2023-05-richer-input/pull/3, I have rewritten fbmessenger
to use the new DSL prototype.
I have made additional progress in https://github.com/ooni/2023-05-richer-input/pull/5, as documented by the commit message.
In https://github.com/ooni/2023-05-richer-input/pull/6, I've updated fbmessenger again to sync up with https://github.com/ooni/2023-05-richer-input/pull/5.
In https://github.com/ooni/2023-05-richer-input/pull/7, I added a significantly improved DSL implementation. I think with https://github.com/ooni/2023-05-richer-input/pull/7 we can say the original objective of this issue has been met.
(This may also be a good moment as anyone else to say hello to my friend @Lymphatus)
With the merge of https://github.com/ooni/2023-05-richer-input/pull/8, this work is really done.
I'm going to close this issue.
This issue is about experimenting with adding support for mini nettests to dslx. The current richer input prototype defines mini nettests as portions of a nettest that run within a larger nettest. For example, the IM nettests can all be implemented in terms of mini nettests.
In the current prototype, for example, we can express Facebook Messenger as follows:
The above design defines a bunch of mini nettests by name (e.g.,
tcp-connect-domain@v1
). I am worried that defining mini nettests in this way leads to a bunch of code to maintain on the probe side. In fact, to implement mini nettests in this fashion we need to define an input data structure and an implementation function for many combinations of the fundamental network operations, including DNS lookup, TCP connect, TLS handshake, QUIC handshake, HTTP round trips.Because we have recently implemented composable measurement primitives as part of the dslx package, I would like to explore whether it is possible to implement changes to dslx such that we can express measurement primitives as a flat pipeline. A YAML example of what I mean is the following:
It is probably possible to make
dslx
more generic to support this use case. The question is how much complexity would this change entail. Therefore, I am going to sketch out a prototype first and then land it intomaster
if it seems that this way of proceeding yields more benefits than the extra complexity it requires.