#!/bin/bash
#
# Copyright 2024 Nordix Foundation.
#
# 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.
#

ALL_TEST_SCRIPTS=( \
1-create-cmhandles.js \
2-wait-for-cmhandles-to-be-ready.js \
3-passthrough-read.js \
4-id-search-no-filter.js \
5-search-no-filter.js \
6-id-search-public-property.js \
7-search-public-property.js \
8-id-search-module.js \
9-search-module.js \
10-mixed-load-test.js \
11-delete-cmhandles.js \
)

pushd "$(dirname "$0")" || exit 1

echo 'Warming up JVM (warmup results will not be recorded)'
for test_script in "${ALL_TEST_SCRIPTS[@]}"; do
  echo "[warmup] k6 run $test_script"
  k6 --quiet -e TOTAL_CM_HANDLES=1000 -e REGISTRATION_BATCH_SIZE=10 -e K6_MODULE_NAME="$test_script" run "$test_script" > /dev/null
done

printf "Test Case\tCondition\tLimit\tActual\tResult\n" > summary.log

number_of_failures=0
for test_script in "${ALL_TEST_SCRIPTS[@]}"; do
  echo "k6 run $test_script"
  k6 --quiet run -e K6_MODULE_NAME="$test_script" "$test_script" >> summary.log || ((number_of_failures++))
done

echo '##############################################################################################################################'
echo '##                             K 6   P E R F O R M A N C E   T E S T   R E S U L T S                                        ##'
echo '##############################################################################################################################'
awk -F$'\t' '{printf "%-40s%-50s%-20s%-10s%-6s\n", $1, $2, $3, $4, $5}' summary.log

popd || exit 1

echo "NCMP TEST FAILURES: $number_of_failures"
exit $number_of_failures
