No Description

teor (Tim Wilson-Brown) aad22037a2 Don't burn through a client's HSDirs too fast in hs-min 7 years ago
lib aad22037a2 Don't burn through a client's HSDirs too fast in hs-min 7 years ago
net ad272e692f Create empty /net directory 9 years ago
networks aad22037a2 Don't burn through a client's HSDirs too fast in hs-min 7 years ago
scratch 7f4003d3f6 Add our accumulated notes from the last few in-person sessions... 13 years ago
scripts 1592d53a91 Make chutney verify retry until success 7 years ago
tools 1592d53a91 Make chutney verify retry until success 7 years ago
torrc_templates e647bffb7a Merge remote-tracking branch 'teor/clarify-exit-policies' 7 years ago
.gitignore 7e708a56bd Add git mergetool backups to the git ignore list 7 years ago
LICENSE 90ae6fee47 add a license file 10 years ago
README 1592d53a91 Make chutney verify retry until success 7 years ago
TODO 2b30059681 Refactor Node into separate Node, Builder, and Launcher classes. 13 years ago
chutney 14bb7b8621 Move network tests to separate Python files 7 years ago

README

This is chutney. It doesn't do much so far. It isn't ready for prime-time.

If it breaks, you get to keep all the pieces.

It is supposed to be a good tool for:
- Configuring a testing tor network
- Launching and monitoring a testing tor network
- Running tests on a testing tor network

Right now it only sorta does these things.

You will need, at the moment:
- Tor installed somewhere in your path or the location of the 'tor' and
'tor-gencert' binaries specified through the environment variables
CHUTNEY_TOR and CHUTNEY_TOR_GENCERT, respectively.
- Python 2.7 or later

Stuff to try:

Automated Setup, Verification, and Shutdown:
./tools/test-network.sh --flavor basic-min
./tools/test-network.sh --tor-path
./tools/test-network.sh --coverage

Standard Actions:
./chutney configure networks/basic
./chutney start networks/basic
./chutney status networks/basic
./chutney verify networks/basic
./chutney hup networks/basic
./chutney stop networks/basic

Bandwidth Tests:
./chutney configure networks/basic-min
./chutney start networks/basic-min
./chutney status networks/basic-min
CHUTNEY_DATA_BYTES=104857600 ./chutney verify networks/basic-min
# Send 100MB of data per client connection
# verify produces performance figures for:
# Single Stream Bandwidth: the speed of the slowest stream, end-to-end
# Overall tor Bandwidth: the sum of the bandwidth across each tor instance
# This approximates the CPU-bound tor performance on the current machine,
# assuming everything is multithreaded and network performance is infinite.
./chutney stop networks/basic-min

Connection Tests:
./chutney configure networks/basic-025
./chutney start networks/basic-025
./chutney status networks/basic-025
CHUTNEY_CONNECTIONS=5 ./chutney verify networks/basic-025
# Make 5 connections from each client through a random exit
./chutney stop networks/basic-025

Note: If you create 7 or more connections to a hidden service from a single
Tor 0.2.7 client, you'll likely get a verification failure due to #15937.
This is fixed in 0.2.8.

HS Connection Tests:
./chutney configure networks/hs-025
./chutney start networks/hs-025
./chutney status networks/hs-025
CHUTNEY_HS_MULTI_CLIENT=1 ./chutney verify networks/hs-025
# Make a connection from each client to each hs
# Default behavior is one client connects to each HS
./chutney stop networks/hs-025

Waiting for the network to bootstrap:

Commands like "chutney verify" start immediately, and keep trying for
CHUTNEY_BOOTSTRAP_TIME seconds. If they haven't been successful after that
time, they fail.

The tools/test-network.sh script waits 15 seconds before calling chutney
verify, because that's the minimum amount of time it takes to bootstrap a
consensus containing relays.

Changing the network address:

Chutney defaults to binding to localhost. To change the bind address,
set the CHUTNEY_LISTEN_ADDRESS environment variable. Setting it to some
interface's IP address allows us to make the simulated Tor network
available on the network.

IPv6 support for both Tor and Chutney is a work in progress. If your system
returns IPv6 ::1 as the (first) address for localhost, you might need to
set CHUTNEY_LISTEN_ADDRESS="127.0.0.1" for chutney to work.

The configuration files:
networks/basic holds the configuration for the network you're configuring
above. It refers to some torrc template files in torrc_templates/.

The working files:
chutney sticks its working files, including all data directories, log
files, etc, in ./net/. Each tor instance gets a subdirectory of net/nodes.

You can override the directory "./net" with the CHUTNEY_DATA_DIR
environment variable.

Test scripts:
The test scripts are stored in the "scripts/chutney_tests" directory. These
Python files must define a "run_test(network)" function. Files starting with
an underscore ("_") are ignored.

Test scripts can be run using the following syntax:
./chutney networks/

The chutney verify command is implemented using a test script.

Test scripts in the test directory with the same name as standard commands
are run instead of that standard command. This allows expert users to replace
the standard chutney commands with modified versions.