Dev/verify shm 2 (#1292)

* userdetails refinedg

* fixed caller test
This commit is contained in:
2025-09-09 15:35:14 +02:00
committed by GitHub
parent ddc44e1065
commit 028bae82e9
2 changed files with 18 additions and 19 deletions

View File

@@ -67,8 +67,13 @@ std::string getUserDetails(const int detectorIndex) {
std::string user = "Unknown";
std::string date = "Unknown";
SharedMemory<sharedDetector> detectorShm(detectorIndex, -1);
if (detectorShm.exists()) {
{
SharedMemory<sharedDetector> detectorShm(detectorIndex, -1);
if (!detectorShm.exists()) {
throw SharedMemoryError("No detector with index " +
std::to_string(detectorIndex) +
" in shared memory!");
}
detectorShm.openSharedMemory(false);
if (detectorShm()->shmversion < DETECTOR_SHMAPIVERSION) {
detectorShm.unmapSharedMemory();
@@ -86,13 +91,16 @@ std::string getUserDetails(const int detectorIndex) {
for (int imod = 0; imod != numModules; ++imod) {
SharedMemory<sharedModule> moduleShm(detectorIndex, imod);
moduleShm.openSharedMemory(false);
if (moduleShm()->shmversion < MODULE_SHMAPIVERSION) {
LOG(logWARNING) << "Module Shared Memory too old to get hostname";
} else {
hostname = moduleShm()->hostname;
if (moduleShm.exists()) {
moduleShm.openSharedMemory(false);
if (moduleShm()->shmversion < MODULE_SHMAPIVERSION) {
LOG(logWARNING)
<< "Module Shared Memory too old to get hostname";
} else {
hostname = moduleShm()->hostname;
}
moduleShm.unmapSharedMemory();
}
moduleShm.unmapSharedMemory();
}
std::ostringstream userDetails;

View File

@@ -3635,17 +3635,8 @@ TEST_CASE("frametime", "[.cmdcall]") {
TEST_CASE("user", "[.cmdcall]") {
Detector det;
Caller caller(&det);
// stays the same across calls
std::ostringstream oss1, oss2, oss3;
caller.call("user", {}, -1, GET, oss1);
caller.call("user", {}, -1, GET, oss2);
caller.call("user", {}, -1, GET, oss3);
REQUIRE(oss1.str() == oss2.str());
REQUIRE(oss2.str() == oss3.str());
// This is a get only command
// REQUIRE_THROWS(caller.call("user", {}, -1, PUT)); exit with failure
REQUIRE_NOTHROW(caller.call("user", {}, -1, GET));
// caller only has help. cmdApp takes care of put and get
REQUIRE_NOTHROW(caller.call("user", {}, -1, defs::HELP_ACTION));
}
TEST_CASE("sleep", "[.cmdcall]") {