#!/usr/bin/env bash
set -e
_docker_prefix="quay.io/kubevirt/"
_perfscale_workload="tools/perfscale-load-generator/examples/workload/kubevirt-density/kubevirt-burst-100.yaml"
_perfscale_workload_warmup="tools/perfscale-load-generator/examples/workload/kubevirt-density/kubevirt-primer.yaml"
export DOCKER_PREFIX=${DOCKER_PREFIX:-${_docker_prefix}}
export DOCKER_TAG=${DOCKER_TAG:-"latest"}
export PROMETHEUS_PORT=${PROMETHEUS_PORT:-30007}
export PROMETHEUS_URL=${PROMETHEUS_URL:-http://127.0.0.1}
export PERFSCALE_WORKLOAD=${PERFSCALE_WORKLOAD:-${_perfscale_workload}}
echo 'Preparing directory for artifacts'
export AUDIT_CONFIG=${ARTIFACTS}/perfscale-audit-cfg.json
export AUDIT_RESULTS=${ARTIFACTS}/perfscale-audit-results.json
mkdir -p $ARTIFACTS
function get_timestamp() {
curr_timestamp=$(curl -fs --data-urlencode 'query=container_cpu_usage_seconds_total{pod!="",container="prometheus"}' http://localhost:9090/api/v1/query | jq -r '.data.result[0] | .value[0]')
date -u +%Y-%m-%dT%TZ -d @$curr_timestamp
}
function perftest() {
_out/cmd/perfscale-load-generator/perfscale-load-generator \
-verbose 6 \
-delete \
-workload ${PERFSCALE_WORKLOAD}
}
function perfaudit() {
start_timestamp=$1
stop_timestamp=$2
cat <<EOF >${ARTIFACTS}/perfscale-audit-cfg.json
{
"prometheusURL": "${PROMETHEUS_URL}:${PROMETHEUS_PORT}",
"startTime": "$start_timestamp",
"endTime": "$stop_timestamp"
}
EOF
_out/cmd/perfscale-audit/perfscale-audit \
--config-file=${AUDIT_CONFIG} \
--results-file=${AUDIT_RESULTS}
}
if [[ ${PERFAUDIT} == "true" || ${PERFAUDIT} == "True" ]]; then
_perfscale_workload_tmp=${PERFSCALE_WORKLOAD}
export PERFSCALE_WORKLOAD=$_perfscale_workload_warmup
perftest ${additional_test_args} ${FUNC_TEST_ARGS}
export PERFSCALE_WORKLOAD=$_perfscale_workload_tmp
fi
start_timestamp=$(get_timestamp)
echo "Sleeping 30 to let prometheus scrape all metrics"
sleep 30
time perftest ${additional_test_args} ${FUNC_TEST_ARGS}
stop_timestamp=$(get_timestamp)
if [[ ${PERFAUDIT} == "true" || ${PERFAUDIT} == "True" ]]; then
echo "Sleeping 30s to let prometheus scrape all metrics"
sleep 30s
stop_timestamp=$(get_timestamp)
perfaudit $start_timestamp $stop_timestamp
fi
echo "start_timestamp= $start_timestamp"
echo "stop_timestamp= $stop_timestamp"