Refactor how frames are sent from receiver
This commit is contained in:
@@ -44,9 +44,9 @@ void test_puller(ZMQImagePuller *puller,
|
||||
}
|
||||
puller->WaitForImage();
|
||||
}
|
||||
// frame is END
|
||||
auto end = puller->GetEndMessage();
|
||||
if ((!end.write_master_file) || (end.write_master_file.value() != (writer_id == 0)))
|
||||
|
||||
auto start = puller->GetStartMessage();
|
||||
if ((!start.write_master_file) || (start.write_master_file.value() != (writer_id == 0)))
|
||||
diff_content[writer_id]++;
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ TEST_CASE("ZMQImageCommTest_1Writer","[ZeroMQ]") {
|
||||
DiffractionExperiment x(DetectorGeometry(1));
|
||||
x.Mode(DetectorMode::Raw);
|
||||
x.PedestalG0Frames(0).NumTriggers(1).UseInternalPacketGenerator(false).PhotonEnergy_keV(12.4)
|
||||
.ImagesPerTrigger(nframes);
|
||||
.ImagesPerTrigger(nframes);
|
||||
|
||||
std::vector<DiffractionSpot> empty_spot_vector;
|
||||
std::vector<float> empty_rad_int_profile;
|
||||
@@ -84,19 +84,22 @@ TEST_CASE("ZMQImageCommTest_1Writer","[ZeroMQ]") {
|
||||
puller.Connect(pusher_addr[0]);
|
||||
|
||||
std::thread sender_thread = std::thread([&] {
|
||||
std::vector<uint8_t> serialization_buffer(16*1024*1024);
|
||||
CBORStream2Serializer serializer(serialization_buffer.data(), serialization_buffer.size());
|
||||
|
||||
StartMessage message {
|
||||
.images_per_file = 16
|
||||
};
|
||||
EndMessage end_message{
|
||||
.write_master_file = true
|
||||
.images_per_file = 16,
|
||||
.write_master_file = true
|
||||
};
|
||||
EndMessage end_message{};
|
||||
|
||||
pusher.StartDataCollection(message);
|
||||
for (int i = 0; i < nframes; i++) {
|
||||
DataMessage data_message;
|
||||
data_message.number = i;
|
||||
PrepareCBORImage(data_message, x, image1.data() + i * x.GetPixelsNum(), x.GetPixelsNum() * sizeof(uint16_t));
|
||||
pusher.SendImage(data_message);
|
||||
serializer.SerializeImage(data_message);
|
||||
pusher.SendImage(serialization_buffer.data(), serializer.GetBufferSize(), i);
|
||||
}
|
||||
|
||||
pusher.EndDataCollection(end_message);
|
||||
@@ -160,19 +163,22 @@ TEST_CASE("ZMQImageCommTest_2Writers","[ZeroMQ]") {
|
||||
std::vector<size_t> diff_size(npullers), diff_content(npullers), diff_split(npullers), nimages(npullers);
|
||||
|
||||
std::thread sender_thread = std::thread([&] {
|
||||
StartMessage message {
|
||||
.images_per_file = 16
|
||||
};
|
||||
EndMessage end_message{
|
||||
.write_master_file = true
|
||||
};
|
||||
pusher.StartDataCollection(message);
|
||||
std::vector<uint8_t> serialization_buffer(16*1024*1024);
|
||||
CBORStream2Serializer serializer(serialization_buffer.data(), serialization_buffer.size());
|
||||
|
||||
StartMessage message {
|
||||
.images_per_file = 16,
|
||||
.write_master_file = true
|
||||
};
|
||||
EndMessage end_message{};
|
||||
|
||||
pusher.StartDataCollection(message);
|
||||
for (int i = 0; i < nframes; i++) {
|
||||
DataMessage data_message;
|
||||
data_message.number = i;
|
||||
PrepareCBORImage(data_message, x, image1.data() + i * x.GetPixelsNum(), x.GetPixelsNum() * sizeof(uint16_t));
|
||||
pusher.SendImage(data_message);
|
||||
serializer.SerializeImage(data_message);
|
||||
pusher.SendImage(serialization_buffer.data(), serializer.GetBufferSize(), i);
|
||||
}
|
||||
|
||||
pusher.EndDataCollection(end_message);
|
||||
@@ -246,19 +252,23 @@ TEST_CASE("ZMQImageCommTest_4Writers","[ZeroMQ]") {
|
||||
std::vector<size_t> diff_size(npullers), diff_content(npullers), diff_split(npullers), nimages(npullers);
|
||||
|
||||
std::thread sender_thread = std::thread([&] {
|
||||
StartMessage message {
|
||||
.images_per_file = 16
|
||||
};
|
||||
EndMessage end_message{
|
||||
.write_master_file = true
|
||||
};
|
||||
pusher.StartDataCollection(message);
|
||||
std::vector<uint8_t> serialization_buffer(16*1024*1024);
|
||||
CBORStream2Serializer serializer(serialization_buffer.data(), serialization_buffer.size());
|
||||
|
||||
StartMessage message {
|
||||
.images_per_file = 16,
|
||||
.write_master_file = true
|
||||
};
|
||||
|
||||
EndMessage end_message{};
|
||||
|
||||
pusher.StartDataCollection(message);
|
||||
for (int i = 0; i < nframes; i++) {
|
||||
DataMessage data_message;
|
||||
data_message.number = i;
|
||||
PrepareCBORImage(data_message, x, image1.data() + i * x.GetPixelsNum(), x.GetPixelsNum() * sizeof(uint16_t));
|
||||
pusher.SendImage(data_message);
|
||||
serializer.SerializeImage(data_message);
|
||||
pusher.SendImage(serialization_buffer.data(), serializer.GetBufferSize(), i);
|
||||
}
|
||||
|
||||
pusher.EndDataCollection(end_message);
|
||||
@@ -294,7 +304,7 @@ TEST_CASE("ZMQImageCommTest_4Writers","[ZeroMQ]") {
|
||||
|
||||
TEST_CASE("ZMQImagePuller_abort","[ZeroMQ]") {
|
||||
const size_t nframes = 256;
|
||||
|
||||
|
||||
DiffractionExperiment x;
|
||||
x.Mode(DetectorMode::Raw);
|
||||
x.PedestalG0Frames(0).NumTriggers(1).UseInternalPacketGenerator(false).PhotonEnergy_keV(12.4)
|
||||
@@ -336,9 +346,11 @@ TEST_CASE("ZMQImageCommTest_NoWriter","[ZeroMQ]") {
|
||||
DataMessage data_message;
|
||||
data_message.number = 1;
|
||||
data_message.image = image;
|
||||
|
||||
REQUIRE(!pusher.SendImage(data_message));
|
||||
std::vector<uint8_t> v(16*1024*1024);
|
||||
CBORStream2Serializer serializer(v.data(), v.size());
|
||||
serializer.SerializeImage(data_message);
|
||||
REQUIRE(!pusher.SendImage(v.data(), serializer.GetBufferSize(), 1));
|
||||
|
||||
EndMessage end_message;
|
||||
REQUIRE(!pusher.EndDataCollection(end_message));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user