minikube/test/stress/stress.sh

91 lines
3.0 KiB
Bash
Raw Normal View History

2020-07-24 03:34:06 +00:00
#!/bin/bash
2020-07-23 21:45:29 +00:00
#
# Stress test for start, restart, upgrade.
#
# Usage:
#
# ./test/stress/stress.sh "<optional start flags>" <optional version to upgrade from> <optional count>
#
# Example:
#
# ./test/stress/stress.sh "--driver=docker --base-image gcr.io/k8s-minikube/kic:ubuntu-upgrade"
#
readonly START_FLAGS=${1:-""}
readonly UPGRADE_FROM=${2:-"v1.11.0"}
readonly TOTAL=${3:-20}
readonly OLD_PATH="/tmp/minikube-${UPGRADE_FROM}"
readonly NEW_PATH="./out/minikube"
readonly LOG_PATH="$(mktemp)"
2020-07-23 22:00:25 +00:00
readonly PROFILE="stress$(echo -n $START_FLAGS | openssl md5 | cut -c1-5)"
if [[ ! -x "${NEW_PATH}" ]]; then
echo "${NEW_PATH} is missing, please run 'make'"
exit 4
fi
2020-07-24 03:34:06 +00:00
fail() {
local msg=$1
lecho "** FAILED with ${START_FLAGS}: ${msg} -- docker logs follow: **"
docker logs "${PROFILE}" | tee -a $LOG_PATH
lecho "** FULL FAILURE LOGS are available in ${LOG_PATH}"
}
lecho() {
local msg=$1
echo "$msg" | tee -a "${LOG_PATH}"
}
lecho "Downloading minikube ${UPGRADE_FROM} for upgrade test ..."
2020-07-23 21:45:29 +00:00
curl -L -C - -o "${OLD_PATH}" https://storage.googleapis.com/minikube/releases/${UPGRADE_FROM}/minikube-darwin-amd64
chmod 755 "${OLD_PATH}"
2020-07-24 03:34:06 +00:00
2020-07-23 22:00:25 +00:00
for i in $(seq 1 ${TOTAL}); do
2020-07-24 03:34:06 +00:00
lecho ""
lecho "*** LOOP ${i} of ${TOTAL}: ${UPGRADE_FROM} to HEAD, logging to ${LOG_PATH}"
lecho "*** start flags: -p ${PROFILE} ${START_FLAGS}"
lecho ""
2020-07-23 22:00:25 +00:00
"${NEW_PATH}" delete -p ${PROFILE}
2020-07-23 21:45:29 +00:00
2020-07-24 03:34:06 +00:00
lecho ""
lecho "Upgrade ${UPGRADE_FROM} to HEAD hot test: loop ${i}"
time ${OLD_PATH} start -p ${PROFILE} ${START_FLAGS} --alsologtostderr 2>>${LOG_PATH} || { lecho "${OLD_PATH} failed, which is OK"; }
lecho "Starting cluster built-by ${UPGRADE_FROM} with ${NEW_PATH}"
time ${NEW_PATH} start -p ${PROFILE} ${START_FLAGS} --alsologtostderr 2>>${LOG_PATH} || { fail "hot upgrade (loop $i)"; exit 1; }
lecho "Deleting ${UPGRADE_FROM} built-cluster"
2020-07-23 22:00:25 +00:00
${NEW_PATH} delete -p ${PROFILE}
2020-07-23 21:45:29 +00:00
2020-07-24 03:34:06 +00:00
lecho ""
lecho "Upgrade ${UPGRADE_FROM} to HEAD cold test: loop ${i}"
time ${OLD_PATH} start -p ${PROFILE} ${START_FLAGS} --alsologtostderr 2>>${LOG_PATH} || { lecho "${OLD_PATH} failed, which is OK"; }
2020-07-23 22:00:25 +00:00
2020-07-24 03:34:06 +00:00
lecho "Stopping ${UPGRADE_FROM}} built-cluster"
${OLD_PATH} stop -p ${PROFILE} 2>>${LOG_PATH}
2020-07-23 22:00:25 +00:00
2020-07-24 03:34:06 +00:00
lecho "Starting cluster built-by ${UPGRADE_FROM} with ${NEW_PATH}"
time ${NEW_PATH} start -p ${PROFILE} ${START_FLAGS} --alsologtostderr 2>>${LOG_PATH} || { fail "hot upgrade (loop $i)"; exit 1; }
2020-07-23 21:45:29 +00:00
2020-07-24 03:34:06 +00:00
lecho ""
lecho "Restart HEAD hot test: loop ${i}"
time ${NEW_PATH} start -p ${PROFILE} ${START_FLAGS} --alsologtostderr 2>>${LOG_PATH} || { fail "hot HEAD restart (loop $i)"; exit 3; }
2020-07-23 21:45:29 +00:00
2020-07-24 03:34:06 +00:00
lecho ""
lecho "Restart HEAD cold test: loop ${i}"
${NEW_PATH} stop -p ${PROFILE}
2020-07-23 22:00:25 +00:00
2020-07-24 03:34:06 +00:00
time ${NEW_PATH} start -p ${PROFILE} ${START_FLAGS} --alsologtostderr 2>>${LOG_PATH} || { fail "cold HEAD restart (loop $i)"; exit 4; }
2020-07-23 22:00:25 +00:00
${NEW_PATH} delete -p ${PROFILE}
2020-07-23 21:45:29 +00:00
2020-07-24 03:34:06 +00:00
lecho ""
lecho "****************************************************"
lecho "Congratulations - ${PROFILE} survived loop ${i} of ${TOTAL}"
lecho "****************************************************"
lecho ""
2020-07-23 21:45:29 +00:00
done