#!/bin/bash

#
# Call from $StroikaRoot
#
#	Examples:
#		ScriptsLib/RunPerformanceRegressionTests
#		EXE=Builds/my-gcc-6.1.0-release-c++17/Tests/Test49 ScriptsLib/RunPerformanceRegressionTests
#		EXE=Builds/Release/Tests/Test49 USE_TEST_BASENAME=FRED ScriptsLib/RunPerformanceRegressionTests
#		MULTIPLIER=1 ScriptsLib/RunPerformanceRegressionTests
#
VER=`ScriptsLib/ExtractVersionInformation STROIKA_VERSION FullVersionString`

: "${USE_TEST_BASENAME:=UNKNOWN}"
: "${PERF_TEST:=Test52}"

export DETECTED_HOST_OS=`ScriptsLib/DetectedHostOS`


MULTIPLIER=${MULTIPLIER-15}
if [ "$DETECTED_HOST_OS" == "Darwin" ] ; then
    EXE=${EXE-"Builds/Release/Tests/$PERF_TEST"}
	if [ "$USE_TEST_BASENAME" == "UNKNOWN" ] ; then USE_TEST_BASENAME="Release-arm64"; fi
    CMDRUN_PREFIX="nice -10 "
elif [ "$DETECTED_HOST_OS" == "Linux" ] ; then
    # Do something under GNU/Linux platform
    EXE=${EXE-"Builds/g++-optimized/Tests/$PERF_TEST"}
	if [ ! -e "$EXE" ] ; then EXE="Builds/Release/Tests/$PERF_TEST"; fi
	if [ ! -e "$EXE" ] ; then EXE="Builds/g++-12-release++2b/Tests/$PERF_TEST"; fi
	if [ ! -e "$EXE" ] ; then EXE="Builds/g++-13-release++2b/Tests/$PERF_TEST"; fi
	if [ ! -e "$EXE" ] ; then EXE="Builds/g++-14-release++23/Tests/$PERF_TEST"; fi
	if [ "$USE_TEST_BASENAME" == "UNKNOWN" ] ; then USE_TEST_BASENAME="linux-g++-7.3-x64"; fi
    CMDRUN_PREFIX="nice -10 taskset -c 0 "
elif [[ "$DETECTED_HOST_OS" == "Cygwin" || "$DETECTED_HOST_OS" == "MSYS" ]] ; then
    # Do something under Windows NT platform
    EXE2=${EXE-"Builds/Release-x86_64/Tests/$PERF_TEST"}
    EXE=${EXE-"Builds/Release-x86/Tests/$PERF_TEST"}
	if [ "$USE_TEST_BASENAME" == "UNKNOWN" ] ; then USE_TEST_BASENAME="Windows-${DETECTED_HOST_OS}-vs2k"; fi
    USE_TEST_BASENAME_APP="x86-"
    USE_TEST_BASENAME_APP2="x86_64-"
    CMDRUN_PREFIX=""
else
    echo "WARNING - unrecognized OS"
fi

if [ ! -e "$EXE" ] ; then echo "Warning: $EXE not found"; fi
echo -n "$CMDRUN_PREFIX" "$EXE --x $MULTIPLIER --show > Tests/HistoricalPerformanceRegressionTestResults/PerformanceDump-$USE_TEST_BASENAME-$USE_TEST_BASENAME_APP$VER.txt ... "
$CMDRUN_PREFIX $EXE --x $MULTIPLIER --show > Tests/HistoricalPerformanceRegressionTestResults/PerformanceDump-$USE_TEST_BASENAME-$USE_TEST_BASENAME_APP$VER.txt

if [ -e "$EXE2" ] ; then
    echo -n "$CMDRUN_PREFIX" "$EXE2 --x $MULTIPLIER --show > Tests/HistoricalPerformanceRegressionTestResults/PerformanceDump-$USE_TEST_BASENAME-$USE_TEST_BASENAME_APP2$VER.txt ... "
    $CMDRUN_PREFIX $EXE2 --x $MULTIPLIER --show > Tests/HistoricalPerformanceRegressionTestResults/PerformanceDump-$USE_TEST_BASENAME-$USE_TEST_BASENAME_APP2$VER.txt
fi
echo "done"
