浏览代码

testnet-autmation: Add rolling software upgrade script

Trent Nelson 5 年之前
父节点
当前提交
711f3488f1
共有 1 个文件被更改,包括 62 次插入0 次删除
  1. 62 0
      system-test/rolling-upgrade/rolling_upgrade.sh

+ 62 - 0
system-test/rolling-upgrade/rolling_upgrade.sh

@@ -0,0 +1,62 @@
+#!/usr/bin/env bash
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
+REPO_ROOT=${DIR}/../..
+
+# shellcheck source=/dev/null # Ignore generated source target
+source "${REPO_ROOT}/net/config/config"
+# shellcheck source=system-test/automation_utils.sh
+source "${REPO_ROOT}/system-test/automation_utils.sh"
+
+NET_SH="${REPO_ROOT}/net/net.sh"
+
+set -x
+
+: "${UPGRADE_INITIAL_DELAY:=0}" # Time to wait before starting rolling upgrade
+: "${UPGRADE_INTERVALIDATOR_DELAY:?}" # Time to wait between validators during upgrade
+: "${UPGRADE_POST_TEST_DELAY:=0}" #Time to wait after upgrade
+
+sleep_if_positive() {
+  declare delay=$1
+  if [[ "$delay" -gt 0 ]]; then
+    sleep "$delay"
+  fi
+}
+
+# Fetch new software and upload it to the bootstrap validator
+declare -g sw_version_args
+get_net_launch_software_version_launch_args "$UPGRADE_CHANNEL" "upgrade-release" sw_version_args
+# shellcheck disable=2086 # $sw_version_args holds two args. Don't quote!
+"$NET_SH" upgrade $sw_version_args
+
+# Wait initial delay, if any
+sleep_if_positive "$UPGRADE_INITIAL_DELAY"
+
+if [[ "$UPGRADE_INITIAL_DELAY" -gt 0 ]]; then
+  "$NET_SH" sanity
+fi
+
+# Restart validators one by one
+# shellcheck disable=SC2154 # sourced from config above
+for i in "${!validatorIpList[@]}"; do
+  if [[ "$i" -eq 0 ]]; then
+    # net.sh doesn't support restarting the bootstrap validator yet
+    continue
+  fi
+
+  declare ipAddress="${validatorIpList[$i]}"
+
+  "$NET_SH" stopnode -i "$ipAddress"
+  "$NET_SH" startnode -r -i "$ipAddress"
+
+  # This could be replaced with something based on `solana catchup`
+  sleep_if_positive "$UPGRADE_INTERVALIDATOR_DELAY"
+
+  "$NET_SH" sanity
+done
+
+sleep_if_positive "$UPGRADE_POST_TEST_DELAY"
+
+if [[ "$UPGRADE_POST_TEST_DELAY" -gt 0 ]]; then
+  "$NET_SH" sanity
+fi