Crate arti_testing

Source
Expand description

Tool for running an Arti client with unusual behavior or limitations.

Example use:

$ cat ~/.arti_testing.toml
[storage]

cache_dir = "${USER_HOME}/.arti_testing/cache"
state_dir = "${USER_HOME}/.arti_testing/state"

$ ./target/debug/arti-testing bootstrap --config ~/.arti-testing.toml \
          --timeout 120 --expect=success
[...lots of logs]
Operation succeeded [as expected]
TCP stats: TcpCount { n_connect_attempt: 4, n_connect_ok: 2, n_accept: 0, n_bytes_send: 461102, n_bytes_recv: 3502811 }
Total events: Trace: 6943, Debug: 17, Info: 13, Warn: 0, Error: 0

$ faketime '1 year ago' ./target/debug/arti-testing connect \
          --config ~/.arti-testing.toml
          --target www.torproject.org:80
          --timeout 60
          --expect=timeout
[...lots of logs...]
Timeout occurred [as expected]
TCP stats: TcpCount { n_connect_attempt: 3, n_connect_ok: 3, n_accept: 0, n_bytes_send: 10917, n_bytes_recv: 16704 }
Total events: Trace: 77, Debug: 21, Info: 10, Warn: 2, Error: 0

ยงTODO

  • More ways to break

    • make TCP connections fail only sporadically
    • make TLS fail
      • With wrong cert
      • Mysteriously
      • With complete junk
      • TLS succeeds, then sends nonsense
      • Authenticating with wrong ID.
    • Munge directory before using it
      • May require some dirmgr plug-in. :p
      • May require
  • More things to look at

    • do something on the connection
    • look at bootstrapping status and events
    • Make streams repeatedly on different circuits with some delay.
  • Make sure we can replicate all/most test situations from arti#329

  • Actually implement those tests.

Modulesยง

config ๐Ÿ”’
Reading configuration and command line issues in arti-testing.
dirfilter ๐Ÿ”’
Support for modifying directories in various ways in order to cause different kinds of network failure.
rt ๐Ÿ”’
Runtimes designed for testing.
traces ๐Ÿ”’
Code to count the traces at different severities.

Structsยง

Job ๐Ÿ”’
Descriptions of an action to take, and what to expect as an outcome.
TcpBreakage ๐Ÿ”’
Describes how (if at all) to break TCP connection attempts

Enumsยง

Action ๐Ÿ”’
A possible action for the tool to try to take
BreakageStage ๐Ÿ”’
At what stage to install a kind of breakage
Expectation ๐Ÿ”’
What we expect to happen when we run a given job.

Functionsยง

main ๐Ÿ”’