Fix test for ReplayH5Reader

This commit is contained in:
2020-05-25 13:59:24 +02:00
parent 0c05a7dd5c
commit 56d7ffd322
+28 -26
View File
@@ -10,24 +10,23 @@ TEST(ReplayH5Reader, basic_interaction)
auto root_folder = ".";
auto device_name = "fast_device";
size_t pulse_id = 65;
uint16_t source_id = 1;
uint16_t source_id = 124;
// This 2 must be compatible by design.
BufferH5Writer writer(root_folder, device_name);
ReplayH5Reader reader(root_folder, device_name, source_id, pulse_id);
ReplayH5Reader reader(root_folder, device_name);
ModuleFrame w_metadata;
ReplayModuleFrameBuffer r_metadata;
ModuleFrame* r_metadata;
auto w_frame_buffer = make_unique<uint16_t[]>(MODULE_N_PIXELS);
auto r_frame_buffer = make_unique<uint16_t[]>(
MODULE_N_PIXELS * REPLAY_READ_BUFFER_SIZE);
char* r_frame_buffer;
// Setup test values.
w_metadata.pulse_id = pulse_id;
w_metadata.frame_index = 2;
w_metadata.daq_rec = 3;
w_metadata.n_received_packets = 128;
w_metadata.module_id = 4;
w_metadata.module_id = source_id;
for (size_t i=0; i<MODULE_N_PIXELS; i++) {
w_frame_buffer[i] = i % 100;
@@ -38,24 +37,13 @@ TEST(ReplayH5Reader, basic_interaction)
writer.write(&w_metadata, (char*)&(w_frame_buffer[0]));
writer.close_file();
reader.get_buffer(1, &r_metadata, (char *) &(r_frame_buffer[0]));
reader.get_buffer(pulse_id, r_metadata, r_frame_buffer);
ASSERT_EQ(r_metadata.n_frames, 65);
ASSERT_EQ(r_metadata.module_id, source_id);
ASSERT_EQ(r_metadata.data_n_bytes, MODULE_N_BYTES * 65);
for (int i=0; i<pulse_id-1; i++) {
ASSERT_EQ(r_metadata.pulse_id[i], i+1);
ASSERT_EQ(r_metadata.is_frame_present[i], false);
ASSERT_EQ(r_metadata.is_good_frame[i], false);
}
// -1 due to 0 based indexing.
ASSERT_EQ(r_metadata.pulse_id[pulse_id-1], pulse_id);
ASSERT_EQ(r_metadata.frame_index[pulse_id-1], 2);
ASSERT_EQ(r_metadata.daq_rec[pulse_id-1], 3);
ASSERT_EQ(r_metadata.is_frame_present[pulse_id-1], true);
ASSERT_EQ(r_metadata.is_good_frame[pulse_id-1], true);
ASSERT_EQ(r_metadata->pulse_id, pulse_id);
ASSERT_EQ(r_metadata->module_id, source_id);
ASSERT_EQ(r_metadata->frame_index, 2);
ASSERT_EQ(r_metadata->daq_rec, 3);
ASSERT_EQ(r_metadata->n_received_packets, 128);
// Data as well.
auto offset = MODULE_N_PIXELS * (pulse_id-1);
@@ -63,6 +51,22 @@ TEST(ReplayH5Reader, basic_interaction)
w_frame_buffer[i] = r_frame_buffer[offset + i];
}
for (uint64_t i_pulse=0; i_pulse<100; i_pulse++) {
// Verify that all but the saved pulse_id are zero.
if (i_pulse == pulse_id) {
continue;
}
reader.get_buffer(i_pulse, r_metadata, r_frame_buffer);
ASSERT_EQ(r_metadata->pulse_id, 0);
ASSERT_EQ(r_metadata->frame_index, 0);
ASSERT_EQ(r_metadata->daq_rec, 0);
ASSERT_EQ(r_metadata->n_received_packets, 0);
ASSERT_EQ(r_metadata->module_id, 0);
}
reader.close_file();
}
@@ -75,9 +79,7 @@ TEST(ReplayH5Reader, missing_frame)
// This 2 must be compatible by design.
BufferH5Writer writer(root_folder, device_name);
ReplayH5Reader reader(root_folder, device_name, 1, pulse_id);
ReplayH5Reader reader(root_folder, device_name);
ModuleFrame w_metadata;
ModuleFrame r_metadata;