Improvements before MAX IV test

This commit is contained in:
2024-04-25 20:11:58 +02:00
parent 2c8e1fd83d
commit ea70b27e85
80 changed files with 1835 additions and 1781 deletions
+85 -67
View File
@@ -69,12 +69,12 @@ TEST_CASE("CBORSerialize_Start", "[CBOR]") {
REQUIRE_NOTHROW(serializer.SerializeSequenceStart(message));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::START);
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::START);
REQUIRE(deserialized->start_message);
StartMessage &output_message = *deserialized->start_message;
StartMessage output_message;
REQUIRE_NOTHROW(output_message = deserializer.GetStartMessage());
CHECK(output_message.images_per_file == message.images_per_file);
CHECK(output_message.detector_distance == Approx(message.detector_distance));
CHECK(output_message.beam_center_x == Approx(message.beam_center_x));
@@ -166,12 +166,12 @@ TEST_CASE("CBORSerialize_Start_PixelMask", "[CBOR]") {
message.AddPixelMask(image_mask);
REQUIRE_NOTHROW(serializer.SerializeSequenceStart(message));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::START);
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::START);
REQUIRE(deserialized->start_message);
StartMessage &output_message = *deserialized->start_message;
StartMessage output_message;
REQUIRE_NOTHROW(output_message = deserializer.GetStartMessage());
REQUIRE(output_message.pixel_mask.size() == 1);
CHECK(!output_message.pixel_mask[0].pixel_is_float);
CHECK(output_message.pixel_mask[0].xpixel == 456);
@@ -205,12 +205,12 @@ TEST_CASE("CBORSerialize_Calibration", "[CBOR]") {
REQUIRE_NOTHROW(serializer.SerializeCalibration(image1));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::CALIBRATION);
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::CALIBRATION);
REQUIRE(deserialized->calibration);
CompressedImage &output_message = *deserialized->calibration;
CompressedImage output_message;
REQUIRE_NOTHROW(output_message = deserializer.GetCalibrationImage());
CHECK(output_message.pixel_is_float);
CHECK(output_message.xpixel == 16);
CHECK(output_message.ypixel == 16);
@@ -234,13 +234,13 @@ TEST_CASE("CBORSerialize_End", "[CBOR]") {
};
REQUIRE_NOTHROW(serializer.SerializeSequenceEnd(message));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::END);
EndMessage output_message{};
REQUIRE_NOTHROW(output_message = deserializer.GetEndMessage());
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::END);
REQUIRE(deserialized->end_message);
EndMessage &output_message = *deserialized->end_message;
REQUIRE(output_message.max_receiver_delay == message.max_receiver_delay);
REQUIRE(output_message.max_image_number == message.max_image_number);
REQUIRE(output_message.images_collected_count == message.images_collected_count);
@@ -255,7 +255,7 @@ TEST_CASE("CBORSerialize_End", "[CBOR]") {
TEST_CASE("CBORSerialize_End_RadIntResult", "[CBOR]") {
std::vector<uint8_t> buffer(8*1024*1024);
CBORStream2Serializer serializer(buffer.data(), buffer.size());
CBORStream2Serializer serializer(buffer.data(), buffer.size());
EndMessage message {
.max_image_number = 57789,
@@ -271,12 +271,11 @@ CBORStream2Serializer serializer(buffer.data(), buffer.size());
REQUIRE_NOTHROW(serializer.SerializeSequenceEnd(message));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::END);
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::END);
EndMessage &output_message = *deserialized->end_message;
EndMessage output_message{};
REQUIRE_NOTHROW(output_message = deserializer.GetEndMessage());
REQUIRE(output_message.az_int_result.size() == 2);
REQUIRE(output_message.az_int_result.contains("avg"));
REQUIRE(output_message.az_int_result.contains("file0"));
@@ -303,12 +302,12 @@ TEST_CASE("CBORSerialize_End_ADUHistogram", "[CBOR]") {
REQUIRE_NOTHROW(serializer.SerializeSequenceEnd(message));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::END);
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::END);
REQUIRE(deserialized->end_message);
EndMessage &output_message = *deserialized->end_message;
EndMessage output_message{};
REQUIRE_NOTHROW(output_message = deserializer.GetEndMessage());
REQUIRE(output_message.adu_histogram.size() == 2);
REQUIRE(output_message.adu_histogram.contains("avg"));
REQUIRE(output_message.adu_histogram.contains("file0"));
@@ -317,7 +316,6 @@ TEST_CASE("CBORSerialize_End_ADUHistogram", "[CBOR]") {
CHECK(message.adu_histogram_bin_width == output_message.adu_histogram_bin_width);
}
TEST_CASE("CBORSerialize_Image", "[CBOR]") {
std::vector<uint8_t> buffer(8*1024*1024);
CBORStream2Serializer serializer(buffer.data(), buffer.size());
@@ -347,6 +345,9 @@ TEST_CASE("CBORSerialize_Image", "[CBOR]") {
.spots = spots,
.bkg_estimate = 12.345f,
.indexing_result = 1,
.corr_beam_x_pxl = -123.4,
.corr_beam_y_pxl = -125.4,
.corr_det_dist_mm = 12345.0,
.adu_histogram = {3, 4, 5, 8},
.timestamp = 1ul<<27 | 1ul <<35,
.exptime = 1000,
@@ -361,15 +362,17 @@ TEST_CASE("CBORSerialize_Image", "[CBOR]") {
.storage_cell = 0xF,
.xfel_pulse_id = UINT64_MAX - 5678,
.xfel_event_code = UINT64_MAX - 123,
.original_number = 12789
};
REQUIRE_NOTHROW(serializer.SerializeImage(message));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::IMAGE);
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::IMAGE);
REQUIRE(deserialized->data_message);
DataMessage &image_array = *deserialized->data_message;
auto image_array = deserializer.GetDataMessage();
REQUIRE(image_array.image.algorithm == CompressionAlgorithm::NO_COMPRESSION);
REQUIRE(image_array.image.xpixel == 256);
REQUIRE(image_array.image.ypixel == 2);
@@ -398,11 +401,15 @@ TEST_CASE("CBORSerialize_Image", "[CBOR]") {
REQUIRE(image_array.bkg_estimate == message.bkg_estimate);
REQUIRE(image_array.image_collection_efficiency == message.image_collection_efficiency);
REQUIRE(image_array.user_data == message.user_data);
REQUIRE(image_array.original_number == message.original_number);
REQUIRE(image_array.corr_beam_x_pxl == message.corr_beam_x_pxl);
REQUIRE(image_array.corr_beam_y_pxl == message.corr_beam_y_pxl);
REQUIRE(image_array.corr_det_dist_mm == message.corr_det_dist_mm);
}
TEST_CASE("CBORSerialize_Image_2", "[CBOR]") {
std::vector<uint8_t> buffer(8*1024*1024);
CBORStream2Serializer serializer(buffer.data(), buffer.size());
CBORStream2Serializer serializer(buffer.data(), buffer.size());
std::vector<SpotToSave> spots;
@@ -431,11 +438,12 @@ CBORStream2Serializer serializer(buffer.data(), buffer.size());
REQUIRE_NOTHROW(serializer.SerializeImage(message));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::IMAGE);
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::IMAGE);
REQUIRE(deserialized->data_message);
DataMessage &image_array = *deserialized->data_message;
auto image_array = deserializer.GetDataMessage();
REQUIRE(image_array.image.algorithm == CompressionAlgorithm::NO_COMPRESSION);
REQUIRE(image_array.image.xpixel == 1024);
REQUIRE(image_array.image.ypixel == 512);
@@ -447,6 +455,10 @@ CBORStream2Serializer serializer(buffer.data(), buffer.size());
REQUIRE(image_array.indexing_result == message.indexing_result);
REQUIRE(image_array.number == 480);
REQUIRE(memcmp(image_array.image.data, test.data(), test.size()) == 0);
REQUIRE(!image_array.original_number);
REQUIRE(!image_array.corr_det_dist_mm);
REQUIRE(!image_array.corr_beam_x_pxl);
REQUIRE(!image_array.corr_beam_y_pxl);
}
TEST_CASE("CBORSerialize_Image_Float", "[CBOR]") {
@@ -480,11 +492,12 @@ TEST_CASE("CBORSerialize_Image_Float", "[CBOR]") {
REQUIRE_NOTHROW(serializer.SerializeImage(message));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::IMAGE);
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::IMAGE);
REQUIRE(deserialized->data_message);
DataMessage &image_array = *deserialized->data_message;
auto image_array = deserializer.GetDataMessage();
REQUIRE(image_array.image.algorithm == CompressionAlgorithm::NO_COMPRESSION);
REQUIRE(image_array.image.xpixel == 1024);
REQUIRE(image_array.image.ypixel == 512);
@@ -500,7 +513,7 @@ TEST_CASE("CBORSerialize_Image_Float", "[CBOR]") {
TEST_CASE("CBORSerialize_Image_Compressed", "[CBOR]") {
std::vector<uint8_t> buffer(8*1024*1024);
CBORStream2Serializer serializer(buffer.data(), buffer.size());
CBORStream2Serializer serializer(buffer.data(), buffer.size());
std::vector<SpotToSave> spots;
@@ -528,11 +541,12 @@ CBORStream2Serializer serializer(buffer.data(), buffer.size());
REQUIRE_NOTHROW(serializer.SerializeImage(message));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::IMAGE);
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::IMAGE);
REQUIRE(deserialized->data_message);
DataMessage &image_array = *deserialized->data_message;
auto image_array = deserializer.GetDataMessage();
REQUIRE(image_array.image.algorithm == CompressionAlgorithm::BSHUF_LZ4);
REQUIRE(image_array.image.xpixel == 256);
REQUIRE(image_array.image.ypixel == 2);
@@ -571,11 +585,12 @@ TEST_CASE("CBORSerialize_Image_Rad_Int_Profile", "[CBOR]") {
REQUIRE_NOTHROW(serializer.SerializeImage(message));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::IMAGE);
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::IMAGE);
REQUIRE(deserialized->data_message);
DataMessage &image_array = *deserialized->data_message;
auto image_array = deserializer.GetDataMessage();
REQUIRE(image_array.number == 789);
REQUIRE(image_array.image.size == test.size());
@@ -613,11 +628,12 @@ TEST_CASE("CBORSerialize_Image_Spots", "[CBOR]") {
REQUIRE_NOTHROW(serializer.SerializeImage(message));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::IMAGE);
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::IMAGE);
REQUIRE(deserialized->data_message);
DataMessage &image_array = *deserialized->data_message;
auto image_array = deserializer.GetDataMessage();
REQUIRE(image_array.number == 789);
REQUIRE(image_array.image.size == test.size());
@@ -662,11 +678,12 @@ TEST_CASE("CBORSerialize_Image_ROI", "[CBOR]") {
REQUIRE_NOTHROW(serializer.SerializeImage(message));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::IMAGE);
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::IMAGE);
REQUIRE(deserialized->data_message);
DataMessage &image_array = *deserialized->data_message;
auto image_array = deserializer.GetDataMessage();
REQUIRE(image_array.number == 789);
REQUIRE(image_array.roi.size() == 2);
@@ -712,12 +729,13 @@ TEST_CASE("CBORSerialize_Image_Append", "[CBOR]") {
memcpy(buffer.data() + serializer.GetImageAppendOffset(), test.data(), 512 * 1024);
//REQUIRE_THROWS(serializer.AppendImage(16*1024*1024));
REQUIRE_NOTHROW(serializer.AppendImage(512 * 1024));
CBORStream2Deserializer deserializer;
REQUIRE_NOTHROW(deserializer.Process(buffer.data(), serializer.GetBufferSize()));
REQUIRE(deserializer.GetType() == CBORStream2Deserializer::Type::IMAGE);
auto deserialized = CBORStream2Deserialize(buffer.data(), serializer.GetBufferSize());
REQUIRE(deserialized);
REQUIRE(deserialized->msg_type == CBORImageType::IMAGE);
REQUIRE(deserialized->data_message);
DataMessage &image_array = *deserialized->data_message;
auto image_array = deserializer.GetDataMessage();
REQUIRE(image_array.image.algorithm == CompressionAlgorithm::NO_COMPRESSION);
REQUIRE(image_array.image.xpixel == 1024);
REQUIRE(image_array.image.ypixel == 512);