mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-20 02:40:03 +02:00
* first draft of fixing the free function available within the class * removed class member function freeSharedmemory for both Detector and Module; made the free function freeSharedmemory accessible to python interface; setHostname if there is already a module in shm will recreate the Detector object while freeing shm completely and keeping detsize and intitialchecks (previous commit), sethostname called from DetectorClass in virtual command to have one point of entry (previous commit), testing Module class frees shared memory using free function * Detector class: added copy and move constructor and assignmentoperators due to explicit destructor (DetectorImpl fwd declared), DetectorImpl class: included ZmqSocket to remove destructor (should not be virtual in any case), Module class: removed explciit destructor to allow compiler generated constructor and operators * formatting * minor fix for readme autocomplete * updated client version date
79 lines
2.2 KiB
C++
79 lines
2.2 KiB
C++
// SPDX-License-Identifier: LGPL-3.0-or-other
|
|
// Copyright (C) 2021 Contributors to the SLS Detector Package
|
|
#include "Detector.h"
|
|
#include "Module.h"
|
|
#include "SharedMemory.h"
|
|
#include "catch.hpp"
|
|
|
|
namespace sls {
|
|
|
|
using dt = slsDetectorDefs::detectorType;
|
|
TEST_CASE("Construction with a defined detector type") {
|
|
Module m(dt::EIGER);
|
|
REQUIRE(m.getDetectorType() == dt::EIGER);
|
|
freeSharedMemory(0, 0); // clean up
|
|
SharedMemory<sharedModule> moduleShm(0, 0);
|
|
REQUIRE(moduleShm.exists() == false);
|
|
}
|
|
|
|
TEST_CASE("Read back detector type from shm") {
|
|
// Create specific detector in order to create shm
|
|
Module m(dt::JUNGFRAU);
|
|
|
|
// New detector that reads type from shm
|
|
Module m2;
|
|
REQUIRE(m2.getDetectorType() == dt::JUNGFRAU);
|
|
|
|
// Now both objects point to the same shm so we can only
|
|
// free one!
|
|
freeSharedMemory(0, 0);
|
|
SharedMemory<sharedModule> moduleShm(0, 0);
|
|
REQUIRE(moduleShm.exists() == false);
|
|
}
|
|
|
|
TEST_CASE("Is shm fixed pattern shm compatible") {
|
|
Module m(dt::JUNGFRAU);
|
|
|
|
// Should be true since we just created the shm
|
|
REQUIRE(m.isFixedPatternSharedMemoryCompatible() == true);
|
|
|
|
// Set shm version to 0
|
|
SharedMemory<sharedModule> shm(0, 0);
|
|
REQUIRE(shm.exists() == true);
|
|
shm.openSharedMemory(true);
|
|
shm()->shmversion = 0;
|
|
|
|
// Should fail since version is set to 0
|
|
REQUIRE(m.isFixedPatternSharedMemoryCompatible() == false);
|
|
|
|
freeSharedMemory(0, 0);
|
|
SharedMemory<sharedModule> moduleShm(0, 0);
|
|
REQUIRE(moduleShm.exists() == false);
|
|
}
|
|
|
|
TEST_CASE("Get default control port") {
|
|
Module m(dt::MYTHEN3);
|
|
REQUIRE(m.getControlPort() == 1952);
|
|
freeSharedMemory(0, 0);
|
|
SharedMemory<sharedModule> moduleShm(0, 0);
|
|
REQUIRE(moduleShm.exists() == false);
|
|
}
|
|
|
|
TEST_CASE("Get default stop port") {
|
|
Module m(dt::GOTTHARD2);
|
|
REQUIRE(m.getStopPort() == 1953);
|
|
freeSharedMemory(0, 0);
|
|
SharedMemory<sharedModule> moduleShm(0, 0);
|
|
REQUIRE(moduleShm.exists() == false);
|
|
}
|
|
|
|
TEST_CASE("Get default receiver TCP port") {
|
|
Module m(dt::MYTHEN3);
|
|
REQUIRE(m.getReceiverPort() == 1954);
|
|
freeSharedMemory(0, 0);
|
|
SharedMemory<sharedModule> moduleShm(0, 0);
|
|
REQUIRE(moduleShm.exists() == false);
|
|
}
|
|
|
|
} // namespace sls
|