JFJochFullIntegrationTest: Add cancel integration test with summation of 100
This commit is contained in:
@@ -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");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user