From c06310fe0eac1b6ba4ea3da491c2699f8a34d43c Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Wed, 8 Apr 2020 15:27:26 +0200 Subject: [PATCH] Add test for clearing buffer --- core-writer/test/test_ZmqRecvModule.cpp | 46 +++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/core-writer/test/test_ZmqRecvModule.cpp b/core-writer/test/test_ZmqRecvModule.cpp index 8139b27..52b87a7 100644 --- a/core-writer/test/test_ZmqRecvModule.cpp +++ b/core-writer/test/test_ZmqRecvModule.cpp @@ -43,8 +43,9 @@ TEST(ZmqRecvModule, basic_interaction) // Stop should never throw an exception. zmq_recv_module.stop_recv(); EXPECT_NO_THROW(zmq_recv_module.stop_recv()); - zmq_recv_module.stop_saving(); - EXPECT_NO_THROW(zmq_recv_module.stop_saving()); + + zmq_recv_module.stop_saving_and_clear_buffer(); + EXPECT_NO_THROW(zmq_recv_module.stop_saving_and_clear_buffer()); } TEST(ZmqRecvModule, simple_recv) @@ -78,3 +79,44 @@ TEST(ZmqRecvModule, simple_recv) ASSERT_TRUE(ring_buffer.is_empty()); } + +TEST(ZmqRecvModule, stop_saving_and_clear_buffer) +{ + 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_saving(); + zmq_recv_module.start_recv("tcp://127.0.0.1:11000", 4); + + sender.join(); + this_thread::sleep_for(chrono::milliseconds(100)); + + ASSERT_FALSE(ring_buffer.is_empty()); + zmq_recv_module.stop_saving_and_clear_buffer(); + ASSERT_TRUE(ring_buffer.is_empty()); + + thread sender2(generate_stream, 2); + sender2.join(); + this_thread::sleep_for(chrono::milliseconds(100)); + + // No messages should be saved from this run. + ASSERT_TRUE(ring_buffer.is_empty()); + + zmq_recv_module.start_saving(); + + thread sender3(generate_stream, 2); + sender3.join(); + this_thread::sleep_for(chrono::milliseconds(100)); + + ASSERT_FALSE(ring_buffer.is_empty()); + + // stop_recv does not invalidate the buffer. + zmq_recv_module.stop_recv(); + ASSERT_FALSE(ring_buffer.is_empty()); + + zmq_recv_module.stop_saving_and_clear_buffer(); + ASSERT_TRUE(ring_buffer.is_empty()); +}