Add basic interaction test for WriterModule

This commit is contained in:
2020-04-07 13:13:46 +02:00
parent 2c9987d33f
commit 7ff6e59bf7
+45 -3
View File
@@ -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());
}