#!../../../common/bats/bin/bats
# -*-sh-*-

source ../../../common/test_helper_functions.bash || exit 1
source ../../../common/functions || exit 1

if [ -s ../../../common/TEST_ENV ]; then
	source ../../../common/TEST_ENV
fi

check_rms
export SCAN_MPI_LAUNCHER=prun

NODES=2
TASKS=$(tasks_count 8)
ARGS=8

@test "[perf-tools/Scalasca] MPI C binary runs under resource manager (${RESOURCE_MANAGER}/${LMOD_FAMILY_COMPILER}/${LMOD_FAMILY_MPI})" {
	if [ ! -s ./mpi/C_mpi_test ]; then
		flunk "C_mpi_test binary does not exist"
	fi

	run_mpi_binary -s 1 ./mpi/C_mpi_test $ARGS $NODES "$TASKS"
	assert_success

	run scalasca -examine -s scorep_C_mpi_test_*
	assert_success

	rm -rf scorep_C_mpi_test_*
}

@test "[perf-tools/Scalasca] MPI C++ binary runs under resource manager (${RESOURCE_MANAGER}/${LMOD_FAMILY_COMPILER}/${LMOD_FAMILY_MPI})" {
	if [ ! -s ./mpi/CXX_mpi_test ]; then
		flunk "CXX_mpi_test binary does not exist"
	fi

	run_mpi_binary -s 1 ./mpi/CXX_mpi_test $ARGS $NODES "$TASKS"
	assert_success

	run scalasca -examine -s scorep_CXX_mpi_test_*
	assert_success

	rm -rf scorep_CXX_mpi_test_*
}

@test "[perf-tools/Scalasca] Serial C OpenMP binary runs under resource manager (${RESOURCE_MANAGER}/${LMOD_FAMILY_COMPILER}/${LMOD_FAMILY_MPI})" {
	if [ ! -s ./serial/C_omp_test ]; then
		flunk "C_omp_test binary does not exist"
	fi

	rm -rf scorep-*
	run_serial_binary ./serial/C_omp_test
	assert_success

	run scalasca -examine -s scorep-*
	assert_success

	rm -rf scorep-*
}
