1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/usr/bin/env bash
- # Copyright 2018 The Kubernetes Authors.
- #
- # 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
- TEST_ARGS=""
- RUN_PATTERN=".*"
- PROFILE_OPTS=""
- function usage() {
- echo "usage: $0 <options>"
- echo " -h display this help message"
- echo " -d enable debug logs in tests"
- echo " -r <pattern> regex pattern to match for tests"
- echo " -o <filename> file to write JSON formatted results to"
- echo " -p <id> enable cpu and memory profiles, output written to mem-<id>.out and cpu-<id>.out"
- echo " -c enable custom test configuration"
- echo " -a <name> allocator name, one of RangeAllocator, CloudAllocator, IPAMFromCluster, IPAMFromCloud"
- echo " -k <num> api server qps for allocator"
- echo " -n <num> number of nodes to simulate"
- echo " -m <num> api server qps for node creation"
- echo " -l <num> gce cloud endpoint qps"
- exit 1
- }
- while getopts ":hdr:o:p:ca:k:n:m:l:" opt; do
- case ${opt} in
- d) TEST_ARGS="${TEST_ARGS} -v=6"
- ;;
- r) RUN_PATTERN="${OPTARG}"
- ;;
- o) TEST_ARGS="${TEST_ARGS} -log ${OPTARG}"
- ;;
- p) PROFILE_OPTS="-memprofile mem-${OPTARG}.out -cpuprofile cpu-${OPTARG}.out"
- ;;
- c) TEST_ARGS="${TEST_ARGS} -custom"
- ;;
- a) TEST_ARGS="${TEST_ARGS} -allocator ${OPTARG}"
- ;;
- k) TEST_ARGS="${TEST_ARGS} -kube-qps ${OPTARG}"
- ;;
- n) TEST_ARGS="${TEST_ARGS} -num-nodes ${OPTARG}"
- ;;
- m) TEST_ARGS="${TEST_ARGS} -create-qps ${OPTARG}"
- ;;
- l) TEST_ARGS="${TEST_ARGS} -cloud-qps ${OPTARG}"
- ;;
- h) usage
- ;;
- \?) usage
- ;;
- esac
- done
- KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/../../../
- source "${KUBE_ROOT}/hack/lib/init.sh"
- kube::golang::setup_env
- DIR_BASENAME=$(dirname "${BASH_SOURCE[0]}")
- pushd "${DIR_BASENAME}"
- cleanup() {
- popd 2> /dev/null
- kube::etcd::cleanup
- kube::log::status "performance test cleanup complete"
- }
- trap cleanup EXIT
- kube::etcd::start
- # Running IPAM tests. It might take a long time.
- kube::log::status "performance test (IPAM) start"
- go test "${PROFILE_OPTS}" -test.run="${RUN_PATTERN}" -test.timeout=60m -test.short=false -v -args "${TEST_ARGS}"
- kube::log::status "... IPAM tests finished."
|