Skip to content

Commit

Permalink
Merge pull request E3SM-Project#93 from grnydawn/ykim/omega/ctest
Browse files Browse the repository at this point in the history
ctest checks return code instead of PASS or FAIL output
  • Loading branch information
philipwjones authored Jun 28, 2024
2 parents 97f9167 + ef4e026 commit c0b9566
Show file tree
Hide file tree
Showing 15 changed files with 987 additions and 403 deletions.
23 changes: 0 additions & 23 deletions components/omega/test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -206,26 +206,3 @@ add_omega_test(
infra/OmegaKokkosTest.cpp
""
)

##################
# test properties
##################

set_tests_properties(
DATA_TYPES_TEST
MACHINE_ENV_TEST
BROADCAST_TEST
LOGGING_TEST
CONFIG_TEST
DECOMP_TEST
HALO_TEST
HORZMESH_TEST
HORZOPERATORS_PLANE_TEST
HORZOPERATORS_SPHERE_TEST
IO_TEST
METADATA_TEST
TIMEMGR_TEST
KOKKOS_TEST
IOFIELD_TEST
PROPERTIES FAIL_REGULAR_EXPRESSION "FAIL" PASS_REGULAR_EXPRESSION "PASS"
)
67 changes: 41 additions & 26 deletions components/omega/test/base/BroadcastTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
#include <iostream>

template <class MyType>
void TestBroadcast(OMEGA::MachEnv *Env, std::string TypeName) {
void TestBroadcast(OMEGA::MachEnv *Env, std::string TypeName, int *RetVal) {

const int MyTask = Env->getMyTask();
const int IsMyMaster = Env->isMasterTask();
Expand Down Expand Up @@ -49,9 +49,11 @@ void TestBroadcast(OMEGA::MachEnv *Env, std::string TypeName) {
if (MyVal == FromVal)
std::cout << TypeName << " scalar broadcast from a default task: PASS"
<< std::endl;
else
else {
std::cout << TypeName << " scalar broadcast from a default task: FAIL"
<< std::endl;
*RetVal += 1;
}
}

if (MyTask == RootTask)
Expand All @@ -67,10 +69,12 @@ void TestBroadcast(OMEGA::MachEnv *Env, std::string TypeName) {
std::cout << TypeName
<< " scalar broadcast from a non-master task: PASS"
<< std::endl;
else
else {
std::cout << TypeName
<< " scalar broadcast from a non-master task: FAIL"
<< std::endl;
*RetVal += 1;
}
}

if (MyTask == RootTask)
Expand All @@ -86,10 +90,12 @@ void TestBroadcast(OMEGA::MachEnv *Env, std::string TypeName) {
std::cout << TypeName
<< " scalar broadcast from the default env.: PASS"
<< std::endl;
else
else {
std::cout << TypeName
<< " scalar broadcast from the default env.: FAIL"
<< std::endl;
*RetVal += 1;
}
}

// length of vector<string> is not fixed
Expand All @@ -115,10 +121,12 @@ void TestBroadcast(OMEGA::MachEnv *Env, std::string TypeName) {
std::cout << TypeName
<< " vector broadcast from the default env.: PASS"
<< std::endl;
else
else {
std::cout << TypeName
<< " vector broadcast from the default env.: FAIL"
<< std::endl;
*RetVal += 1;
}
}
}
}
Expand All @@ -130,6 +138,8 @@ void TestBroadcast(OMEGA::MachEnv *Env, std::string TypeName) {
//
int main(int argc, char *argv[]) {

int RetVal = 0;

// Initialize the global MPI environment
MPI_Init(&argc, &argv);

Expand All @@ -154,25 +164,25 @@ int main(int argc, char *argv[]) {
OMEGA::MachEnv *DefEnv = OMEGA::MachEnv::getDefaultEnv();

// I4 Broadcast tests
TestBroadcast<OMEGA::I4>(DefEnv, "I4");
TestBroadcast<OMEGA::I4>(DefEnv, "I4", &RetVal);

// I8 Broadcast tests
TestBroadcast<OMEGA::I8>(DefEnv, "I8");
TestBroadcast<OMEGA::I8>(DefEnv, "I8", &RetVal);

// R4 Broadcast tests
TestBroadcast<OMEGA::R4>(DefEnv, "R4");
TestBroadcast<OMEGA::R4>(DefEnv, "R4", &RetVal);

// R8 Broadcast tests
TestBroadcast<OMEGA::R8>(DefEnv, "R8");
TestBroadcast<OMEGA::R8>(DefEnv, "R8", &RetVal);

// Real Broadcast tests
TestBroadcast<OMEGA::Real>(DefEnv, "Real");
TestBroadcast<OMEGA::Real>(DefEnv, "Real", &RetVal);

// boolean Broadcast tests
TestBroadcast<bool>(DefEnv, "bool");
TestBroadcast<bool>(DefEnv, "bool", &RetVal);

// string Broadcast tests
TestBroadcast<std::string>(DefEnv, "string");
TestBroadcast<std::string>(DefEnv, "string", &RetVal);

// Initialize general subset environment
int InclSize = 4;
Expand All @@ -198,28 +208,33 @@ int main(int argc, char *argv[]) {

if (pos != std::end(InclTasks)) {
if (MyVal == 1)
std::cout << "I4"
<< " sub-group broadcast at rank " << MyTask << " : PASS"
<< std::endl;
else
std::cout << "I4"
<< " sub-group broadcast at rank " << MyTask << " : FAIL"
<< std::endl;
std::cout << "I4" << " sub-group broadcast at rank " << MyTask
<< " : PASS" << std::endl;
else {
std::cout << "I4" << " sub-group broadcast at rank " << MyTask
<< " : FAIL" << std::endl;
RetVal += 1;
}
} else {
if (MyVal == -1)
std::cout << "I4"
<< " sub-group broadcast at rank " << MyTask << " : PASS"
<< std::endl;
else
std::cout << "I4"
<< " sub-group broadcast at rank " << MyTask << " : FAIL"
<< std::endl;
std::cout << "I4" << " sub-group broadcast at rank " << MyTask
<< " : PASS" << std::endl;
else {
std::cout << "I4" << " sub-group broadcast at rank " << MyTask
<< " : FAIL" << std::endl;
RetVal += 1;
}
}

OMEGA::MachEnv::removeEnv("Subset");

// MPI_Status status;
MPI_Finalize();

if (RetVal >= 256)
RetVal = 255;

return RetVal;

} // end of main
//===-----------------------------------------------------------------------===/
Loading

0 comments on commit c0b9566

Please sign in to comment.