ZMQPreviewPublisher: Stream CBOR data
This commit is contained in:
@@ -648,36 +648,24 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview", "[JFJochReceiver]") {
|
||||
|
||||
std::string s;
|
||||
|
||||
JFJochFrameDeserializer deserializer;
|
||||
|
||||
// Pixel mask
|
||||
REQUIRE(rcv_preview_socket.Receive(s, false) > 0);
|
||||
JFJochProtoBuf::PreviewFrame frame;
|
||||
REQUIRE_NOTHROW(frame = jsonToGrpc<JFJochProtoBuf::PreviewFrame>(s));
|
||||
|
||||
// Check header
|
||||
REQUIRE(frame.image_number() == -1);
|
||||
REQUIRE(frame.width() == state_machine.NotThreadSafe_Experiment().GetXPixelsNum());
|
||||
REQUIRE(frame.height() == state_machine.NotThreadSafe_Experiment().GetYPixelsNum());
|
||||
REQUIRE(frame.pixel_depth() == 4);
|
||||
deserializer.Process((uint8_t *) s.data(), s.size());
|
||||
REQUIRE(deserializer.GetType() == JFJochFrameDeserializer::Type::START);
|
||||
auto start_msg = deserializer.GetStartMessage();
|
||||
REQUIRE(start_msg.image_size_x == state_machine.NotThreadSafe_Experiment().GetXPixelsNum());
|
||||
REQUIRE(start_msg.image_size_y == state_machine.NotThreadSafe_Experiment().GetYPixelsNum());
|
||||
|
||||
// First frame
|
||||
REQUIRE(rcv_preview_socket.Receive(s, false) > 0);
|
||||
|
||||
REQUIRE_NOTHROW(frame = jsonToGrpc<JFJochProtoBuf::PreviewFrame>(s));
|
||||
deserializer.Process((uint8_t *) s.data(), s.size());
|
||||
REQUIRE(deserializer.GetType() == JFJochFrameDeserializer::Type::IMAGE);
|
||||
auto image_msg = deserializer.GetDataMessage();
|
||||
|
||||
// Check header
|
||||
REQUIRE(frame.image_number() == 0);
|
||||
REQUIRE(frame.beam_x_pxl() == Approx(setup.beam_x_pxl()));
|
||||
REQUIRE(frame.beam_y_pxl() == Approx(setup.beam_y_pxl()));
|
||||
REQUIRE(frame.width() == state_machine.NotThreadSafe_Experiment().GetXPixelsNum());
|
||||
REQUIRE(frame.height() == state_machine.NotThreadSafe_Experiment().GetYPixelsNum());
|
||||
REQUIRE(frame.pixel_depth() == 2);
|
||||
|
||||
// Check compressed image
|
||||
size_t npixel = state_machine.NotThreadSafe_Experiment().GetPixelsNum();
|
||||
|
||||
std::vector<char> rcv_image(frame.data().size());
|
||||
rcv_image = {frame.data().begin(), frame.data().end()};
|
||||
REQUIRE(rcv_image.size() == state_machine.NotThreadSafe_Experiment().GetPixelsNum() * sizeof(int16_t));
|
||||
REQUIRE(image_msg.number == 0);
|
||||
|
||||
// Check no more frames waiting
|
||||
REQUIRE(rcv_preview_socket.Receive(s, false) == -1);
|
||||
@@ -694,7 +682,6 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview", "[JFJochReceiver]") {
|
||||
writer_server->Shutdown();
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview_no_writer", "[JFJochReceiver]") {
|
||||
Logger logger("JFJochIntegrationTest_ZMQ_with_preview_no_writer");
|
||||
|
||||
@@ -767,37 +754,24 @@ TEST_CASE("JFJochIntegrationTest_ZMQ_with_preview_no_writer", "[JFJochReceiver]"
|
||||
logger.Info("Stopped measurement");
|
||||
|
||||
std::string s;
|
||||
JFJochFrameDeserializer deserializer;
|
||||
|
||||
// Pixel mask
|
||||
REQUIRE(rcv_preview_socket.Receive(s, false) > 0);
|
||||
JFJochProtoBuf::PreviewFrame frame;
|
||||
REQUIRE_NOTHROW(frame = jsonToGrpc<JFJochProtoBuf::PreviewFrame>(s));
|
||||
|
||||
// Check header
|
||||
REQUIRE(frame.image_number() == -1);
|
||||
REQUIRE(frame.width() == state_machine.NotThreadSafe_Experiment().GetXPixelsNum());
|
||||
REQUIRE(frame.height() == state_machine.NotThreadSafe_Experiment().GetYPixelsNum());
|
||||
REQUIRE(frame.pixel_depth() == 4);
|
||||
deserializer.Process((uint8_t *) s.data(), s.size());
|
||||
REQUIRE(deserializer.GetType() == JFJochFrameDeserializer::Type::START);
|
||||
auto start_msg = deserializer.GetStartMessage();
|
||||
REQUIRE(start_msg.image_size_x == state_machine.NotThreadSafe_Experiment().GetXPixelsNum());
|
||||
REQUIRE(start_msg.image_size_y == state_machine.NotThreadSafe_Experiment().GetYPixelsNum());
|
||||
|
||||
// First frame
|
||||
REQUIRE(rcv_preview_socket.Receive(s, false) > 0);
|
||||
|
||||
REQUIRE_NOTHROW(frame = jsonToGrpc<JFJochProtoBuf::PreviewFrame>(s));
|
||||
deserializer.Process((uint8_t *) s.data(), s.size());
|
||||
REQUIRE(deserializer.GetType() == JFJochFrameDeserializer::Type::IMAGE);
|
||||
auto image_msg = deserializer.GetDataMessage();
|
||||
|
||||
// Check header
|
||||
REQUIRE(frame.image_number() == 0);
|
||||
REQUIRE(frame.beam_x_pxl() == Approx(setup.beam_x_pxl()));
|
||||
REQUIRE(frame.beam_y_pxl() == Approx(setup.beam_y_pxl()));
|
||||
REQUIRE(frame.width() == state_machine.NotThreadSafe_Experiment().GetXPixelsNum());
|
||||
REQUIRE(frame.height() == state_machine.NotThreadSafe_Experiment().GetYPixelsNum());
|
||||
REQUIRE(frame.pixel_depth() == 2);
|
||||
|
||||
// Check compressed image
|
||||
size_t npixel = state_machine.NotThreadSafe_Experiment().GetPixelsNum();
|
||||
|
||||
std::vector<char> rcv_image(frame.data().size());
|
||||
rcv_image = {frame.data().begin(), frame.data().end()};
|
||||
REQUIRE(rcv_image.size() == state_machine.NotThreadSafe_Experiment().GetPixelsNum() * sizeof(int16_t));
|
||||
REQUIRE(image_msg.number == 0);
|
||||
|
||||
// Check no more frames waiting
|
||||
REQUIRE(rcv_preview_socket.Receive(s, false) == -1);
|
||||
|
||||
Reference in New Issue
Block a user