Files
Antti Kervinen 6213a499c1 metrics: scaling: add pod response latency test
- Send n requests for each of the running pods.
- Measure response time to response.
- Report response time percentiles: 5-25-50-75-95 %.
- Refactor scaling/*.sh variables to scaling/common.bash.

Signed-off-by: Antti Kervinen <antti.kervinen@intel.com>
2019-10-01 14:30:33 -06:00

89 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
#
# Copyright (c) 2017,2018,2019 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
THIS_FILE=$(readlink -f ${BASH_SOURCE[0]})
LIB_DIR=${THIS_FILE%/*}
RESULT_DIR="${LIB_DIR}/../results"
source ${LIB_DIR}/json.bash
source ${LIB_DIR}/k8s-api.bash
source /etc/os-release || source /usr/lib/os-release
die() {
local msg="$*"
echo "ERROR: $msg" >&2
exit 1
}
warn() {
local msg="$*"
echo "WARNING: $msg"
}
info() {
local msg="$*"
echo "INFO: $msg"
}
# This function checks existence of commands.
# They can be received standalone or as an array, e.g.
#
# cmds=(“cmd1” “cmd2”)
# check_cmds "${cmds[@]}"
check_cmds()
{
local cmd req_cmds=( "$@" )
for cmd in "${req_cmds[@]}"; do
if ! command -v "$cmd" > /dev/null 2>&1; then
die "command $cmd not available"
fi
echo "command: $cmd: yes"
done
}
# Print a banner to the logs noting clearly which test
# we are about to run
test_banner()
{
echo -e "\n===== starting test [$1] ====="
}
# Initialization/verification environment. This function makes
# minimal steps for metrics/tests execution.
init_env()
{
test_banner "${TEST_NAME}"
cmd=("kubectl")
# check dependencies
check_cmds "${cmd[@]}"
# We could try to clean the k8s cluster here... but that
# might remove some pre-installed soak tests etc. that have
# been deliberately injected into the cluster under test.
}
# finds elements in $1 that are not in $2
find_unique_pods() {
local list_a=$1
local list_b=$2
new_pods=()
for a in $list_a; do
local in_b=false
for b in $list_b; do
if [[ $a == $b ]]; then
in_b=true
break
fi
done
if [[ $in_b == false ]]; then
new_pods[${#new_pods[@]}]=$a
fi
done
}