Files
hyperswitch/loadtest/loadtest.sh
Sampras Lopes 430dcd1967 initial commit
2022-11-16 20:37:50 +05:30

86 lines
1.7 KiB
Bash

#!/bin/bash
run_loadtest() {
docker compose down
docker compose up k6
}
print_details() {
echo "-----------------------------------"
echo "RUN NAME: $1"
echo " SCRIPT: $2"
echo "-----------------------------------"
}
exit_if_baseline_file_not_exist() {
if ! [ -e "./k6/benchmark/baseline_$1.json" ]
then
echo "baseline_$1.json file not exist to compare."
exit 1
fi
}
while getopts r:s:ca flag
do
case "${flag}" in
r) run_name=${OPTARG};;
s) script=${OPTARG};;
c) compare=true;;
a) all_script=true;;
*) echo "usage: $0 [-r] [-c] [-s]" >&2
exit 1;;
esac
done
# if script is empty, `-s` not specified, use "health"
if [ -z "$script" ]
then
script=health
fi
if ! [ -e "./k6/$script.js" ] && [ -z "$all_script" ]
then
echo "$script.js not exist."
exit 1
fi
# if compare is specified using `-c` flag, create run name using commit number
if [ "$compare" = true ]
then
run_name=$(git show -s --format=%h)
# make sure baseline file exist for specified parameter before starting the loadtest
if [ "$all_script" = true ]
then
for scriptname in ./k6/*.js
do
filename=$(basename "$scriptname" | cut -f 1 -d '.')
exit_if_baseline_file_not_exist "$filename"
done
else
exit_if_baseline_file_not_exist "$script"
fi
else
# if run name is empty, `-r` not specified, use "baseline"
if [ -z "$run_name" ]
then
run_name=baseline
fi
fi
export LOADTEST_RUN_NAME=$run_name
if [ "$all_script" = true ]
then
for script in ./k6/*.js
do
script=$(basename "$script")
print_details "$run_name" "$script"
export LOADTEST_K6_SCRIPT=$script
run_loadtest
done
else
print_details "$run_name" "$script.js"
export LOADTEST_K6_SCRIPT="$script.js"
run_loadtest
fi