mirror of
https://github.com/paulscherrerinstitute/sf_daq_buffer.git
synced 2026-05-04 06:04:14 +02:00
Implement a simple transfer test
This commit is contained in:
@@ -1,35 +1,30 @@
|
||||
#include "gtest/gtest.h"
|
||||
#include "ZmqRecvModule.hpp"
|
||||
|
||||
#include <thread>
|
||||
#include <string>
|
||||
#include "RingBuffer.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
void generate_stream(size_t n_messages)
|
||||
{
|
||||
zmq::context_t context(1);
|
||||
zmq::socket_t socket(context, ZMQ_PUSH);
|
||||
socket.bind("tcp://127.0.0.1:11000");
|
||||
|
||||
for (size_t i=0; i<n_messages; i++) {
|
||||
// TODO: Implement the actual sending.
|
||||
// Header: {"frame": 0, "shape": [16], "type": "uint8"}
|
||||
// Data: bytes of 16x uint8
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
TEST(ZmqRecvModule, basic_interaction)
|
||||
{
|
||||
RingBuffer ring_buffer(10);
|
||||
|
||||
size_t n_modules(4);
|
||||
unordered_map<string, HeaderDataType> header_values {
|
||||
{"pulse_id", HeaderDataType("uint64")},
|
||||
{"frame", HeaderDataType("uint64")},
|
||||
{"is_good_frame", HeaderDataType("uint64")},
|
||||
{"daq_rec", HeaderDataType("int64")},
|
||||
|
||||
{"pulse_id_diff", HeaderDataType("int64", n_modules)},
|
||||
{"framenum_diff", HeaderDataType("int64", n_modules)},
|
||||
|
||||
{"missing_packets_1", HeaderDataType("uint64", n_modules)},
|
||||
{"missing_packets_2", HeaderDataType("uint64", n_modules)},
|
||||
{"daq_recs", HeaderDataType("uint64", n_modules)},
|
||||
|
||||
{"pulse_ids", HeaderDataType("uint64", n_modules)},
|
||||
{"framenums", HeaderDataType("uint64", n_modules)},
|
||||
|
||||
{"module_number", HeaderDataType("uint64", n_modules)}
|
||||
};
|
||||
|
||||
ZmqRecvModule zmq_recv_module(ring_buffer,header_values);
|
||||
ZmqRecvModule zmq_recv_module(ring_buffer, {});
|
||||
|
||||
uint8_t n_receivers = 4;
|
||||
zmq_recv_module.start_recv("tcp://127.0.0.1:10000", n_receivers);
|
||||
@@ -39,3 +34,27 @@ TEST(ZmqRecvModule, basic_interaction)
|
||||
|
||||
zmq_recv_module.stop_recv();
|
||||
}
|
||||
|
||||
TEST(ZmqRecvModule, simple_recv)
|
||||
{
|
||||
size_t n_msg = 10;
|
||||
|
||||
thread sender(generate_stream, n_msg);
|
||||
RingBuffer ring_buffer(n_msg);
|
||||
|
||||
ZmqRecvModule zmq_recv_module(ring_buffer, {});
|
||||
zmq_recv_module.start_writing();
|
||||
zmq_recv_module.start_recv("tcp://127.0.0.1:11000", 4);
|
||||
|
||||
sender.join();
|
||||
zmq_recv_module.stop_recv();
|
||||
|
||||
for (size_t i=0;i<n_msg;i++) {
|
||||
auto data = ring_buffer.read();
|
||||
// nullptr means there is no data in the buffer.
|
||||
ASSERT_TRUE(data.first != nullptr);
|
||||
ASSERT_TRUE(data.second != nullptr);
|
||||
}
|
||||
|
||||
ASSERT_TRUE(ring_buffer.is_empty());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user