version 1.0.0-rc.26
This commit is contained in:
@@ -312,8 +312,8 @@ TEST_CASE("JFJochIntegrationTest_ZMQPreview", "[JFJochReceiver]") {
|
||||
|
||||
JFJochReceiverService service(aq_devices, logger, pusher);
|
||||
service.NumThreads(nthreads);
|
||||
service.PreviewSocket("ipc://*");
|
||||
service.PreviewSocketSettings({.period = std::chrono::seconds(0), .send_start_message = true}); // Send all images to preview
|
||||
service.PreviewSocket("tcp://0.0.0.0:*");
|
||||
service.PreviewSocketSettings({.period = std::chrono::seconds(0)}); // Send one message
|
||||
|
||||
ZMQSocket sub_socket(ZMQSocketType::Sub);
|
||||
sub_socket.ReceiveWaterMark(10);
|
||||
@@ -332,6 +332,69 @@ TEST_CASE("JFJochIntegrationTest_ZMQPreview", "[JFJochReceiver]") {
|
||||
ZMQMessage msg1;
|
||||
REQUIRE(sub_socket.Receive(msg1, true));
|
||||
|
||||
// start message
|
||||
auto out = CBORStream2Deserialize(msg1.data(), msg1.size());
|
||||
REQUIRE(out != nullptr);
|
||||
CHECK(out->msg_type == CBORImageType::START);
|
||||
|
||||
REQUIRE(sub_socket.Receive(msg1, true));
|
||||
out = CBORStream2Deserialize(msg1.data(), msg1.size());
|
||||
REQUIRE(out != nullptr);
|
||||
CHECK(out->msg_type == CBORImageType::IMAGE);
|
||||
|
||||
// 4 other images
|
||||
REQUIRE(sub_socket.Receive(msg1, true));
|
||||
REQUIRE(sub_socket.Receive(msg1, true));
|
||||
REQUIRE(sub_socket.Receive(msg1, true));
|
||||
REQUIRE(sub_socket.Receive(msg1, true));
|
||||
|
||||
// end message
|
||||
REQUIRE(sub_socket.Receive(msg1, true));
|
||||
REQUIRE(!sub_socket.Receive(msg1, true));
|
||||
}
|
||||
|
||||
TEST_CASE("JFJochIntegrationTest_ZMQMetadata", "[JFJochReceiver]") {
|
||||
Logger logger("JFJochIntegrationTest_ZMQMetadata");
|
||||
|
||||
RegisterHDF5Filter();
|
||||
|
||||
const uint16_t nthreads = 4;
|
||||
|
||||
DiffractionExperiment experiment(DetectorGeometry(8,2,8,36));
|
||||
experiment.ImagesPerTrigger(5).NumTriggers(1).UseInternalPacketGenerator(true)
|
||||
.FilePrefix("").JungfrauConvPhotonCnt(false)
|
||||
.DetectorDistance_mm(75).BeamY_pxl(1136).BeamX_pxl(1090).PhotonEnergy_keV(12.4);
|
||||
|
||||
PixelMask pixel_mask(experiment);
|
||||
|
||||
// Setup acquisition device
|
||||
AcquisitionDeviceGroup aq_devices;
|
||||
aq_devices.Add(std::make_unique<HLSSimulatedDevice>(0, 64));
|
||||
|
||||
NonePusher pusher;
|
||||
|
||||
JFJochReceiverService service(aq_devices, logger, pusher);
|
||||
service.NumThreads(nthreads);
|
||||
service.MetadataSocket("tcp://0.0.0.0:*");
|
||||
service.MetadataSocketSettings({.period = std::chrono::seconds(2500)}); // Send all metadata as one message
|
||||
|
||||
ZMQSocket sub_socket(ZMQSocketType::Sub);
|
||||
sub_socket.ReceiveWaterMark(10);
|
||||
sub_socket.Connect(service.GetMetadataSocketAddress());
|
||||
sub_socket.SubscribeAll();
|
||||
sub_socket.ReceiveTimeout(std::chrono::seconds(1)); // Ensure Subscriber is connected
|
||||
|
||||
service.Start(experiment, pixel_mask, nullptr);
|
||||
auto receiver_out = service.Stop();
|
||||
|
||||
CHECK(receiver_out.efficiency == 1.0);
|
||||
CHECK(receiver_out.status.images_collected == 5);
|
||||
CHECK(receiver_out.status.images_sent == 0);
|
||||
CHECK(!receiver_out.status.cancelled);
|
||||
|
||||
ZMQMessage msg1;
|
||||
REQUIRE(sub_socket.Receive(msg1, true));
|
||||
|
||||
auto out = CBORStream2Deserialize(msg1.data(), msg1.size());
|
||||
REQUIRE(out != nullptr);
|
||||
CHECK(out->msg_type == CBORImageType::START);
|
||||
@@ -339,11 +402,11 @@ TEST_CASE("JFJochIntegrationTest_ZMQPreview", "[JFJochReceiver]") {
|
||||
REQUIRE(sub_socket.Receive(msg1, true));
|
||||
out = CBORStream2Deserialize(msg1.data(), msg1.size());
|
||||
REQUIRE(out != nullptr);
|
||||
CHECK(out->msg_type == CBORImageType::IMAGE);
|
||||
CHECK(out->msg_type == CBORImageType::METADATA);
|
||||
CHECK(out->metadata);
|
||||
CHECK(out->metadata->images.size() == 5);
|
||||
|
||||
REQUIRE(sub_socket.Receive(msg1, true));
|
||||
REQUIRE(sub_socket.Receive(msg1, true));
|
||||
REQUIRE(sub_socket.Receive(msg1, true));
|
||||
// end message
|
||||
REQUIRE(sub_socket.Receive(msg1, true));
|
||||
REQUIRE(!sub_socket.Receive(msg1, true));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user