JFJochFullIntegrationTest: Add cancel integration test with summation of 100

This commit is contained in:
2023-05-08 13:25:09 +02:00
parent e8e5f50b21
commit 00a605889a

View File

@@ -598,6 +598,87 @@ TEST_CASE("JFJochIntegrationTest_Cancel", "[JFJochReceiver]") {
writer_server->Shutdown();
}
TEST_CASE("JFJochIntegrationTest_Cancel_Summation100", "[JFJochReceiver]") {
Logger logger("JFJochIntegrationTest_Cancel_Summation100");
ZMQContext zmq_context;
RegisterHDF5Filter();
int64_t nimages = 5;
int64_t ndatastream = 2;
int64_t nmodules = 4;
JFJochServices services(logger);
JFJochStateMachine state_machine(services, logger);
state_machine.AddDetectorSetup(DetectorGeometry(ndatastream * nmodules, 2, 8, 36));
state_machine.NotThreadSafe_Experiment().DataStreams(ndatastream).Summation(200);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0);
services.Writer("unix:writer_test", "inproc://#1").Receiver("unix:fpga_receiver_test");
logger.Verbose(true);
std::vector<uint16_t> image(RAW_MODULE_SIZE);
std::vector<std::unique_ptr<MockAcquisitionDevice>> aq_devices;
for (int i = 0; i < ndatastream; i++) {
auto *test = new MockAcquisitionDevice(i, 1024);
test->EnableLogging(&logger);
for (int m = 0; m < state_machine.NotThreadSafe_Experiment().GetModulesNum(i); m++) {
for (int frame = 1; frame <= 2*100+5; frame++)
test->AddModule(frame, m, image.data());
}
aq_devices.emplace_back(test);
}
std::vector<AcquisitionDevice *> tmp_devices;
for (const auto &i: aq_devices)
tmp_devices.emplace_back(i.get());
ZMQImagePusher pusher(zmq_context, {"inproc://#1"});
JFJochReceiverService fpga_receiver(tmp_devices, logger, pusher);
JFJochWriterService writer(zmq_context, logger);
auto fpga_receiver_server = gRPCServer("unix:fpga_receiver_test", fpga_receiver);
auto writer_server = gRPCServer("unix:writer_test", writer);
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
JFJochProtoBuf::DatasetSettings setup;
setup.set_ntrigger(1);
setup.set_detector_distance_mm(100);
setup.set_file_prefix("integration_test_sum100");
setup.set_images_per_trigger(2 * nimages);
setup.set_photon_energy_kev(12.4);
setup.set_summation(100);
setup.set_data_file_count(1);
REQUIRE_NOTHROW(state_machine.Start(setup));
logger.Info("Started measurement");
logger.Info("Cancelling");
REQUIRE_NOTHROW(state_machine.Cancel());
REQUIRE_NOTHROW(state_machine.Stop());
logger.Info("Stopped measurement");
auto tmp = state_machine.GetMeasurementStatistics();
REQUIRE(tmp.has_value());
auto statistics = tmp.value();
CHECK(statistics.collection_efficiency() == 0.205f);
CHECK(statistics.images_collected() == 3);
CHECK(statistics.has_images_written());
CHECK(statistics.images_written() == 3);
CHECK(statistics.max_image_number_sent() == 2);
CHECK(statistics.cancelled());
fpga_receiver_server->Shutdown();
writer_server->Shutdown();
}
TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview", "[JFJochReceiver]") {
Logger logger("JFJochIntegrationTest_ZMQ_with_preview");