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

@@ -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

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