test-network-impl.sh 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/bin/sh
  2. if ! "$CHUTNEY_PATH/tools/bootstrap-network.sh" "$NETWORK_FLAVOUR"; then
  3. CHUTNEY_WARNINGS_IGNORE_EXPECTED=false CHUTNEY_WARNINGS_SUMMARY=false \
  4. "$WARNING_COMMAND"
  5. "$WARNINGS"
  6. $ECHO "bootstrap-network.sh failed"
  7. exit 1
  8. fi
  9. # chutney starts verifying after CHUTNEY_START_TIME seconds,
  10. # keeps on trying for CHUTNEY_BOOTSTRAP_TIME seconds,
  11. # and then stops after CHUTNEY_STOP_TIME seconds.
  12. # Even the fastest chutney networks take 5-10 seconds for their first consensus
  13. # and then 10 seconds after that for relays to bootstrap and upload descriptors
  14. # But chutney defaults to running a bit more slowly, so it is more reliable.
  15. export CHUTNEY_START_TIME=${CHUTNEY_START_TIME:-60}
  16. export CHUTNEY_BOOTSTRAP_TIME=${CHUTNEY_BOOTSTRAP_TIME:-60}
  17. export CHUTNEY_STOP_TIME=${CHUTNEY_STOP_TIME:-0}
  18. CHUTNEY="$CHUTNEY_PATH/chutney"
  19. if [ "$CHUTNEY_START_TIME" -ge 0 ]; then
  20. $ECHO "Waiting $CHUTNEY_START_TIME seconds for a consensus containing relays to be generated..."
  21. # We log bootstrap status for debugging purposes.
  22. # We'll fix bootstrap errors in #20473.
  23. "$CHUTNEY" wait_for_bootstrap "$CHUTNEY_NETWORK" \
  24. || $ECHO "Tor bootstrap failed, ignoring for now."
  25. else
  26. $ECHO "Chutney network launched and running. To stop the network, use:"
  27. $ECHO "$CHUTNEY stop $CHUTNEY_NETWORK"
  28. "$WARNINGS"
  29. exit 0
  30. fi
  31. if [ "$CHUTNEY_BOOTSTRAP_TIME" -ge 0 ]; then
  32. # Chutney will try to verify for $CHUTNEY_BOOTSTRAP_TIME seconds each round
  33. n_rounds=0
  34. # Run CHUTNEY_ROUNDS verification rounds
  35. $ECHO "Running $CHUTNEY_ROUNDS verify rounds..."
  36. while [ "$n_rounds" -lt "$CHUTNEY_ROUNDS" ]; do
  37. n_rounds=$((n_rounds+1))
  38. if ! "$CHUTNEY" verify "$CHUTNEY_NETWORK"; then
  39. CHUTNEY_WARNINGS_IGNORE_EXPECTED=false \
  40. CHUTNEY_WARNINGS_SUMMARY=false \
  41. "$WARNING_COMMAND"
  42. "$WARNINGS"
  43. $ECHO "chutney verify $n_rounds/$CHUTNEY_ROUNDS failed"
  44. exit 1
  45. fi
  46. $ECHO "Completed $n_rounds/$CHUTNEY_ROUNDS verify rounds."
  47. done
  48. else
  49. $ECHO "Chutney network ready and running. To stop the network, use:"
  50. $ECHO "$CHUTNEY stop $CHUTNEY_NETWORK"
  51. "$WARNINGS"
  52. exit 0
  53. fi
  54. if [ "$CHUTNEY_STOP_TIME" -ge 0 ]; then
  55. if [ "$CHUTNEY_STOP_TIME" -gt 0 ]; then
  56. $ECHO "Waiting $CHUTNEY_STOP_TIME seconds before stopping the network..."
  57. fi
  58. sleep "$CHUTNEY_STOP_TIME"
  59. # work around a bug/feature in make -j2 (or more)
  60. # where make hangs if any child processes are still alive
  61. if ! "$CHUTNEY" stop "$CHUTNEY_NETWORK"; then
  62. CHUTNEY_WARNINGS_IGNORE_EXPECTED=false CHUTNEY_WARNINGS_SUMMARY=false \
  63. "$WARNING_COMMAND"
  64. "$WARNINGS"
  65. $ECHO "chutney stop failed"
  66. exit 1
  67. fi
  68. # Give tor time to exit gracefully
  69. sleep 3
  70. else
  71. $ECHO "Chutney network verified and running. To stop the network, use:"
  72. $ECHO "$CHUTNEY stop $CHUTNEY_NETWORK"
  73. "$WARNINGS"
  74. exit 0
  75. fi
  76. "$WARNINGS"
  77. exit 0