fixed shared memeory tests to include current env and fixed prints for errors
Some checks failed
Native CMake Build / Configure and build using cmake (push) Failing after 11s

This commit is contained in:
2025-04-11 17:38:55 +02:00
parent 0175e2e9d0
commit 4b8fe85ff8
2 changed files with 32 additions and 12 deletions

View File

@ -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<Data> 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<Data> 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<SharedMemory<int>> 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<int> 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") {

View File

@ -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,11 +234,13 @@ 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
if not testError:
Log(Fore.GREEN, 'Passed all tests for virtual detectors \n' + str(servers))
@ -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)