diff --git a/cluster/config-test.sh b/cluster/config-test.sh index aceef0482fd..aa0df6e22d7 100755 --- a/cluster/config-test.sh +++ b/cluster/config-test.sh @@ -16,7 +16,7 @@ ZONE=us-central1-b MASTER_SIZE=g1-small MINION_SIZE=g1-small -NUM_MINIONS=2 +NUM_MINIONS=3 # gcloud/gcutil will expand this to the latest supported image. IMAGE=backports-debian-7-wheezy NETWORK=default diff --git a/hack/e2e-suite/basic.sh b/hack/e2e-suite/basic.sh new file mode 100755 index 00000000000..bbfe8cef9bb --- /dev/null +++ b/hack/e2e-suite/basic.sh @@ -0,0 +1,47 @@ +#!/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/util.sh" +detect-project + +# Launch a container +$CLOUDCFG -p 8080:80 run dockerfile/nginx 2 myNginx + +# Container turn up on a clean cluster can take a while for the docker image pull. +# Sleep for 2 minutes just to be sure. +echo "Waiting for containers to come up." +sleep 120 + +# Get minion IP addresses +detect-minions + +# Verify that something is listening (nginx should give us a 404) +for (( i=0; i<${#KUBE_MINION_IP_ADDRESSES[@]}; i++)); do + IP_ADDRESS=${KUBE_MINION_IP_ADDRESSES[$i]} + echo "Trying to reach nginx instance that should be running at ${IP_ADDRESS}:8080..." + curl "http://${IP_ADDRESS}:8080" +done + +$CLOUDCFG stop myNginx +$CLOUDCFG rm myNginx + +exit 0 diff --git a/hack/e2e-test.sh b/hack/e2e-test.sh index 72051a609ec..a46a20a1567 100755 --- a/hack/e2e-test.sh +++ b/hack/e2e-test.sh @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Starts a Kubernetes cluster, verifies it can do basic things, and shuts it +# Starts a Kubernetes cluster, runs the e2e test suite, and shuts it # down. # Exit on error @@ -22,7 +22,10 @@ set -e # Use testing config export KUBE_CONFIG_FILE="config-test.sh" -source $(dirname $0)/../cluster/util.sh +export KUBE_REPO_ROOT="$(dirname $0)/.." +export CLOUDCFG="${KUBE_REPO_ROOT}/cluster/cloudcfg.sh" + +source "${KUBE_REPO_ROOT}/cluster/util.sh" # Build a release $(dirname $0)/../release/release.sh @@ -30,6 +33,21 @@ $(dirname $0)/../release/release.sh # Now bring a test cluster up with that release. $(dirname $0)/../cluster/kube-up.sh +# Detect the project into $PROJECT if it isn't set +detect-project + +set +e + +# Open up port 80 & 8080 so common containers on minions can be reached +gcutil addfirewall \ + --norespect_terminal_width \ + --project ${PROJECT} \ + --target_tags ${MINION_TAG} \ + --allowed tcp:80 \ + --allowed tcp:8080 \ + --network ${NETWORK} \ + ${MINION_TAG}-http-alt + # Auto shutdown cluster when we exit function shutdown-test-cluster () { echo "Shutting down test cluster in background." @@ -42,33 +60,15 @@ function shutdown-test-cluster () { } trap shutdown-test-cluster EXIT -# Detect the project into $PROJECT if it isn't set -detect-project - -# Open up port 8080 so nginx containers on minions can be reached -gcutil addfirewall \ - --norespect_terminal_width \ - --project ${PROJECT} \ - --target_tags ${MINION_TAG} \ - --allowed tcp:8080 \ - --network ${NETWORK} \ - ${MINION_TAG}-http-alt & - -# Launch a container -$(dirname $0)/../cluster/cloudcfg.sh -p 8080:80 run dockerfile/nginx 2 myNginx - -# Container turn up on a clean cluster can take a while for the docker image pull. -# Sleep for 2 minutes just to be sure. -echo "Waiting for containers to come up." -sleep 120 - -# Get minion IP addresses -detect-minions - -# Verify that something is listening (nginx should give us a 404) -for (( i=0; i<${#KUBE_MINION_IP_ADDRESSES[@]}; i++)); do - IP_ADDRESS=${KUBE_MINION_IP_ADDRESSES[$i]} - echo "Trying to reach nginx instance that should be running at ${IP_ADDRESS}:8080..." - curl "http://${IP_ADDRESS}:8080" +any_failed=0 +for test_file in "$(dirname $0)/e2e-suite/*.sh"; do + $test_file + if [[ -z $? ]]; then + echo "${test_file}: passed!" + else + echo "${test_file}: FAILED!" + any_failed=1 + fi done +exit ${any_failed}