ooni-probe-cli/internal/engine
kelmenhorst c31591f298
cli: new testhelper and the websteps experiment prototype (#432)
This is the extension of https://github.com/ooni/probe-cli/pull/431, and my final deliverable for GSoC 2021.

The diff introduces:

1) The new `testhelper` which supports testing multiple IP endpoints per domain and introduces HTTP/3 control measurements. The specification of the `testhelper` can be found at https://github.com/ooni/spec/pull/219. The `testhelper` algorithm consists of three main steps:

   * `InitialChecks` verifies that the input URL can be parsed, has an expected scheme, and contains a valid domain name.

   * `Explore` enumerates all the URLs that it discovers by redirection from the original URL, or by detecting h3 support at the target host.

   * `Generate` performs a step-by-step measurement of each discovered URL.

2) A prototype of the corresponding new experiment `websteps` which uses the control measurement of the `testhelper` to know which URLs to measure, and what to expect. The prototype does not yet have:

   * unit and integration tests,

   * an analysis tool to compare the control and the probe measurement.

This PR is my final deliverable as it is the outcome of the trials, considerations and efforts of my GSoC weeks at OONI. 
It fully integrates HTTP/3 (QUIC) support which has been only used in the `urlgetter` experiment until now.

Related issues: https://github.com/ooni/probe/issues/1729 and https://github.com/ooni/probe/issues/1733.
2021-08-17 10:29:06 +02:00
..
experiment cli: new testhelper and the websteps experiment prototype (#432) 2021-08-17 10:29:06 +02:00
geolocate cleanup(all): stop using deprecated ioutil functions (#381) 2021-06-15 14:01:45 +02:00
httpheader Release 3.10.0 beta.3 (#345) 2021-05-13 08:16:28 +02:00
httpx fix(all): introduce and use iox.ReadAllContext (#379) 2021-06-15 11:57:40 +02:00
internal refactor: move bytecounter to internal (#391) 2021-06-22 13:00:29 +02:00
legacy refactor: move ErrorWrapperResolver to errorsx pkg (#419) 2021-07-01 18:51:40 +02:00
mockable feat: tutorial on how to write the torsf experiment (#390) 2021-06-22 00:12:03 +02:00
model refactor: move scrubbingLogger to the scrubber pkg (#394) 2021-06-22 14:43:58 +02:00
netx fix(netx): make sure we save quic udp conn events (#423) 2021-07-02 11:00:12 +02:00
probeservices feat: tutorial on how to write the torsf experiment (#390) 2021-06-22 00:12:03 +02:00
testdata fix: add missing files causing tests to fail (#202) 2021-02-02 14:18:22 +01:00
.gitignore feat: support embedding encrypted psiphon config (#285) 2021-04-02 17:36:06 +02:00
allexperiments.go cli: new testhelper and the websteps experiment prototype (#432) 2021-08-17 10:29:06 +02:00
experiment_integration_test.go refactor(inputloader): better docs and naming (#265) 2021-03-26 09:34:27 +01:00
experiment_internal_test.go chore: merge probe-engine into probe-cli (#201) 2021-02-02 12:05:47 +01:00
experiment_test.go chore: merge probe-engine into probe-cli (#201) 2021-02-02 12:05:47 +01:00
experiment.go refactor: move bytecounter to internal (#391) 2021-06-22 13:00:29 +02:00
experimentbuilder_test.go chore: merge probe-engine into probe-cli (#201) 2021-02-02 12:05:47 +01:00
experimentbuilder.go refactor(inputloader): better docs and naming (#265) 2021-03-26 09:34:27 +01:00
inputloader_network_test.go refactor: flatten and separate (#353) 2021-06-04 10:34:18 +02:00
inputloader_test.go refactor: flatten and separate (#353) 2021-06-04 10:34:18 +02:00
inputloader.go refactor: flatten and separate (#353) 2021-06-04 10:34:18 +02:00
inputprocessor_test.go refactor: flatten and separate (#353) 2021-06-04 10:34:18 +02:00
inputprocessor.go refactor: flatten and separate (#353) 2021-06-04 10:34:18 +02:00
kvstore.go refactor: flatten and separate (#353) 2021-06-04 10:34:18 +02:00
saver_test.go chore: merge probe-engine into probe-cli (#201) 2021-02-02 12:05:47 +01:00
saver.go chore: merge probe-engine into probe-cli (#201) 2021-02-02 12:05:47 +01:00
session_integration_test.go cleanup(all): stop using deprecated ioutil functions (#381) 2021-06-15 14:01:45 +02:00
session_internal_test.go fix(session): make sure tunnel code is tested (#301) 2021-04-05 19:51:41 +02:00
session_nopsiphon_test.go fix(session): make sure tunnel code is tested (#301) 2021-04-05 19:51:41 +02:00
session_nopsiphon.go fix(session): make sure tunnel code is tested (#301) 2021-04-05 19:51:41 +02:00
session_psiphon_test.go feat: support embedding encrypted psiphon config (#285) 2021-04-02 17:36:06 +02:00
session_psiphon.go fix(all): introduce and use iox.ReadAllContext (#379) 2021-06-15 11:57:40 +02:00
session.go refactor: move bytecounter to internal (#391) 2021-06-22 13:00:29 +02:00
submitter_test.go refactor: flatten and separate (#353) 2021-06-04 10:34:18 +02:00
submitter.go chore: merge probe-engine into probe-cli (#201) 2021-02-02 12:05:47 +01:00