new tests

This commit is contained in:
Erik Frojdh 2019-04-03 18:11:48 +02:00
parent 697c020a49
commit 0270e18882
11 changed files with 171 additions and 93 deletions

View File

@ -110,6 +110,10 @@ set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
find_package(Doxygen)
find_package(ZeroMQ 4 REQUIRED)
if (SLS_USE_TESTS)
enable_testing()
add_subdirectory(tests)
endif(SLS_USE_TESTS)
# Support library containing functionallity common to
# detector and receiver
@ -135,9 +139,7 @@ if (SLS_USE_GUI)
endif()
endif (SLS_USE_GUI)
if (SLS_USE_TESTS)
enable_testing()
endif(SLS_USE_TESTS)
if (SLS_USE_INTEGRATION_TESTS)
add_subdirectory(integrationTests)

View File

@ -1,23 +1 @@
include_directories(
${PROJECT_SOURCE_DIR}/catch
)
set(SOURCES
test.cpp
test-SharedMemory.cpp
)
add_executable(testSlsDetector ${SOURCES})
target_link_libraries(testSlsDetector
slsSupportLib
slsDetectorShared
pthread
rt
)
set_target_properties(testSlsDetector PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
#TODO! Move to automatic test discovery
add_test(test-testSlsDetector ${CMAKE_BINARY_DIR}/bin/testSlsDetector)
target_sources(tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/test-SharedMemory.cpp)

View File

@ -13,7 +13,7 @@ struct Data {
using namespace sls;
TEST_CASE("Create SharedMemory read and write") {
TEST_CASE("Create SharedMemory read and write", "[detector]") {
SharedMemory<Data> shm(0, -1);
shm.CreateSharedMemory();
@ -33,7 +33,7 @@ TEST_CASE("Create SharedMemory read and write") {
CHECK(shm.IsExisting() == false);
}
TEST_CASE("Open existing SharedMemory and read") {
TEST_CASE("Open existing SharedMemory and read", "[detector]") {
{
SharedMemory<double> shm(0, -1);
@ -48,7 +48,8 @@ TEST_CASE("Open existing SharedMemory and read") {
shm2.RemoveSharedMemory();
}
TEST_CASE("Creating a second shared memory with the same name throws") {
TEST_CASE("Creating a second shared memory with the same name throws",
"[detector]") {
SharedMemory<double> shm0(0, -1);
SharedMemory<double> shm1(0, -1);
@ -58,7 +59,7 @@ TEST_CASE("Creating a second shared memory with the same name throws") {
shm0.RemoveSharedMemory();
}
TEST_CASE("Open two shared memories to the same place") {
TEST_CASE("Open two shared memories to the same place", "[detector]") {
//Create the first shared memory
SharedMemory<Data> shm(0, -1);
@ -83,8 +84,7 @@ TEST_CASE("Open two shared memories to the same place") {
CHECK(shm2.IsExisting() == false);
}
TEST_CASE("Move SharedMemory"){
TEST_CASE("Move SharedMemory", "[detector]") {
SharedMemory<Data> shm(0,-1);
CHECK(shm.GetName() == "/slsDetectorPackage_multi_0");
@ -105,8 +105,7 @@ TEST_CASE("Move SharedMemory"){
}
TEST_CASE("Create several shared memories") {
TEST_CASE("Create several shared memories", "[detector]") {
constexpr int N = 5;
std::vector<SharedMemory<int>> v;
v.reserve(N);

View File

@ -81,7 +81,9 @@ if (HDF5_FOUND)
target_link_libraries(slsReceiver PUBLIC ${HDF5_LIBRARIES})
endif ()
if (SLS_USE_TESTS)
add_subdirectory(tests)
endif(SLS_USE_TESTS)
install(TARGETS slsReceiverShared
EXPORT "${TARGETS_EXPORT_NAME}"

View File

@ -9,7 +9,7 @@
#include "sls_detector_defs.h"
#include "receiver_defs.h"
#include "logger.h"
#include <math.h> //ceil
#include <vector>
@ -633,32 +633,31 @@ class MoenchData : public GeneralData {
private:
/** Structure of an jungfrau ctb packet header (10G Udp) */
typedef struct {
unsigned char emptyHeader[6];
unsigned char reserved[4];
unsigned char packetNumber[1];
unsigned char frameNumber[3];
unsigned char bunchid[8];
} jfrauctb_packet_header_t;
struct jfrauctb_packet_header {
unsigned char emptyHeader[6];
unsigned char reserved[4];
uint32_t packetFrameNumber;
uint64_t bunchid;
} __attribute__((packed));
public:
/** Constructor */
MoenchData(){
myDetectorType = slsDetectorDefs::MOENCH;
nPixelsX = 32; // total number of channels
nPixelsY = 1; // number of samples
headerSizeinPacket = sizeof(slsDetectorDefs::sls_detector_header);
dataSize = UDP_PACKET_DATA_BYTES;
packetSize = headerSizeinPacket + dataSize;
//packetsPerFrame = 1;
imageSize = nPixelsX * nPixelsY * 2;
packetsPerFrame = ceil((double)imageSize / (double)UDP_PACKET_DATA_BYTES);
frameIndexMask = 0xFFFFFF;
maxFramesPerFile = CTB_MAX_FRAMES_PER_FILE;
fifoBufferHeaderSize= FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
defaultFifoDepth = 2500;
standardheader = true;
public:
/** Constructor */
MoenchData() {
myDetectorType = slsDetectorDefs::MOENCH;
nPixelsX = 32; // total number of channels
nPixelsY = 1; // number of samples
headerSizeinPacket = sizeof(slsDetectorDefs::sls_detector_header);
dataSize = UDP_PACKET_DATA_BYTES;
packetSize = headerSizeinPacket + dataSize;
// packetsPerFrame = 1;
imageSize = nPixelsX * nPixelsY * 2;
packetsPerFrame = ceil((double)imageSize / (double)UDP_PACKET_DATA_BYTES);
frameIndexMask = 0xFFFFFF;
maxFramesPerFile = CTB_MAX_FRAMES_PER_FILE;
fifoBufferHeaderSize =
FIFO_HEADER_NUMBYTES + sizeof(slsDetectorDefs::sls_receiver_header);
defaultFifoDepth = 2500;
standardheader = true;
};
/**
@ -674,10 +673,10 @@ private:
void GetHeaderInfo(int index, char* packetData, uint32_t dynamicRange, bool oddStartingPacket,
uint64_t& frameNumber, uint32_t& packetNumber, uint32_t& subFrameNumber, uint64_t& bunchId) const {
subFrameNumber = -1;
jfrauctb_packet_header_t* header = (jfrauctb_packet_header_t*)(packetData);
frameNumber = (uint64_t)((*( (uint32_t*) header->frameNumber)) & frameIndexMask);
packetNumber = (uint32_t)(*( (uint8_t*) header->packetNumber));
bunchId = (*((uint64_t*) header->bunchid));
jfrauctb_packet_header* header = (jfrauctb_packet_header*)(packetData);
frameNumber = (header->packetFrameNumber >> 8) & frameIndexMask;
packetNumber = header->packetFrameNumber & 0xFF;
bunchId = header->bunchid;
}

View File

@ -0,0 +1,24 @@
# include_directories(
# ${PROJECT_SOURCE_DIR}/catch
# )
# set(SOURCES
# test.cpp
# test-GeneralData.cpp
# )
target_sources(tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/test-GeneralData.cpp)
# add_executable(testSlsReceiver ${SOURCES})
# target_link_libraries(testSlsReceiver
# slsSupportLib
# slsDetectorShared
# slsReceiverShared
# pthread
# rt
# )
# set_target_properties(testSlsReceiver PROPERTIES
# RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
# )
# #TODO! Move to automatic test discovery
# add_test(test-testSlsReceiver ${CMAKE_BINARY_DIR}/bin/testSlsReceiver)

View File

@ -0,0 +1,68 @@
#include "GeneralData.h"
#include "catch.hpp"
#include <iostream>
// using namespace sls;
TEST_CASE("Parse jungfrauctb header", "[receiver]") {
// typedef struct {
// unsigned char emptyHeader[6];
// unsigned char reserved[4];
// unsigned char packetNumber[1];
// unsigned char frameNumber[3];
// unsigned char bunchid[8];
// } jfrauctb_packet_header_t;
struct packet {
unsigned char emptyHeader[6];
unsigned char reserved[4];
unsigned char packetNumber[1];
unsigned char frameNumber[3];
unsigned char bunchid[8];
unsigned char data[1024];
};
MoenchData data;
// GetHeaderInfo(int index, char *packetData, uint32_t dynamicRange,
// bool oddStartingPacket, uint64_t &frameNumber,
// uint32_t &packetNumber, uint32_t &subFrameNumber,
// uint64_t &bunchId)
packet test_packet;
test_packet.packetNumber[0] = (unsigned char)53;
test_packet.frameNumber[0] = (unsigned char)32;
test_packet.frameNumber[1] = (unsigned char)15;
test_packet.frameNumber[2] = (unsigned char)91;
test_packet.bunchid[0] = (unsigned char)91;
test_packet.bunchid[1] = (unsigned char)25;
test_packet.bunchid[2] = (unsigned char)15;
test_packet.bunchid[3] = (unsigned char)1;
test_packet.bunchid[4] = (unsigned char)32;
test_packet.bunchid[5] = (unsigned char)251;
test_packet.bunchid[6] = (unsigned char)18;
test_packet.bunchid[7] = (unsigned char)240;
int index = 0;
char *packetData = reinterpret_cast<char *>(&test_packet);
uint32_t dynamicRange{0};
bool oddStartingPacket{0};
uint64_t frameNumber{0};
uint32_t packetNumber{0};
uint32_t subFrameNumber{0};
uint64_t bunchId{0};
data.GetHeaderInfo(index, packetData, dynamicRange, oddStartingPacket,
frameNumber, packetNumber, subFrameNumber, bunchId);
CHECK(packetNumber == 53);
CHECK(frameNumber == 0x5b0f20);
CHECK(bunchId == 0xf012fb20010f195b);
}

View File

@ -1,28 +1,8 @@
include_directories(
${PROJECT_SOURCE_DIR}/catch
../include
)
set(SOURCES
test.cpp
test-ClientInterface.cpp
test-CmdLineParser.cpp
test-container_utils.cpp
test-network_utils.cpp
test-string_utils.cpp
test-Timer.cpp
)
add_executable(testSlsSupportLib ${SOURCES})
target_link_libraries(testSlsSupportLib
slsSupportLib
pthread
rt
)
set_target_properties(testSlsSupportLib PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
#TODO! Move to automatic test discovery
add_test(test-slsSupportLib ${CMAKE_BINARY_DIR}/bin/testSlsSupportLib)
target_sources(tests PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/test-ClientInterface.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-CmdLineParser.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-container_utils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-network_utils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-string_utils.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test-Timer.cpp
)

23
tests/CMakeLists.txt Normal file
View File

@ -0,0 +1,23 @@
include_directories(
${PROJECT_SOURCE_DIR}/catch
)
set(SLS_TEST_SOURCES
test.cpp
)
add_executable(tests ${SLS_TEST_SOURCES})
target_link_libraries(tests
slsProjectOptions
slsProjectWarnings
slsSupportLib
slsDetectorShared
slsReceiverShared
pthread
rt
)
set_target_properties(tests PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
# #TODO! Move to automatic test discovery
# add_test(test ${CMAKE_BINARY_DIR}/bin/testSlsReceiver)

3
tests/test.cpp Normal file
View File

@ -0,0 +1,3 @@
// tests-main.cpp
#define CATCH_CONFIG_MAIN
#include "catch.hpp"