test-network-impl.sh 2.8 KB

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