ooni-probe-cli/internal
Simone Basso 83e3167ce2
refactor(tracex): internally represent errors as strings (#786)
There are two reasons why this is beneficial:

1. github.com/google/go-cmp is more annoying to use for comparing
data structures when there are interfaces to compare. Sure, there's
a recipe for teaching it to compare errors, but how about making
the errors trivially comparable instead?

2. if we want to send errors over the network, JSON serialization
works but we cannot unmarshal the resulting string back to an error,
so how about making this representation trivial to serialize (we
are not going this now, but we need this property for websteps and
it may be sensible to try to avoid to have duplicate code because
of that -- measurex currently duplicates many tracex functionality
and this is quite unfortunate because it slows development down)

Additionally, if an error is a string:

3. we can very easily use a switch for comparing its possible
values with "" representing the absence of errors, while it is
more complex to do the same when using a nullable string or even
an error (i.e., an interface)

4. if a type is not nullable, it's easier to write safe code for
it and we may want to refactor experiments to use the internal
representation of measurements for more robust processing code

For all these reasons, let's internally use strings in tracex.

The overall aim here is to reduce the duplicated code between pre
and post-measurex measurements (see https://github.com/ooni/probe/issues/2035).
2022-06-02 10:37:07 +02:00
..
atomicx doc: cleanup and improve for recently moved pkgs (#354) 2021-06-04 11:39:00 +02:00
bytecounter refactor(ndt7): use netxlite rather than netx (#768) 2022-05-30 23:14:07 +02:00
cmd refactor: move tracex outside of engine/netx (#782) 2022-06-02 00:50:55 +02:00
engine [forwardport] fix(dnscheck): stop emitting progress (#785) 2022-06-02 09:31:52 +02:00
fakefill feat(httpx): improve testing using the fakefiller (#649) 2022-01-05 14:49:31 +01:00
fsx refactor: merge dnsx and errorsx into netxlite (#517) 2021-09-28 12:42:01 +02:00
httpx fix(httpx): correctly combine paths (#706) 2022-05-09 21:32:49 +02:00
humanize fix(all): introduce and use iox.CopyContext (#380) 2021-06-15 13:44:28 +02:00
kvstore refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
legacy/assetsdir cleanup: move legacy from internal/engine to internal (#759) 2022-05-25 10:19:03 +02:00
measurex feat(netxlite): implement DNSTransport wrapping (#776) 2022-06-01 11:10:08 +02:00
mlablocate cleanup: remove redundant HTTPClient definition (#643) 2022-01-03 16:47:54 +01:00
mlablocatev2 cleanup: remove redundant HTTPClient definition (#643) 2022-01-03 16:47:54 +01:00
model feat(netxlite): implement DNSTransport wrapping (#776) 2022-06-01 11:10:08 +02:00
multierror doc: cleanup and improve for recently moved pkgs (#354) 2021-06-04 11:39:00 +02:00
netxlite hotfix: disable oocrypto until we investigate ciphers selection (#784) 2022-06-02 08:52:15 +02:00
platform feat: add support for OpenBSD (#703) 2022-03-08 12:25:33 +01:00
ptx feat(torsf): collect tor logs, select rendezvous method, count bytes (#683) 2022-02-07 17:05:36 +01:00
randx doc: improve and reference existing bug in the code (#356) 2021-06-04 12:50:23 +02:00
runtimex refactor(tor): rewrite using measurex (#652) 2022-01-05 18:41:11 +01:00
scrubber refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
shellx refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00
stuninput refactor: create common package for holding STUN input (#631) 2021-12-03 14:45:25 +01:00
torlogs feat: re-implement the vanilla_tor experiment (#718) 2022-05-10 15:43:28 +02:00
tracex refactor(tracex): internally represent errors as strings (#786) 2022-06-02 10:37:07 +02:00
tunnel feat(torsf): collect tor logs, select rendezvous method, count bytes (#683) 2022-02-07 17:05:36 +01:00
tutorial refactor: move tracex outside of engine/netx (#782) 2022-06-02 00:50:55 +02:00
version chore: we're not hacking on v3.16.0-alpha (#749) 2022-05-20 20:03:48 +02:00
README.md refactor: interfaces and data types into the model package (#642) 2022-01-03 13:53:23 +01:00

Directory github.com/ooni/probe-cli/internal

This directory contains private Go packages.

As a reminder, you can always check the Go documentation of a package by using

go doc -all ./internal/$package

where $package is the name of the package.

Some notable packages:

  • model contains the interfaces and data model shared by most packages inside this directory;

  • netxlite is the underlying networking library;

  • tutorial contains tutorials on writing new experiments, using measurements libraries, and networking code.