test-network-impl.sh 2.6 KB

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