No Description

cypherpunks 14bb7b8621 Move network tests to separate Python files 8 years ago
lib 14bb7b8621 Move network tests to separate Python files 8 years ago
net ad272e692f Create empty /net directory 9 years ago
networks 396da926fd Add bridges+hs network to test bridges and hidden services together 9 years ago
scratch 7f4003d3f6 Add our accumulated notes from the last few in-person sessions... 13 years ago
scripts 14bb7b8621 Move network tests to separate Python files 8 years ago
tools ac23887148 Remove trailing spaces 8 years ago
torrc_templates e647bffb7a Merge remote-tracking branch 'teor/clarify-exit-policies' 8 years ago
.gitignore ad272e692f Create empty /net directory 9 years ago
LICENSE 90ae6fee47 add a license file 10 years ago
README 14bb7b8621 Move network tests to separate Python files 8 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 8 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:

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
client, you'll likely get a verification failure due to
https://trac.torproject.org/projects/tor/ticket/15937

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

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.