test-network.sh 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #! /bin/sh
  2. ECHO_N="/bin/echo -n"
  3. until [ -z $1 ]
  4. do
  5. case $1 in
  6. --chutney-path)
  7. export CHUTNEY_PATH="$2"
  8. shift
  9. ;;
  10. --tor-path)
  11. export TOR_DIR="$2"
  12. shift
  13. ;;
  14. --flavor|--flavour|--network-flavor|--network-flavour)
  15. export NETWORK_FLAVOUR="$2"
  16. shift
  17. ;;
  18. --delay|--sleep|--bootstrap-time|--time)
  19. export BOOTSTRAP_TIME="$2"
  20. shift
  21. ;;
  22. # Environmental variables used by chutney verify performance tests
  23. # Send this many bytes per client connection (10 KBytes)
  24. --data|--data-bytes|--data-byte|--bytes|--byte)
  25. export CHUTNEY_DATA_BYTES="$2"
  26. shift
  27. ;;
  28. # Make this many connections per client (1)
  29. # Note: If you create 7 or more connections to a hidden service from
  30. # a single client, you'll likely get a verification failure due to
  31. # https://trac.torproject.org/projects/tor/ticket/15937
  32. --connections|--connection|--connection-count|--count)
  33. export CHUTNEY_CONNECTIONS="$2"
  34. shift
  35. ;;
  36. # Make each client connect to each HS (0)
  37. # 0 means a single client connects to each HS
  38. # 1 means every client connects to every HS
  39. --hs-multi-client|--hs-multi-clients|--hs-client|--hs-clients)
  40. export CHUTNEY_HS_MULTI_CLIENT="$2"
  41. shift
  42. ;;
  43. *)
  44. echo "Sorry, I don't know what to do with '$1'."
  45. exit 2
  46. ;;
  47. esac
  48. shift
  49. done
  50. TOR_DIR="${TOR_DIR:-$PWD}"
  51. NETWORK_FLAVOUR=${NETWORK_FLAVOUR:-basic}
  52. CHUTNEY_NETWORK=networks/$NETWORK_FLAVOUR
  53. myname=$(basename $0)
  54. [ -d "$CHUTNEY_PATH" ] && [ -x "$CHUTNEY_PATH/chutney" ] || {
  55. echo "$myname: missing 'chutney' in CHUTNEY_PATH ($CHUTNEY_PATH)"
  56. exit 1
  57. }
  58. cd "$CHUTNEY_PATH"
  59. # For picking up the right tor binaries.
  60. PATH="$TOR_DIR/src/or:$TOR_DIR/src/tools:$PATH"
  61. ./tools/bootstrap-network.sh $NETWORK_FLAVOUR || exit 2
  62. # Sleep some, waiting for the network to bootstrap.
  63. # TODO: Add chutney command 'bootstrap-status' and use that instead.
  64. BOOTSTRAP_TIME=${BOOTSTRAP_TIME:-25}
  65. $ECHO_N "$myname: sleeping for $BOOTSTRAP_TIME seconds"
  66. n=$BOOTSTRAP_TIME; while [ $n -gt 0 ]; do
  67. sleep 1; n=$(expr $n - 1); $ECHO_N .
  68. done; echo ""
  69. ./chutney verify $CHUTNEY_NETWORK
  70. VERIFY_EXIT_STATUS=$?
  71. # work around a bug/feature in make -j2 (or more)
  72. # where make hangs if any child processes are still alive
  73. ./chutney stop $CHUTNEY_NETWORK
  74. exit $VERIFY_EXIT_STATUS