test-network-impl.sh 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. sleep "$CHUTNEY_START_TIME"
  22. else
  23. $ECHO "Chutney network launched and running. To stop the network, use:"
  24. $ECHO "$CHUTNEY stop $CHUTNEY_NETWORK"
  25. "$WARNINGS"
  26. exit 0
  27. fi
  28. if [ "$CHUTNEY_BOOTSTRAP_TIME" -ge 0 ]; then
  29. # Chutney will try to verify for $CHUTNEY_BOOTSTRAP_TIME seconds each round
  30. n_rounds=0
  31. # Run CHUTNEY_ROUNDS verification rounds
  32. $ECHO "Running $CHUTNEY_ROUNDS verify rounds..."
  33. while [ "$n_rounds" -lt "$CHUTNEY_ROUNDS" ]; do
  34. n_rounds=$((n_rounds+1))
  35. if ! "$CHUTNEY" verify "$CHUTNEY_NETWORK"; then
  36. CHUTNEY_WARNINGS_IGNORE_EXPECTED=false \
  37. CHUTNEY_WARNINGS_SUMMARY=false \
  38. "$WARNING_COMMAND"
  39. "$WARNINGS"
  40. $ECHO "chutney verify $n_rounds/$CHUTNEY_ROUNDS failed"
  41. exit 1
  42. fi
  43. $ECHO "Completed $n_rounds/$CHUTNEY_ROUNDS verify rounds."
  44. done
  45. else
  46. $ECHO "Chutney network ready and running. To stop the network, use:"
  47. $ECHO "$CHUTNEY stop $CHUTNEY_NETWORK"
  48. "$WARNINGS"
  49. exit 0
  50. fi
  51. if [ "$CHUTNEY_STOP_TIME" -ge 0 ]; then
  52. if [ "$CHUTNEY_STOP_TIME" -gt 0 ]; then
  53. $ECHO "Waiting $CHUTNEY_STOP_TIME seconds before stopping the network..."
  54. fi
  55. sleep "$CHUTNEY_STOP_TIME"
  56. # work around a bug/feature in make -j2 (or more)
  57. # where make hangs if any child processes are still alive
  58. if ! "$CHUTNEY" stop "$CHUTNEY_NETWORK"; then
  59. CHUTNEY_WARNINGS_IGNORE_EXPECTED=false CHUTNEY_WARNINGS_SUMMARY=false \
  60. "$WARNING_COMMAND"
  61. "$WARNINGS"
  62. $ECHO "chutney stop failed"
  63. exit 1
  64. fi
  65. # Give tor time to exit gracefully
  66. sleep 3
  67. else
  68. $ECHO "Chutney network verified and running. To stop the network, use:"
  69. $ECHO "$CHUTNEY stop $CHUTNEY_NETWORK"
  70. "$WARNINGS"
  71. exit 0
  72. fi
  73. "$WARNINGS"
  74. exit 0