mirror of https://github.com/k3s-io/k3s
116 lines
3.1 KiB
Bash
Executable File
116 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright 2015 The Kubernetes Authors 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.
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
|
|
|
function down-clusters {
|
|
for count in $(seq 1 ${clusters}); do
|
|
export KUBE_GCE_INSTANCE_PREFIX=e2e-test-${USER}-${count}
|
|
local cluster_dir=${KUBE_ROOT}/_output/e2e/${KUBE_GCE_INSTANCE_PREFIX}
|
|
export KUBECONFIG=${cluster_dir}/.kubeconfig
|
|
go run ${KUBE_ROOT}/hack/e2e.go -down -v &
|
|
done
|
|
|
|
wait
|
|
}
|
|
|
|
function up-clusters {
|
|
for count in $(seq 1 ${clusters}); do
|
|
export KUBE_GCE_INSTANCE_PREFIX=e2e-test-${USER}-${count}
|
|
export CLUSTER_IP_RANGE="10.$((${count}*2-1)).0.0/16"
|
|
export MASTER_IP_RANGE="10.$((${count}*2)).0.0/24"
|
|
|
|
local cluster_dir=${KUBE_ROOT}/_output/e2e/${KUBE_GCE_INSTANCE_PREFIX}
|
|
mkdir -p ${cluster_dir}
|
|
export KUBECONFIG=${cluster_dir}/.kubeconfig
|
|
go run hack/e2e.go -up -v 2>&1 | tee ${cluster_dir}/up.log &
|
|
done
|
|
|
|
fail=0
|
|
for job in $(jobs -p); do
|
|
wait "${job}" || fail=$((fail + 1))
|
|
done
|
|
|
|
if (( fail != 0 )); then
|
|
echo "${fail} cluster creation failures. Not continuing with tests."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function run-tests {
|
|
for count in $(seq 1 ${clusters}); do
|
|
export KUBE_GCE_INSTANCE_PREFIX=e2e-test-${USER}-${count}
|
|
|
|
local cluster_dir=${KUBE_ROOT}/_output/e2e/${KUBE_GCE_INSTANCE_PREFIX}
|
|
export KUBECONFIG=${cluster_dir}/.kubeconfig
|
|
export E2E_REPORT_DIR=${cluster_dir}
|
|
go run hack/e2e.go -test --test_args="--ginkgo.noColor" "${@:-}" -down 2>&1 | tee ${cluster_dir}/e2e.log &
|
|
done
|
|
|
|
wait
|
|
}
|
|
|
|
# Outputs something like:
|
|
# _output/e2e/e2e-test-zml-5/junit.xml
|
|
# FAIL: Shell tests that services.sh passes
|
|
function post-process {
|
|
echo $1
|
|
cat $1 | python -c '
|
|
import sys
|
|
from xml.dom.minidom import parse
|
|
|
|
failed = False
|
|
for testcase in parse(sys.stdin).getElementsByTagName("testcase"):
|
|
if len(testcase.getElementsByTagName("failure")) != 0:
|
|
failed = True
|
|
print " FAIL: {test}".format(test = testcase.getAttribute("name"))
|
|
if not failed:
|
|
print " SUCCESS!"
|
|
'
|
|
}
|
|
|
|
function print-results {
|
|
for count in $(seq 1 ${clusters}); do
|
|
for junit in ${KUBE_ROOT}/_output/e2e/e2e-test-${USER}-${count}/junit*.xml; do
|
|
post-process ${junit}
|
|
done
|
|
done
|
|
}
|
|
|
|
if [[ ${KUBERNETES_PROVIDER:-gce} != "gce" ]]; then
|
|
echo "$0 not supported on ${KUBERNETES_PROVIDER} yet" >&2
|
|
exit 1
|
|
fi
|
|
|
|
readonly clusters=${1:-}
|
|
|
|
if ! [[ "${clusters}" =~ ^[0-9]+$ ]]; then
|
|
echo "Usage: ${0} <number of clusters> [options to hack/e2e.go]" >&2
|
|
exit 1
|
|
fi
|
|
|
|
shift 1
|
|
|
|
rm -rf _output/e2e
|
|
down-clusters
|
|
up-clusters
|
|
run-tests "${@:-}"
|
|
print-results
|