From 848ebf2ff399e6d6a93ad1bc5e78cf7d174df4af Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Thu, 7 Dec 2017 14:36:11 +0100 Subject: [PATCH] FairMQ: Add test for setting used message size functionality --- fairmq/test/CMakeLists.txt | 10 +++ .../test/message_resize/_message_resize.cxx | 75 +++++++++++++++++++ fairmq/test/message_resize/runner.cxx | 16 ++++ 3 files changed, 101 insertions(+) create mode 100644 fairmq/test/message_resize/_message_resize.cxx create mode 100644 fairmq/test/message_resize/runner.cxx diff --git a/fairmq/test/CMakeLists.txt b/fairmq/test/CMakeLists.txt index d30f65b8..0769c0b5 100644 --- a/fairmq/test/CMakeLists.txt +++ b/fairmq/test/CMakeLists.txt @@ -64,6 +64,16 @@ add_testsuite(FairMQ.Parts TIMEOUT 5 ) +add_testsuite(FairMQ.MessageResize + SOURCES + message_resize/runner.cxx + message_resize/_message_resize.cxx + + LINKS FairMQ ZeroMQ + INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/message_resize + TIMEOUT 5 +) + add_testsuite(FairMQ.Device SOURCES device/TestSender.h diff --git a/fairmq/test/message_resize/_message_resize.cxx b/fairmq/test/message_resize/_message_resize.cxx new file mode 100644 index 00000000..91a05268 --- /dev/null +++ b/fairmq/test/message_resize/_message_resize.cxx @@ -0,0 +1,75 @@ +/******************************************************************************** + * Copyright (C) 2017 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * * + * This software is distributed under the terms of the * + * GNU Lesser General Public Licence (LGPL) version 3, * + * copied verbatim in the file "LICENSE" * + ********************************************************************************/ + +#include +#include +#include +#include +#include + +#include + +#include + +namespace +{ + +using namespace std; + +auto RunPushPullWithMsgResize(string transport, string address) -> void { + + size_t session{fair::mq::tools::UuidHash()}; + + FairMQProgOptions config; + config.SetValue("session", to_string(session)); + config.SetValue("io-threads", 1); + config.SetValue("shm-segment-size", 20000000); + + auto factory = FairMQTransportFactory::CreateTransportFactory(transport, fair::mq::tools::Uuid(), &config); + + FairMQChannel push{"Push", "push", factory}; + push.Bind(address); + + FairMQChannel pull{"Pull", "pull", factory}; + pull.Connect(address); + + FairMQMessagePtr outMsg(push.NewMessage(1000)); + ASSERT_EQ(outMsg->GetSize(), 1000); + outMsg->SetUsedSize(500); + ASSERT_EQ(outMsg->GetSize(), 500); + outMsg->SetUsedSize(250); + ASSERT_EQ(outMsg->GetSize(), 250); + FairMQMessagePtr msgCopy(push.NewMessage()); + msgCopy->Copy(outMsg); + ASSERT_EQ(msgCopy->GetSize(), 250); + + ASSERT_EQ(push.Send(outMsg), 250); + + FairMQMessagePtr inMsg(pull.NewMessage()); + ASSERT_EQ(pull.Receive(inMsg), 250); + ASSERT_EQ(inMsg->GetSize(), 250); +} + +TEST(MessageResize, ZeroMQ) +{ + RunPushPullWithMsgResize("zeromq", "ipc://test_message_resize"); +} + +TEST(MessageResize, shmem) +{ + RunPushPullWithMsgResize("shmem", "ipc://test_message_resize"); +} + +#ifdef NANOMSG_FOUND +TEST(MessageResize, nanomsg) +{ + RunPushPullWithMsgResize("nanomsg", "ipc://test_message_resize"); +} +#endif /* NANOMSG_FOUND */ + +} // namespace diff --git a/fairmq/test/message_resize/runner.cxx b/fairmq/test/message_resize/runner.cxx new file mode 100644 index 00000000..5442845e --- /dev/null +++ b/fairmq/test/message_resize/runner.cxx @@ -0,0 +1,16 @@ +/******************************************************************************** + * Copyright (C) 2017 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH * + * * + * This software is distributed under the terms of the * + * GNU Lesser General Public Licence (LGPL) version 3, * + * copied verbatim in the file "LICENSE" * + ********************************************************************************/ + +#include + +auto main(int argc, char** argv) -> int +{ + ::testing::InitGoogleTest(&argc, argv); + ::testing::FLAGS_gtest_death_test_style = "threadsafe"; + return RUN_ALL_TESTS(); +}