From 4b8fe85ff870a92a5811b82bb9c84a24a3b865b8 Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Fri, 11 Apr 2025 17:38:55 +0200 Subject: [PATCH] fixed shared memeory tests to include current env and fixed prints for errors --- .../tests/test-SharedMemory.cpp | 25 +++++++++++++++---- tests/scripts/test_simulators.py | 19 ++++++++------ 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/slsDetectorSoftware/tests/test-SharedMemory.cpp b/slsDetectorSoftware/tests/test-SharedMemory.cpp index 5ba3c20a2..4dff6d5d7 100644 --- a/slsDetectorSoftware/tests/test-SharedMemory.cpp +++ b/slsDetectorSoftware/tests/test-SharedMemory.cpp @@ -18,11 +18,16 @@ struct Data { constexpr int shm_id = 10; TEST_CASE("Create SharedMemory read and write", "[detector]") { + const char *env_p = std::getenv("SLSDETNAME"); + std::string env_name = env_p ? ("_" + std::string(env_p)) : ""; SharedMemory shm(shm_id, -1); + if (shm.exists()) { + shm.removeSharedMemory(); + } shm.createSharedMemory(); CHECK(shm.getName() == std::string("/slsDetectorPackage_detector_") + - std::to_string(shm_id)); + std::to_string(shm_id) + env_name); shm()->x = 3; shm()->y = 5.7; @@ -90,10 +95,12 @@ TEST_CASE("Open two shared memories to the same place", "[detector]") { } TEST_CASE("Move SharedMemory", "[detector]") { + const char *env_p = std::getenv("SLSDETNAME"); + std::string env_name = env_p ? ("_" + std::string(env_p)) : ""; SharedMemory shm(shm_id, -1); CHECK(shm.getName() == std::string("/slsDetectorPackage_detector_") + - std::to_string(shm_id)); + std::to_string(shm_id) + env_name); shm.createSharedMemory(); shm()->x = 9; @@ -104,15 +111,19 @@ TEST_CASE("Move SharedMemory", "[detector]") { REQUIRE_THROWS( shm()); // trying to access should throw instead of returning a nullptr CHECK(shm2.getName() == std::string("/slsDetectorPackage_detector_") + - std::to_string(shm_id)); + std::to_string(shm_id) + env_name); shm2.removeSharedMemory(); } TEST_CASE("Create several shared memories", "[detector]") { + const char *env_p = std::getenv("SLSDETNAME"); + std::string env_name = env_p ? ("_" + std::string(env_p)) : ""; + constexpr int N = 5; std::vector> v; v.reserve(N); for (int i = 0; i != N; ++i) { + std::cout << "i:" << i << std::endl; v.emplace_back(shm_id + i, -1); CHECK(v[i].exists() == false); v[i].createSharedMemory(); @@ -123,7 +134,7 @@ TEST_CASE("Create several shared memories", "[detector]") { for (int i = 0; i != N; ++i) { CHECK(*v[i]() == i); CHECK(v[i].getName() == std::string("/slsDetectorPackage_detector_") + - std::to_string(i + shm_id)); + std::to_string(i + shm_id) + env_name); } for (int i = 0; i != N; ++i) { @@ -133,8 +144,12 @@ TEST_CASE("Create several shared memories", "[detector]") { } TEST_CASE("Create create a shared memory with a tag") { + const char *env_p = std::getenv("SLSDETNAME"); + std::string env_name = env_p ? ("_" + std::string(env_p)) : ""; + SharedMemory shm(0, -1, "ctbdacs"); - REQUIRE(shm.getName() == "/slsDetectorPackage_detector_0_ctbdacs"); + REQUIRE(shm.getName() == + "/slsDetectorPackage_detector_0" + env_name + "_ctbdacs"); } TEST_CASE("Create create a shared memory with a tag when SLSDETNAME is set") { diff --git a/tests/scripts/test_simulators.py b/tests/scripts/test_simulators.py index d18bf3a40..ea580c5e6 100644 --- a/tests/scripts/test_simulators.py +++ b/tests/scripts/test_simulators.py @@ -128,14 +128,16 @@ def startCmdTests(name, fp, fname): try: subprocess.run(cmd.split(), stdout=fp, stderr=fp, check=True, text=True) except subprocess.CalledProcessError as e: - Log(Fore.RED, f'Command tests failed for {name}:\n{e}') - raise + pass with open (fname, 'r') as f: for line in f: if "FAILED" in line: msg = 'Cmd tests failed for ' + name + '!!!' + sys.stdout = original_stdout Log(Fore.RED, msg) + Log(Fore.RED, line) + sys.stdout = fp raise Exception(msg) Log(Fore.GREEN, 'Cmd Tests successful for ' + name) @@ -146,14 +148,15 @@ def startGeneralTests(fp, fname): try: subprocess.run(cmd.split(), stdout=fp, stderr=fp, check=True, text=True) except subprocess.CalledProcessError as e: - Log(Fore.RED, f'General tests failed:\n{e}') - raise + pass with open (fname, 'r') as f: for line in f: if "FAILED" in line: msg = 'General tests failed !!!' - Log(Fore.RED, msg) + sys.stdout = original_stdout + Log(Fore.RED, msg + '\n' + line) + sys.stdout = fp raise Exception(msg) Log(Fore.GREEN, 'General Tests successful') @@ -206,6 +209,7 @@ with open(fname, 'w') as fp: startGeneralTests(fp, file_results) killAllStaleProcesses(fp) + testError = False for server in servers: try: # print to terminal for progress @@ -230,12 +234,14 @@ with open(fname, 'w') as fp: sys.stdout = original_stdout sys.stderr = original_stderr Log(Fore.RED, f'Exception caught while testing {server}. Cleaning up...') + testError = True break # redirect to terminal sys.stdout = original_stdout sys.stderr = original_stderr - Log(Fore.GREEN, 'Passed all tests for virtual detectors \n' + str(servers)) + if not testError: + Log(Fore.GREEN, 'Passed all tests for virtual detectors \n' + str(servers)) except Exception as e: @@ -243,7 +249,6 @@ with open(fname, 'w') as fp: sys.stdout = original_stdout sys.stderr = original_stderr Log(Fore.RED, f'Exception caught with general testing. Cleaning up...') - Log(Fore.RED, str(e)) cleanSharedmemory(sys.stdout)