From 87db231c5d7c7fc45925306e3aba3a755848f2b7 Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Wed, 15 Apr 2020 14:31:58 +0200 Subject: [PATCH] Add UdpRecvModule tests --- core-writer/test/test_UdpRecvModule.cpp | 78 +++++++++++++++++++++++++ core-writer/test/test_main.cpp | 1 + 2 files changed, 79 insertions(+) create mode 100644 core-writer/test/test_UdpRecvModule.cpp diff --git a/core-writer/test/test_UdpRecvModule.cpp b/core-writer/test/test_UdpRecvModule.cpp new file mode 100644 index 0000000..bc9650d --- /dev/null +++ b/core-writer/test/test_UdpRecvModule.cpp @@ -0,0 +1,78 @@ +#include "gtest/gtest.h" +#include "UdpRecvModule.hpp" +#include "jungfrau.hpp" +#include "mock/udp.hpp" + +using namespace std; + +TEST(UdpRecvModule, basic_interaction) +{ + uint16_t udp_port(12000); + + RingBuffer ring_buffer(10); + UdpRecvModule udp_recv_module(ring_buffer); + + udp_recv_module.start_recv(udp_port, JUNGFRAU_BYTES_PER_PACKET); + + EXPECT_THROW( + udp_recv_module.start_recv(udp_port, JUNGFRAU_BYTES_PER_PACKET), + runtime_error); + + // Stop should never throw an exception. + udp_recv_module.stop_recv(); + EXPECT_NO_THROW(udp_recv_module.stop_recv()); +} + +TEST(UdpRecvModule, simple_recv) +{ + uint16_t udp_port(MOCK_UDP_PORT); + size_t n_msg(128); + + RingBuffer ring_buffer(10); + UdpRecvModule udp_recv_module(ring_buffer); + + udp_recv_module.start_recv(udp_port, JUNGFRAU_BYTES_PER_PACKET); + + this_thread::sleep_for(chrono::milliseconds(100)); + + ASSERT_TRUE(ring_buffer.is_empty()); + + auto send_socket_fd = socket(AF_INET,SOCK_DGRAM,0); + ASSERT_TRUE(send_socket_fd >= 0); + + auto server_address = get_server_address(udp_port); + + jungfrau_packet send_udp_buffer; + send_udp_buffer.framenum = 1; + send_udp_buffer.bunchid = 100; + send_udp_buffer.debug = 1000; + + for (size_t i=0; i