From 3c472ce5ed0bbb63a45f605645e77b055a0cff7c Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Mon, 20 Apr 2020 15:24:02 +0200 Subject: [PATCH] Add SWMR test --- core-buffer/test/test_FastH5Writer.cpp | 52 ++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/core-buffer/test/test_FastH5Writer.cpp b/core-buffer/test/test_FastH5Writer.cpp index e8c2c75..f55483f 100644 --- a/core-buffer/test/test_FastH5Writer.cpp +++ b/core-buffer/test/test_FastH5Writer.cpp @@ -86,3 +86,55 @@ TEST(FastH5Writer, basic_interaction) received_packets_buffer.get(), H5::PredType::NATIVE_UINT16); EXPECT_EQ(received_packets_buffer[file_frame_index], 128); } + +TEST(FastH5Writer, SWMR) +{ + auto root_folder = "."; + auto device_name = "fast_device"; + size_t pulse_id = 0; + + auto output_buffer = make_unique(512 * 1024 * 2); + auto image_buffer = make_unique(1000*512*1024); + auto image_ptr = (uint16_t*)(image_buffer.get()); + + for (size_t i=0; i<512*1024; i++) { + uint16_t* image_ptr = (uint16_t*)(output_buffer.get()); + image_ptr[i] = 99; + } + + UdpFrameMetadata metadata; + metadata.pulse_id = pulse_id; + metadata.frame_index = 2; + metadata.daq_rec = 3; + metadata.n_recv_packets = 128; + + FastH5Writer writer( + BufferUtils::FILE_MOD, 512, 1024, device_name, root_folder); + + writer.add_scalar_metadata("pulse_id"); + writer.add_scalar_metadata("frame_id"); + writer.add_scalar_metadata("daq_rec"); + writer.add_scalar_metadata("received_packets"); + + writer.set_pulse_id(pulse_id); + + auto filename = BufferUtils::get_filename( + root_folder, device_name, pulse_id); + auto file_frame_index = BufferUtils::get_file_frame_index(pulse_id); + + H5::H5File input_file(filename, H5F_ACC_RDONLY | H5F_ACC_SWMR_READ); + + auto image_dataset = input_file.openDataSet("image"); + + image_dataset.read( + image_buffer.get(), H5::PredType::NATIVE_UINT16); + + EXPECT_EQ(image_ptr[0], 0); + + writer.write_data(output_buffer.get()); + + image_dataset.read( + image_buffer.get(), H5::PredType::NATIVE_UINT16); + + EXPECT_EQ(image_ptr[0], 99); +} \ No newline at end of file