From 5b94081b13500d69e92204cfb5cd5806cfab3e97 Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Mon, 3 Apr 2017 06:00:35 -0400 Subject: [PATCH] Run some e2e tests against the kubernetes instance Change-Id: I6fdf5ce4fbf0e2c9073e162d862de5c350b949a2 --- contrib/gate_hook.sh | 1 + contrib/post_test_hook.sh | 74 +++++++++++++++++++++++++++++++++++++++ contrib/pre_test_hook.sh | 2 ++ devstack/plugin.sh | 14 +++++++- 4 files changed, 90 insertions(+), 1 deletion(-) diff --git a/contrib/gate_hook.sh b/contrib/gate_hook.sh index 804f8b1..37d1d7d 100755 --- a/contrib/gate_hook.sh +++ b/contrib/gate_hook.sh @@ -14,4 +14,5 @@ set -ex +echo "In gate_test_hook" $BASE/new/devstack-gate/devstack-vm-gate.sh diff --git a/contrib/post_test_hook.sh b/contrib/post_test_hook.sh index 28b946e..beed3ca 100755 --- a/contrib/post_test_hook.sh +++ b/contrib/post_test_hook.sh @@ -14,5 +14,79 @@ # This script is executed inside post_test_hook function in devstack gate. +BASE_DIR=$(cd $(dirname $BASH_SOURCE)/.. && pwd) + cd $BASE/new/devstack source openrc admin admin + +echo "In post_test_hook" + +# Get the latest stable version of kubernetes +export K8S_VERSION=$(curl -sS https://storage.googleapis.com/kubernetes-release/release/stable.txt) +echo "K8S_VERSION : ${K8S_VERSION}" + +echo "Download Kubernetes CLI" +sudo wget -O kubectl "http://storage.googleapis.com/kubernetes-release/release/${K8S_VERSION}/bin/linux/amd64/kubectl" +sudo chmod 755 kubectl +./kubectl get nodes + +echo "Waiting for kubernetes service to start..." +for i in {1..600} +do + running_count=$(./kubectl -s=http://127.0.0.1:8080 get svc --no-headers 2>/dev/null | grep "443" | wc -l) + if [ "$running_count" -ge 1 ]; then + break + fi + echo -n "." + sleep 1 +done + +echo "Cluster created!" +echo "" + +echo "Dump Kubernetes Objects..." +./kubectl -s=http://127.0.0.1:8080 get componentstatuses +./kubectl -s=http://127.0.0.1:8080 get configmaps +./kubectl -s=http://127.0.0.1:8080 get daemonsets +./kubectl -s=http://127.0.0.1:8080 get deployments +./kubectl -s=http://127.0.0.1:8080 get events +./kubectl -s=http://127.0.0.1:8080 get endpoints +./kubectl -s=http://127.0.0.1:8080 get horizontalpodautoscalers +./kubectl -s=http://127.0.0.1:8080 get ingress +./kubectl -s=http://127.0.0.1:8080 get jobs +./kubectl -s=http://127.0.0.1:8080 get limitranges +./kubectl -s=http://127.0.0.1:8080 get nodes +./kubectl -s=http://127.0.0.1:8080 get namespaces +./kubectl -s=http://127.0.0.1:8080 get pods +./kubectl -s=http://127.0.0.1:8080 get persistentvolumes +./kubectl -s=http://127.0.0.1:8080 get persistentvolumeclaims +./kubectl -s=http://127.0.0.1:8080 get quota +./kubectl -s=http://127.0.0.1:8080 get resourcequotas +./kubectl -s=http://127.0.0.1:8080 get replicasets +./kubectl -s=http://127.0.0.1:8080 get replicationcontrollers +./kubectl -s=http://127.0.0.1:8080 get secrets +./kubectl -s=http://127.0.0.1:8080 get serviceaccounts +./kubectl -s=http://127.0.0.1:8080 get services + + +echo "Running tests..." +export GOPATH=${BASE_DIR}/go +export KUBE_MASTER=local +export KUBECONFIG=/var/run/kubernetes/admin.kubeconfig +export KUBERNETES_PROVIDER=local +export KUBE_MASTER_IP=https://127.0.0.1:6443/ + +pushd $GOPATH/src/k8s.io/kubernetes >/dev/null +sudo -E PATH=$GOPATH/bin:$PATH make all WHAT=cmd/kubectl +sudo -E PATH=$GOPATH/bin:$PATH make all WHAT=vendor/github.com/onsi/ginkgo/ginkgo + +# e2e test does not work with 1.8, so fall back to 1.7 +sudo curl -sL -o ./gimme https://raw.githubusercontent.com/travis-ci/gimme/master/gimme +sudo chmod +x ./gimme +sudo ./gimme 1.7 +env | grep HOME +source $HOME/.gimme/envs/go1.7.env + +sudo -E PATH=$GOPATH/bin:$PATH make all WHAT=test/e2e/e2e.test +sudo -E PATH=$GOPATH/bin:$PATH go run hack/e2e.go -- -v --test --test_args="--ginkgo.trace=true --ginkgo.failFast=true --ginkgo.skip=\[Slow\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:.+\]|\[HPA\]|Dashboard|Services.*functioning.*NodePort" +popd >/dev/null \ No newline at end of file diff --git a/contrib/pre_test_hook.sh b/contrib/pre_test_hook.sh index 7be21e8..ce572a9 100755 --- a/contrib/pre_test_hook.sh +++ b/contrib/pre_test_hook.sh @@ -15,3 +15,5 @@ # This script is executed inside pre_test_hook function in devstack gate. export localconf=$BASE/new/devstack/local.conf + +echo "In pre_test_hook" diff --git a/devstack/plugin.sh b/devstack/plugin.sh index 279a6de..c65a943 100755 --- a/devstack/plugin.sh +++ b/devstack/plugin.sh @@ -69,11 +69,23 @@ function install_k8s_cloud_provider { git clone https://${CONFORMANCE_REPO} ${K8S_SRC} fi go get -u github.com/jteeuwen/go-bindata/go-bindata || true + go get -u github.com/cloudflare/cfssl/cmd/... || true # Run the script that builds kubernetes from source and starts the processes pushd ${K8S_SRC} >/dev/null hack/install-etcd.sh - run_process kubernetes "sudo -E hack/local-up-cluster.sh" + export PATH=${K8S_SRC}/third_party/etcd:$GOPATH/bin:${PATH} + + # Seed the log files so devstack-gate can capture the logs + export LOG_DIR=${SCREEN_LOGDIR:-/opt/stack/logs} + sudo mkdir -p $LOG_DIR + sudo touch $LOG_DIR/kube-apiserver.log;sudo ln -s $LOG_DIR/kube-apiserver.log $LOG_DIR/screen-kube-apiserver.log + sudo touch $LOG_DIR/kube-controller-manager.log;sudo ln -s $LOG_DIR/kube-controller-manager.log $LOG_DIR/screen-kube-controller-manager.log + sudo touch $LOG_DIR/kube-proxy.log;sudo ln -s $LOG_DIR/kube-proxy.log $LOG_DIR/screen-kube-proxy.log + sudo touch $LOG_DIR/kube-scheduler.log;sudo ln -s $LOG_DIR/kube-scheduler.log $LOG_DIR/screen-kube-scheduler.log + sudo touch $LOG_DIR/kubelet.log;sudo ln -s $LOG_DIR/kubelet.log $LOG_DIR/screen-kubelet.log + + run_process kubernetes "sudo -E PATH=$PATH hack/local-up-cluster.sh" popd >/dev/null }