jfjoch_writer: Not dependent on gRPC

This commit is contained in:
2023-11-15 10:40:03 +01:00
parent 049dffe91e
commit e8d576a563
20 changed files with 110 additions and 609 deletions
+41 -69
View File
@@ -1,11 +1,11 @@
// Copyright (2019-2023) Paul Scherrer Institute
#include <catch2/catch.hpp>
#include <jfjoch.pb.h>
#include "../grpc/gRPCServer_Template.h"
#include "../broker/JFJochStateMachine.h"
#include "../writer/JFJochWriterService.h"
#include "../receiver/JFJochReceiverService.h"
#include "../writer/StreamWriter.h"
#include "FPGAUnitTest.h"
#include "../acquisition_device/MockAcquisitionDevice.h"
#include "../common/ZMQImagePusher.h"
@@ -40,15 +40,14 @@ TEST_CASE("JFJochIntegrationTest_ZMQ", "[JFJochReceiver]") {
state_machine.NotThreadSafe_Experiment().DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0);
services.Writer("unix:writer_test", "inproc://#1").Receiver(&fpga_receiver);
services.Receiver(&fpga_receiver);
logger.Verbose(true);
std::vector<uint16_t> image(RAW_MODULE_SIZE);
JFJochWriterService writer(zmq_context, logger);
auto writer_server = gRPCServer("unix:writer_test", writer);
StreamWriter writer(zmq_context, logger, "inproc://#1");
auto writer_future = writer.RunFuture();
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -95,10 +94,9 @@ TEST_CASE("JFJochIntegrationTest_ZMQ", "[JFJochReceiver]") {
REQUIRE(statistics.detector_width() == 2068);
REQUIRE(statistics.detector_height() == 2164);
REQUIRE(statistics.detector_pixel_depth() == 2);
writer_server->Shutdown();
writer_future.get();
}
TEST_CASE("JFJochIntegrationTest_ZMQ_save_calibration", "[JFJochReceiver]") {
Logger logger("JFJochIntegrationTest_ZMQ_save_calibration");
ZMQContext zmq_context;
@@ -127,15 +125,14 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_save_calibration", "[JFJochReceiver]") {
state_machine.NotThreadSafe_Experiment().DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0);
services.Writer("unix:writer_test", "inproc://#1").Receiver(&fpga_receiver);
services.Receiver(&fpga_receiver);
logger.Verbose(true);
std::vector<uint16_t> image(RAW_MODULE_SIZE);;
JFJochWriterService writer(zmq_context, logger);
auto writer_server = gRPCServer("unix:writer_test", writer);
StreamWriter writer(zmq_context, logger, "inproc://#1");
auto writer_future = writer.RunFuture();
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -183,7 +180,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_save_calibration", "[JFJochReceiver]") {
REQUIRE(statistics.detector_width() == 2068);
REQUIRE(statistics.detector_height() == 2164);
REQUIRE(statistics.detector_pixel_depth() == 2);
writer_server->Shutdown();
REQUIRE_NOTHROW(writer_future.get());
}
TEST_CASE("JFJochIntegrationTest_ZMQ_2DataStreams_4Devices", "[JFJochReceiver]") {
@@ -215,15 +212,14 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_2DataStreams_4Devices", "[JFJochReceiver]")
state_machine.NotThreadSafe_Experiment().DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0);
services.Writer("unix:writer_test", "inproc://#1").Receiver(&fpga_receiver);
services.Receiver(&fpga_receiver);
logger.Verbose(true);
std::vector<uint16_t> image(RAW_MODULE_SIZE);
JFJochWriterService writer(zmq_context, logger);
auto writer_server = gRPCServer("unix:writer_test", writer);
StreamWriter writer(zmq_context, logger, "inproc://#1");
auto writer_future = writer.RunFuture();
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -271,7 +267,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_2DataStreams_4Devices", "[JFJochReceiver]")
REQUIRE(statistics.detector_height() == 2164);
REQUIRE(statistics.detector_pixel_depth() == 2);
writer_server->Shutdown();
REQUIRE_NOTHROW(writer_future.get());
}
TEST_CASE("JFJochIntegrationTest_ZMQ_RAW", "[JFJochReceiver]") {
@@ -292,7 +288,6 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_RAW", "[JFJochReceiver]") {
state_machine.NotThreadSafe_Experiment().DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().Mode(DetectorMode::Conversion);
services.Writer("unix:writer_test", "inproc://#1");
logger.Verbose(true);
@@ -309,9 +304,8 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_RAW", "[JFJochReceiver]") {
JFJochReceiverService fpga_receiver(aq_devices, logger, pusher);
services.Receiver(&fpga_receiver);
JFJochWriterService writer(zmq_context, logger);
auto writer_server = gRPCServer("unix:writer_test", writer);
StreamWriter writer(zmq_context, logger, "inproc://#1");
auto writer_future = writer.RunFuture();
JFJochProtoBuf::DetectorSettings detector_settings;
detector_settings.set_frame_time_us(500);
@@ -362,8 +356,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_RAW", "[JFJochReceiver]") {
REQUIRE(statistics.detector_height() == 8 * 512);
REQUIRE(statistics.detector_pixel_depth() == 2);
writer_server->Shutdown();
REQUIRE_NOTHROW(writer_future.get());
}
@@ -383,10 +376,6 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_3Writers", "[JFJochReceiver]") {
state_machine.NotThreadSafe_Experiment().DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0);
services
.Writer("unix:writer_test_0", "inproc://#0")
.Writer("unix:writer_test_1", "inproc://#1")
.Writer("unix:writer_test_2", "inproc://#2");
logger.Verbose(true);
@@ -403,13 +392,14 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_3Writers", "[JFJochReceiver]") {
JFJochReceiverService fpga_receiver(aq_devices, logger, pusher);
services.Receiver(&fpga_receiver);
JFJochWriterService writer_0(zmq_context, logger);
JFJochWriterService writer_1(zmq_context, logger);
JFJochWriterService writer_2(zmq_context, logger);
StreamWriter writer_0(zmq_context, logger, "inproc://#0");
auto writer_0_future = writer_0.RunFuture();
auto writer_server_0 = gRPCServer("unix:writer_test_0", writer_0);
auto writer_server_1 = gRPCServer("unix:writer_test_1", writer_1);
auto writer_server_2 = gRPCServer("unix:writer_test_2", writer_2);
StreamWriter writer_1(zmq_context, logger, "inproc://#1");
auto writer_1_future = writer_1.RunFuture();
StreamWriter writer_2(zmq_context, logger, "inproc://#2");
auto writer_2_future = writer_2.RunFuture();
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -451,13 +441,11 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_3Writers", "[JFJochReceiver]") {
REQUIRE(statistics.collection_efficiency() == 1.0);
REQUIRE(statistics.images_collected() == nimages);
writer_server_0->Shutdown();
writer_server_1->Shutdown();
writer_server_2->Shutdown();
REQUIRE_NOTHROW(writer_0_future.get());
REQUIRE_NOTHROW(writer_1_future.get());
REQUIRE_NOTHROW(writer_2_future.get());
}
TEST_CASE("JFJochIntegrationTest_Cancel", "[JFJochReceiver]") {
Logger logger("JFJochIntegrationTest_Cancel");
@@ -475,7 +463,6 @@ TEST_CASE("JFJochIntegrationTest_Cancel", "[JFJochReceiver]") {
state_machine.NotThreadSafe_Experiment().DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0);
services.Writer("unix:writer_test", "inproc://#1");
logger.Verbose(true);
@@ -497,9 +484,8 @@ TEST_CASE("JFJochIntegrationTest_Cancel", "[JFJochReceiver]") {
JFJochReceiverService fpga_receiver(aq_devices, logger, pusher);
services.Receiver(&fpga_receiver);
JFJochWriterService writer(zmq_context, logger);
auto writer_server = gRPCServer("unix:writer_test", writer);
StreamWriter writer(zmq_context, logger, "inproc://#1");
auto writer_future = writer.RunFuture();
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -529,8 +515,7 @@ TEST_CASE("JFJochIntegrationTest_Cancel", "[JFJochReceiver]") {
REQUIRE(statistics.max_image_number_sent() == 4);
REQUIRE(statistics.cancelled());
writer_server->Shutdown();
REQUIRE_NOTHROW(writer_future.get());
}
TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview", "[JFJochReceiver]") {
@@ -549,7 +534,6 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview", "[JFJochReceiver]") {
state_machine.NotThreadSafe_Experiment().DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0).PreviewPeriod(
5ms);
services.Writer("unix:writer_test", "inproc://#1");
logger.Verbose(true);
@@ -573,7 +557,8 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview", "[JFJochReceiver]") {
JFJochReceiverService fpga_receiver(aq_devices, logger, pusher);
services.Receiver(&fpga_receiver);
JFJochWriterService writer(zmq_context, logger);
StreamWriter writer(zmq_context, logger, "inproc://#1");
auto writer_future = writer.RunFuture();
ZMQPreviewPublisher preview(zmq_context, "inproc://#2");
fpga_receiver.PreviewPublisher(&preview).NumThreads(1);
@@ -582,8 +567,6 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview", "[JFJochReceiver]") {
REQUIRE_NOTHROW(rcv_preview_socket.Connect("inproc://#2"));
rcv_preview_socket.SubscribeAll();
auto writer_server = gRPCServer("unix:writer_test", writer);
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -633,8 +616,7 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview", "[JFJochReceiver]") {
REQUIRE(statistics.collection_efficiency() == 1.0);
REQUIRE(statistics.images_collected() == 5);
writer_server->Shutdown();
REQUIRE_NOTHROW(writer_future.get());
}
TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview_no_writer", "[JFJochReceiver]") {
@@ -653,7 +635,6 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview_no_writer", "[JFJochReceiver]"
state_machine.NotThreadSafe_Experiment().DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0).PreviewPeriod(
5ms);
services.Writer("unix:writer_test", "inproc://#1");
logger.Verbose(true);
@@ -676,8 +657,6 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview_no_writer", "[JFJochReceiver]"
JFJochReceiverService fpga_receiver(aq_devices, logger, pusher);
services.Receiver(&fpga_receiver);
JFJochWriterService writer(zmq_context, logger);
ZMQPreviewPublisher preview(zmq_context, "inproc://#2");
fpga_receiver.PreviewPublisher(&preview).NumThreads(1);
@@ -685,8 +664,6 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview_no_writer", "[JFJochReceiver]"
REQUIRE_NOTHROW(rcv_preview_socket.Connect("inproc://#2"));
rcv_preview_socket.SubscribeAll();
auto writer_server = gRPCServer("unix:writer_test", writer);
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -734,8 +711,6 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview_no_writer", "[JFJochReceiver]"
REQUIRE(statistics.collection_efficiency() == 1.0);
REQUIRE(statistics.images_collected() == 5);
writer_server->Shutdown();
}
TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot", "[JFJochReceiver]") {
@@ -753,7 +728,6 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot", "[JFJochReceiver]") {
state_machine.AddDetectorSetup(DetectorGeometry(ndatastream * nmodules, 2, 8, 36));
state_machine.NotThreadSafe_Experiment().DataStreams(ndatastream);
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0);
services.Writer("unix:writer_test", "inproc://#1");
logger.Verbose(true);
@@ -796,9 +770,8 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot", "[JFJochReceiver]") {
JFJochReceiverService fpga_receiver(aq_devices, logger, pusher);
services.Receiver(&fpga_receiver);
JFJochWriterService writer(zmq_context, logger);
auto writer_server = gRPCServer("unix:writer_test", writer);
StreamWriter writer(zmq_context, logger, "inproc://#1");
auto writer_future = writer.RunFuture();
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -842,8 +815,8 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot", "[JFJochReceiver]") {
REQUIRE(statistics.collection_efficiency() == 1.0);
REQUIRE(statistics.images_collected() == 1);
writer_server->Shutdown();
REQUIRE_NOTHROW(writer_future.get());
}
/*
TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_spot_and_index", "[JFJochReceiver]") {
@@ -979,7 +952,6 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_rad_int", "[JFJochReceiver]") {
state_machine.NotThreadSafe_Experiment().PedestalG0Frames(0).PedestalG1Frames(0).PedestalG2Frames(0);
state_machine.NotThreadSafe_Experiment().LowQForRadialInt_recipA(0.5).HighQForRadialInt_recipA(3.5)
.QSpacingForRadialInt_recipA(1.0);
services.Writer("unix:writer_test", "inproc://#1");
logger.Verbose(true);
@@ -1027,8 +999,8 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_rad_int", "[JFJochReceiver]") {
JFJochReceiverService fpga_receiver(aq_devices, logger, pusher);
services.Receiver(&fpga_receiver);
JFJochWriterService writer(zmq_context, logger);
auto writer_server = gRPCServer("unix:writer_test", writer);
StreamWriter writer(zmq_context, logger, "inproc://#1");
auto writer_future = writer.RunFuture();
REQUIRE_NOTHROW(state_machine.Initialize());
logger.Info("Initialized");
@@ -1070,8 +1042,8 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_lysozyme_rad_int", "[JFJochReceiver]") {
CHECK(plot_map[0].title() == "dataset");
CHECK(plot_map[0].plot().x_size() == 3);
writer_server->Shutdown();
REQUIRE_NOTHROW(writer_future.get());
}
/*