[tor-commits] [sbws/maint-1.1] fix: test: Add chutney configuration

juga at torproject.org juga at torproject.org
Tue Feb 23 07:22:33 UTC 2021


commit 212047f4c4601d263078cde4338060704d026d78
Author: juga0 <juga at riseup.net>
Date:   Thu Dec 17 15:30:11 2020 +0000

    fix: test: Add chutney configuration
    
    and scripts to run the integration tests with chutney.
    It does not replace yet the way integration tests are run.
---
 .gitignore                                         |  1 +
 tests/integration/chutney_data/bwscanner           | 15 +++++++++++++
 .../integration/chutney_data/client_bwscanner.tmpl | 23 +++++++++++++++++++
 tests/integration/chutney_data/non-exit.tmpl       |  4 ++++
 tests/integration/chutney_data/relay-MAB.tmpl      |  4 ++++
 tests/integration/chutney_data/relay-MBR.tmpl      |  4 ++++
 tests/integration/run.sh                           | 14 ++++++++++++
 tests/integration/start_chutney.sh                 | 26 ++++++++++++++++++++++
 tests/integration/stop_chutney.sh                  | 10 +++++++++
 9 files changed, 101 insertions(+)

diff --git a/.gitignore b/.gitignore
index 9903d5d..744436b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@ htmlcov
 dist
 build
 *.lockfile
+chutney
diff --git a/tests/integration/chutney_data/bwscanner b/tests/integration/chutney_data/bwscanner
new file mode 100644
index 0000000..6506bc3
--- /dev/null
+++ b/tests/integration/chutney_data/bwscanner
@@ -0,0 +1,15 @@
+# By default, Authorities are not configured as exits
+Authority = Node(tag="a", authority=1, relay=1, torrc="authority.tmpl")
+NonExitRelay = Node(tag="m", relay=1, exit=0, torrc="non-exit.tmpl")
+ExitRelay = Node(tag="r", relay=1, exit=1, torrc="relay.tmpl")
+Client = Node(tag="c", client=1, torrc="client_bwscanner.tmpl")
+RelayMAB = Node(tag="relay1mbyteMAB", relay=1, torrc="relay-MAB.tmpl")
+RelayMBR = Node(tag="relay1mbyteMBR", relay=1, torrc="relay-MBR.tmpl")
+
+NODES = Authority.getN(3) + \
+      NonExitRelay.getN(9) + \
+      ExitRelay.getN(3) + Client.getN(1)
+
+# RelayMBR.getN(1) + RelayMAB.getN(1) + \
+
+ConfigureNodes(NODES)
diff --git a/tests/integration/chutney_data/client_bwscanner.tmpl b/tests/integration/chutney_data/client_bwscanner.tmpl
new file mode 100644
index 0000000..dc6d0d8
--- /dev/null
+++ b/tests/integration/chutney_data/client_bwscanner.tmpl
@@ -0,0 +1,23 @@
+${include:common.i}
+SocksPort $socksport
+
+#NOTE: Setting TestingClientConsensusDownloadSchedule doesn't
+#      help -- dl_stats.schedule is not DL_SCHED_CONSENSUS
+#      at boostrap time.
+# Try to download after:
+# the minimum initial consensus time to start with,
+# a few eager fetches,
+# then half the minimum testing consensus interval
+#TestingClientDownloadSchedule 0, 5
+#TestingClientConsensusDownloadSchedule 0, 5
+#ControlPort 8015
+UseEntryGuards 0
+UseMicroDescriptors 0
+FetchDirInfoEarly 1
+FetchDirInfoExtraEarly 1
+FetchUselessDescriptors 1
+LearnCircuitBuildTimeout 0
+CircuitBuildTimeout 60
+ConnectionPadding 0
+__DisablePredictedCircuits 1
+__LeaveStreamsUnattached 1
diff --git a/tests/integration/chutney_data/non-exit.tmpl b/tests/integration/chutney_data/non-exit.tmpl
new file mode 100644
index 0000000..25d8806
--- /dev/null
+++ b/tests/integration/chutney_data/non-exit.tmpl
@@ -0,0 +1,4 @@
+${include:relay-non-exit.tmpl}
+
+ExitRelay 0
+ExitPolicy reject *:*
diff --git a/tests/integration/chutney_data/relay-MAB.tmpl b/tests/integration/chutney_data/relay-MAB.tmpl
new file mode 100644
index 0000000..28bc6a7
--- /dev/null
+++ b/tests/integration/chutney_data/relay-MAB.tmpl
@@ -0,0 +1,4 @@
+${include:non-exit.tmpl}
+
+Nickname relay1mbyteMAB
+MaxAdvertisedBandwidth 1 MBytes
diff --git a/tests/integration/chutney_data/relay-MBR.tmpl b/tests/integration/chutney_data/relay-MBR.tmpl
new file mode 100644
index 0000000..946600b
--- /dev/null
+++ b/tests/integration/chutney_data/relay-MBR.tmpl
@@ -0,0 +1,4 @@
+${include:non-exit.tmpl}
+
+Nickname relay1mbyteMBR
+RelayBandwidthRate 1 MBytes
diff --git a/tests/integration/run.sh b/tests/integration/run.sh
new file mode 100755
index 0000000..e870b50
--- /dev/null
+++ b/tests/integration/run.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -x
+
+tests/integration/start_chutney.sh
+python3 scripts/tools/sbws-http-server.py --port 28888 &>/dev/null &
+sleep 1
+wget -O/dev/null http://127.0.0.1:28888/sbws.bin
+# Run actually the scanner
+sbws -c tests/integration/sbws_testnet.ini scanner
+sbws -c tests/integration/sbws_testnet.ini generate
+# Run integration tests
+coverage run -a --rcfile=.coveragerc --source=sbws -m pytest -s tests/integration -vv
+sbws -c tests/integration/sbws_testnet.ini cleanup
+tests/integration/stop_chutney.sh
diff --git a/tests/integration/start_chutney.sh b/tests/integration/start_chutney.sh
new file mode 100755
index 0000000..04f9641
--- /dev/null
+++ b/tests/integration/start_chutney.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -x
+
+CURRENT_DIR=`pwd`
+CHUTNEY_DIR=${1:-./chutney}
+
+# If chutney dir already exists, this will fail but it doesn't matter.
+git clone https://git.torproject.org/chutney.git $CHUTNEY_DIR
+
+cp tests/integration/chutney_data/bwscanner $CHUTNEY_DIR/networks
+cp tests/integration/chutney_data/*.tmpl $CHUTNEY_DIR/torrc_templates
+
+cd $CHUTNEY_DIR
+# In case it wasn't cloned recently, pull.
+# Since this is run only for the tests, it's ok if the tests fail with a newer
+# chutney version, so that we can detect it early.
+git pull
+
+# Stop chutney network if it is already running
+./chutney stop networks/bwscanner
+./chutney configure networks/bwscanner
+./chutney start networks/bwscanner
+./chutney status networks/bwscanner
+./chutney wait_for_bootstrap networks/bwscanner
+
+cd $CURRENT_DIR
diff --git a/tests/integration/stop_chutney.sh b/tests/integration/stop_chutney.sh
new file mode 100755
index 0000000..6008453
--- /dev/null
+++ b/tests/integration/stop_chutney.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+set -x
+
+CURRENT_DIR=`pwd`
+CHUTNEY_DIR=${1:-./chutney}
+cd $CHUTNEY_DIR
+# Stop chutney network if it is already running
+./chutney stop networks/bwscanner
+cd $CURRENT_DIR





More information about the tor-commits mailing list