#!/bin/bash

set +e
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
PROJECT_ROOT=$(cd "${SCRIPT_DIR}/../.." && pwd)
_PYTHON_SITE=$($(dirname $(which python))/../bin/python -c "import gauss_splat, os; print(os.path.dirname(os.path.abspath(gauss_splat.__file__)))" 2>/dev/null)
if [ -n "$_PYTHON_SITE" ]; then
    BUILD_DIR=${_PYTHON_SITE}/packages/vendors/customize
else
    BUILD_DIR=${PROJECT_ROOT}/build/lib.linux-x86_64-cpython-39/gauss_splat/packages/vendors/customize
fi
CANN_PATH=$ASCEND_TOOLKIT_HOME

GS_PACKAGES=${BUILD_DIR}
OPAPI_LIB=${GS_PACKAGES}/op_api/lib
OPTILING_LIB=${GS_PACKAGES}/op_impl/ai_core/tbe/op_tiling/lib/linux/x86_64
OPPROTO_LIB=${GS_PACKAGES}/op_proto/lib/linux/x86_64

export ASCEND_CUSTOM_OPP_PATH=${GS_PACKAGES}
export LD_LIBRARY_PATH=${CANN_PATH}/lib64:${CANN_PATH}/x86_64-linux/lib64:${CANN_PATH}/opp/built-in/op_impl/ai_core/tbe/op_tiling/lib/linux/x86_64:${CANN_PATH}/opp/build-in/op_impl/ai_core/tbe/op_api/lib/linux/x86_64:${OPAPI_LIB}:${OPTILING_LIB}:${OPPROTO_LIB}:$LD_LIBRARY_PATH

WORKDIR=${SCRIPT_DIR}/build_out
mkdir -p ${WORKDIR}

RESULTS_FILE=${WORKDIR}/run_results.txt
echo "=== Kernel Test Results $(date) ===" > ${RESULTS_FILE}
echo "GS_PACKAGES: ${GS_PACKAGES}" >> ${RESULTS_FILE}
echo "" >> ${RESULTS_FILE}

for binary in ${WORKDIR}/test_*; do
    [ ! -f ${binary} ] && continue
    [[ "${binary}" == *.log ]] && continue
    [[ "${binary}" == *.txt ]] && continue
    test_name=$(basename ${binary})
    echo "Running ${test_name}..."
    cd /tmp && ${binary} 2>${WORKDIR}/${test_name}_run.log
    exit_code=$?
    output=$(cat ${WORKDIR}/${test_name}_run.log 2>/dev/null)
    echo "[${test_name}] EXIT CODE: ${exit_code}"
    if [ -n "${output}" ]; then
        echo "  ${output}"
    fi
    echo "[${test_name}] EXIT CODE: ${exit_code}" >> ${RESULTS_FILE}
    echo "${output}" >> ${RESULTS_FILE}
    echo "" >> ${RESULTS_FILE}
done

echo ""
echo "====================================="
echo "=== All tests completed ==="
cat ${RESULTS_FILE}