diff --git a/e2e/upgrades/run_cluster.sh b/e2e/upgrades/run_cluster.sh index 11704a6be..78cfe39f5 100755 --- a/e2e/upgrades/run_cluster.sh +++ b/e2e/upgrades/run_cluster.sh @@ -5,6 +5,10 @@ if [ "$#" -ne 1 ]; then exit 255 fi NOMAD_BINARY=$1 + +# make sure the directories exist so tee can create logs in them +mkdir -p /tmp/server{1,2,3} /tmp/client{1,2} + # launch server ( ${NOMAD_BINARY} agent -config=server1.hcl 2>&1 | tee "/tmp/server1/log" ; echo "Exit code: $?" >> "/tmp/server1/log" ) & diff --git a/e2e/upgrades/run_node.sh b/e2e/upgrades/run_node.sh index 7d6d7f012..9a68cf857 100755 --- a/e2e/upgrades/run_node.sh +++ b/e2e/upgrades/run_node.sh @@ -9,4 +9,4 @@ if [ "$#" -ne 2 ]; then fi NOMAD_BINARY=$1 NODE=$2 -( $NOMAD_BINARY agent -config=${NODE}.hcl 2>&1 | tee "/tmp/$NODE/log" ; echo "Exit code: $?" >> "/tmp/$NODE/log" ) & +( $NOMAD_BINARY agent -config=${NODE}.hcl 2>&1 | tee -a "/tmp/$NODE/log" ; echo "Exit code: $?" >> "/tmp/$NODE/log" ) & diff --git a/e2e/upgrades/run_upgrade_safe.sh b/e2e/upgrades/run_upgrade_safe.sh new file mode 100644 index 000000000..69fc98088 --- /dev/null +++ b/e2e/upgrades/run_upgrade_safe.sh @@ -0,0 +1,36 @@ +#!/bin/sh +if [ $# -lt 2 ]; then + echo "usage: $0 path-nomad-v1 path-nomad-v2" 1>&2 + exit 1 +fi + +v1="$1"; shift +v2="$1"; shift + +sh run_cluster.sh "$v1" & + +function peers () { + $v1 operator raft list-peers | tail -n+2 | awk '{print $1 " " $2}' +} + +while true; do + n=`peers | grep -c '\bserver[1-3]\b'` + [ "$n" = 3 ] && break +done + +function wait_serf () { + echo "wait $1 \c"; date + while true; do + peers \ + | egrep "$1.global [0-9a-f-][0-9a-f-]{35}$" \ + && break + sleep 1 + done + echo "done $1 \c"; date +} + +for i in {3,2,1}; do + sh kill_node.sh server$i + sh run_node.sh "$v2" server$i & + wait_serf server$i +done diff --git a/e2e/upgrades/run_upgrade_unsafe.sh b/e2e/upgrades/run_upgrade_unsafe.sh new file mode 100644 index 000000000..50b6c985c --- /dev/null +++ b/e2e/upgrades/run_upgrade_unsafe.sh @@ -0,0 +1,21 @@ +#!/bin/sh +if [ $# -lt 2 ]; then + echo "usage: $0 path-nomad-v1 path-nomad-v2" 1>&2 + exit 1 +fi + +v1="$1"; shift +v2="$1"; shift + +# sh run_cluster.sh "$v1" >/dev/null & +sh run_cluster.sh "$v1" & + +while true; do + n=`"$v1" operator raft list-peers | grep -c '\bserver[1-3]\b'` + [ "$n" = 3 ] && break +done + +for i in {1,2,3}; do + sh kill_node.sh server$i + sh run_node.sh "$v2" server$i & +done