mirror of
https://github.com/paulscherrerinstitute/sf_daq_buffer.git
synced 2026-04-23 07:33:11 +02:00
Add basic interaction test for WriterModule
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
#include "gtest/gtest.h"
|
||||
#include "H5WriteModule.hpp"
|
||||
|
||||
#include <thread>
|
||||
#include <string>
|
||||
#include "RingBuffer.hpp"
|
||||
|
||||
@@ -9,14 +8,57 @@
|
||||
|
||||
using namespace std;
|
||||
|
||||
void generate_frames(RingBuffer& ring_buffer)
|
||||
// Shape * 2 bytes/value (uint16_t)
|
||||
size_t image_n_bytes = 1024*2*2;
|
||||
|
||||
void generate_frames(RingBuffer& ring_buffer, int n_frames)
|
||||
{
|
||||
// TODO: FIll the ring_buffer with test data.
|
||||
size_t y_length = 2;
|
||||
size_t x_length = 1024;
|
||||
|
||||
for (int i_frame=0; i_frame < n_frames; i_frame++) {
|
||||
|
||||
FrameMetadata metadata = {
|
||||
0, // size_t buffer_slot_index;
|
||||
0, // size_t frame_bytes_size;
|
||||
static_cast<uint64_t>(i_frame), // uint64_t frame_index;
|
||||
"little", // std::string endianness;
|
||||
"uint16", //std::string type;
|
||||
{y_length, x_length} // std::vector<size_t> frame_shape;
|
||||
};
|
||||
|
||||
auto ptr_metadata = make_shared<FrameMetadata>(metadata);
|
||||
auto ptr_buffer = ring_buffer.reserve(ptr_metadata);
|
||||
|
||||
for (size_t y=0; y<y_length; y++) {
|
||||
for (size_t x=0; x<x_length; x++) {
|
||||
// Buffer offset y*x* 2 (uint16)
|
||||
char* value_ptr = ptr_buffer + y*x*2;
|
||||
*value_ptr = static_cast<uint16_t>(i_frame);
|
||||
}
|
||||
}
|
||||
|
||||
ring_buffer.commit(ptr_metadata);
|
||||
}
|
||||
}
|
||||
|
||||
TEST(H5WriteModule, basic_interaction)
|
||||
{
|
||||
TestH5Format format("start_dataset");
|
||||
|
||||
RingBuffer ring_buffer(10);
|
||||
ring_buffer.initialize(image_n_bytes);
|
||||
|
||||
H5WriteModule h5_write_module(ring_buffer, {}, format);
|
||||
|
||||
h5_write_module.start_writing("ignore_out.h5", 5);
|
||||
generate_frames(ring_buffer, 5);
|
||||
|
||||
this_thread::sleep_for(chrono::milliseconds(100));
|
||||
|
||||
// Stop should never throw an exception.
|
||||
h5_write_module.stop_writing();
|
||||
EXPECT_NO_THROW(h5_write_module.stop_writing());
|
||||
|
||||
EXPECT_TRUE(ring_buffer.is_empty());
|
||||
}
|
||||
Reference in New Issue
Block a user