BASE_DIR=$(dirname "$(readlink -f "$0")")
export PYTHONPATH=$BASE_DIR:$PYTHONPATH
echo $BASE_DIR
SHELL_SCRIPTS_DIR="$BASE_DIR/shell_scripts"
BASELINE_DIR="$BASE_DIR/baseline_results"
EXEC_PY_DIR=$(dirname "$BASE_DIR")
echo "SHELL_SCRIPTS_DIR: $SHELL_SCRIPTS_DIR"
echo "BASELINE_DIR: $BASELINE_DIR"
echo "EXEC_PY_DIR: $EXEC_PY_DIR"
GENERATE_LOG_DIR="$BASE_DIR/run_logs"
GENERATE_JSON_DIR="$BASE_DIR/run_jsons"
mkdir -p $GENERATE_LOG_DIR
mkdir -p $GENERATE_JSON_DIR
rm -rf $GENERATE_LOG_DIR/*
rm -rf $GENERATE_JSON_DIR/*
declare -A TEST_CASE_TIMES
for test_case in "$SHELL_SCRIPTS_DIR"/*.sh; do
file_name=$(basename "${test_case}")
echo "Running $file_name..."
file_name_prefix=$(basename "${file_name%.*}")
echo "$file_name_prefix"
START_TIME=$(date +%s)
touch "$GENERATE_JSON_DIR/$file_name_prefix.json"
bash $test_case | tee "$GENERATE_LOG_DIR/$file_name_prefix.log"
SCRIPT_EXITCODE=${PIPESTATUS[0]}
if [ $SCRIPT_EXITCODE -ne 0 ]; then
echo "Script $file_name has failed. Exit!"
exit 1
fi
END_TIME=$(date +%s)
ELAPSED_TIME=$((END_TIME-START_TIME))
MINUTES=$((ELAPSED_TIME / 60))
SECONDS=$((ELAPSED_TIME % 60))
TEST_CASE_TIMES["$file_name"]="$MINUTES m $SECONDS s"
if [ "$MINUTES" -gt 0 ]; then
echo "$(printf '*%.0s' {1..20}) Execution Time for $file_name: *${MINUTES}m ${SECONDS}s* $(printf '*%.0s' {1..20})"
else
echo "$(printf '*%.0s' {1..20}) Execution Time for $file_name: *${SECONDS}s* $(printf '*%.0s' {1..20})"
fi
if [[ $file_name == inference* ]]; then
echo "st is an inference task, skip compare result"
else
pytest -k "not loss" -x $BASE_DIR/test_tools/test_ci_st.py \
--baseline-json $BASELINE_DIR/$file_name_prefix.json \
--generate-log $GENERATE_LOG_DIR/$file_name_prefix.log \
--generate-json $GENERATE_JSON_DIR/$file_name_prefix.json
fi
PYTEST_EXITCODE=$?
echo $PYTEST_EXITCODE
if [ $PYTEST_EXITCODE -ne 0 ]; then
echo "$file_name_prefix compare to baseline has failed, check it!"
exit 1
else
echo "Pretrain $file_name_prefix execution success."
fi
done
echo "$(printf '*%.0s' {1..40})"
echo "* Summary of Execution Times for All Test Cases *"
echo "$(printf '*%.0s' {1..40})"
for file_name in "${!TEST_CASE_TIMES[@]}"; do
echo "* Execution Time for $file_name: ${TEST_CASE_TIMES[$file_name]} *"
done
echo "$(printf '*%.0s' {1..40})"