From 3eca8e9defd7e3b10f7b1ab02c2e45ec68911092 Mon Sep 17 00:00:00 2001 From: Alexey Rybalchenko Date: Wed, 15 Jul 2020 13:28:28 +0200 Subject: [PATCH] Add test for shm transport options --- fairmq/shmem/Manager.h | 8 ++++---- test/transport/_options.cxx | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/fairmq/shmem/Manager.h b/fairmq/shmem/Manager.h index ebf0d7fd..8d95dd8b 100644 --- a/fairmq/shmem/Manager.h +++ b/fairmq/shmem/Manager.h @@ -95,14 +95,14 @@ class Manager LOG(debug) << "created/opened shared memory segment '" << "fmq_" << fShmId << "_main" << "' of " << fSegment.get_size() << " bytes. Available are " << fSegment.get_free_memory() << " bytes."; if (mlockSegment) { - LOG(debug) << "Locking the memory pages behind the managed segment..."; + LOG(debug) << "Locking the managed segment memory pages..."; mlock(fSegment.get_address(), fSegment.get_size()); - LOG(debug) << "Successfully locked the memory pages."; + LOG(debug) << "Successfully locked the managed segment memory pages."; } if (zeroSegment) { - LOG(debug) << "Zeroing the free memory of the managed segment..."; + LOG(debug) << "Zeroing the managed segment free memory..."; fSegment.zero_free_memory(); - LOG(debug) << "Successfully zeroed the free memory of the managed segment"; + LOG(debug) << "Successfully zeroed the managed segment free memory."; } fRegionInfos = fManagementSegment.find_or_construct(unique_instance)(fShmVoidAlloc); diff --git a/test/transport/_options.cxx b/test/transport/_options.cxx index 454eef0c..50ec5a77 100644 --- a/test/transport/_options.cxx +++ b/test/transport/_options.cxx @@ -66,6 +66,24 @@ void RunOptionsTest(const string& transport) ASSERT_EQ(channel.GetSocket().GetRcvKernelSize(), 8000); } +void ZeroingAndMlock(const string& transport) +{ + size_t session{fair::mq::tools::UuidHash()}; + + fair::mq::ProgOptions config; + config.SetProperty("session", to_string(session)); + config.SetProperty("shm-segment-size", 16384); + config.SetProperty("shm-zero-segment", true); + config.SetProperty("shm-mlock-segment", true); + + auto factory = FairMQTransportFactory::CreateTransportFactory(transport, fair::mq::tools::Uuid(), &config); + + FairMQMessagePtr outMsg(factory->CreateMessage(10000)); + char test[10000]; + memset(test, 0, sizeof(test)); + ASSERT_EQ(memcmp(test, outMsg->GetData(), outMsg->GetSize()), 0); +} + TEST(Options, zeromq) { RunOptionsTest("zeromq"); @@ -76,4 +94,9 @@ TEST(Options, shmem) RunOptionsTest("shmem"); } +TEST(ZeroingAndMlock, shmem) +{ + ZeroingAndMlock("shmem"); +} + } // namespace