From 0adde96bba2502a365da40d851e9048a4f3123f8 Mon Sep 17 00:00:00 2001 From: Brendan Burns Date: Tue, 19 Aug 2014 16:43:59 -0700 Subject: [PATCH] Update e2e scripts to use the -template parameter. Add a script for the update demo. --- hack/e2e-suite/basic.sh | 4 +- hack/e2e-suite/guestbook.sh | 4 +- hack/e2e-suite/update.sh | 80 +++++++++++++++++++++++++++++++++++++ hack/e2e-test.sh | 8 ---- 4 files changed, 84 insertions(+), 12 deletions(-) create mode 100755 hack/e2e-suite/update.sh diff --git a/hack/e2e-suite/basic.sh b/hack/e2e-suite/basic.sh index f4d20da136..7f0aec70b3 100755 --- a/hack/e2e-suite/basic.sh +++ b/hack/e2e-suite/basic.sh @@ -41,7 +41,7 @@ function teardown() { trap "teardown" EXIT -POD_ID_LIST=$($CLOUDCFG -json -l name=myNginx list pods | jq ".items[].id") +POD_ID_LIST=$($CLOUDCFG '-template={{range.Items}}{{.ID}} {{end}}' -l name=myNginx list pods) # Container turn up on a clean cluster can take a while for the docker image pull. ALL_RUNNING=0 while [ $ALL_RUNNING -ne 1 ]; do @@ -49,7 +49,7 @@ while [ $ALL_RUNNING -ne 1 ]; do sleep 5 ALL_RUNNING=1 for id in $POD_ID_LIST; do - CURRENT_STATUS=$(remove-quotes $($CLOUDCFG -json get "pods/$(remove-quotes ${id})" | jq '.currentState.info["mynginx"].State.Running and .currentState.info["net"].State.Running')) + CURRENT_STATUS=$($CLOUDCFG -template '{{and .CurrentState.Info.mynginx.State.Running .CurrentState.Info.net.State.Running}}' get pods/$id) if [ "$CURRENT_STATUS" != "true" ]; then ALL_RUNNING=0 fi diff --git a/hack/e2e-suite/guestbook.sh b/hack/e2e-suite/guestbook.sh index 59bfcde6a8..e1586b080e 100755 --- a/hack/e2e-suite/guestbook.sh +++ b/hack/e2e-suite/guestbook.sh @@ -32,7 +32,7 @@ $CLOUDCFG -c "${GUESTBOOK}/redis-slave-controller.json" create /replicationContr sleep 5 -POD_LIST_1=$($CLOUDCFG -json list pods | jq ".items[].id") +POD_LIST_1=$($CLOUDCFG '-template={{range.Items}}{{.ID}} {{end}}' list pods) echo "Pods running: ${POD_LIST_1}" $CLOUDCFG stop redisSlaveController @@ -42,7 +42,7 @@ $CLOUDCFG rm redisSlaveController $CLOUDCFG delete services/redismaster $CLOUDCFG delete pods/redis-master-2 -POD_LIST_2=$($CLOUDCFG -json list pods | jq ".items[].id") +POD_LIST_2=$($CLOUDCFG '-template={{range.Items}}{{.ID}} {{end}}' list pods) echo "Pods running after shutdown: ${POD_LIST_2}" exit 0 diff --git a/hack/e2e-suite/update.sh b/hack/e2e-suite/update.sh new file mode 100755 index 0000000000..a51146fdb3 --- /dev/null +++ b/hack/e2e-suite/update.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +# Copyright 2014 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Launches an nginx container and verifies it can be reached. Assumes that +# we're being called by hack/e2e-test.sh (we use some env vars it sets up). + +# Exit on error +set -e + +source "${KUBE_REPO_ROOT}/cluster/kube-env.sh" +source "${KUBE_REPO_ROOT}/cluster/$KUBERNETES_PROVIDER/util.sh" + +function validate() { + POD_ID_LIST=$($CLOUDCFG '-template={{range.Items}}{{.ID}} {{end}}' -l name=$controller list pods) + # Container turn up on a clean cluster can take a while for the docker image pull. + ALL_RUNNING=0 + while [ $ALL_RUNNING -ne 1 ]; do + echo "Waiting for all containers in pod to come up." + sleep 5 + ALL_RUNNING=1 + for id in $POD_ID_LIST; do + CURRENT_STATUS=$($CLOUDCFG -template '{{and .CurrentState.Info.datacontroller.State.Running .CurrentState.Info.net.State.Running}}' get pods/$id) + if [ "$CURRENT_STATUS" != "true" ]; then + ALL_RUNNING=0 + fi + done + done + + ids=($POD_ID_LIST) + if [ ${#ids[@]} -ne $1 ]; then + echo "Unexpected number of pods: ${#ids[@]}" + exit 1 + fi +} + +controller=dataController + +# Launch a container +$CLOUDCFG -p 8080:80 run brendanburns/data 2 $controller + +function teardown() { + echo "Cleaning up test artifacts" + $CLOUDCFG stop $controller + $CLOUDCFG rm $controller +} + +trap "teardown" EXIT + +validate 2 + +$CLOUDCFG resize $controller 1 + +validate 1 + +$CLOUDCFG resize $controller 2 + +validate 2 + +# TODO: test rolling update here, but to do so, we need to make the update blocking +# $CLOUDCFG -u=20s rollingupdate $controller +# +# Wait for the replica controller to recreate +# sleep 10 +# +# validate 2 + +exit 0 diff --git a/hack/e2e-test.sh b/hack/e2e-test.sh index c85d5627c3..5bea06a953 100755 --- a/hack/e2e-test.sh +++ b/hack/e2e-test.sh @@ -26,14 +26,6 @@ ALREADY_UP=${1:-0} LEAVE_UP=${2:-0} TEAR_DOWN=${3:-0} -HAVE_JQ=$(which jq) -if [[ -z ${HAVE_JQ} ]]; then - echo "Please install jq, e.g.: 'sudo apt-get install jq' or, " - echo "'sudo yum install jq' or, " - echo "if you're on a mac with homebrew, 'brew install jq'." - exit 1 -fi - # Exit on error set -e