From a22dd242713636fad33ee5965fe0900a425ce50d Mon Sep 17 00:00:00 2001 From: lichao <lichao@aiotlink.com> Date: 星期四, 25 三月 2021 11:19:15 +0800 Subject: [PATCH] test msg ref count, refactor. --- utest/utest.cpp | 39 ++++++++++++++++++++++++++++++++------- 1 files changed, 32 insertions(+), 7 deletions(-) diff --git a/utest/utest.cpp b/utest/utest.cpp index 38d924f..57b0e9c 100644 --- a/utest/utest.cpp +++ b/utest/utest.cpp @@ -1,6 +1,4 @@ #include <stdio.h> -#include "../src/shm.h" -#include "../src/bh_util.h" #include <string> #include <vector> #include <thread> @@ -12,6 +10,8 @@ #include <boost/date_time/posix_time/posix_time.hpp> #include <boost/date_time/microsec_time_clock.hpp> #include <boost/uuid/uuid_generators.hpp> +#include "shm_queue.h" +#include "bh_util.h" using namespace std::chrono_literals; using namespace bhome_shm; @@ -48,7 +48,7 @@ ~ShmRemover() { SharedMemory::Remove(name_); } }; -BOOST_AUTO_TEST_CASE(ShmBasic) +BOOST_AUTO_TEST_CASE(ShmBasicTest) { const std::string shm_name("basic"); ShmRemover auto_remove(shm_name); @@ -105,7 +105,7 @@ BOOST_CHECK_EQUAL(init_avail, Avail()); } -BOOST_AUTO_TEST_CASE(TimedWait) +BOOST_AUTO_TEST_CASE(TimedWaitTest) { const std::string shm_name("shm_wait"); ShmRemover auto_remove(shm_name); @@ -123,7 +123,32 @@ } } -BOOST_AUTO_TEST_CASE(MsgHeader) +BOOST_AUTO_TEST_CASE(RefCountTest) +{ + const std::string shm_name("ShmRefCount"); + ShmRemover auto_remove(shm_name); + SharedMemory shm(shm_name, 1024*1024); + + Msg m0(shm.allocate(1000), shm.New<RefCount>()); + BOOST_CHECK_EQUAL(m0.AddRef(), 1); + Msg m1 = m0; + BOOST_CHECK_EQUAL(m1.AddRef(), 2); + BOOST_CHECK_EQUAL(m0.AddRef(), 3); + BOOST_CHECK_EQUAL(m0.RemoveRef(), 2); + BOOST_CHECK_EQUAL(m0.RemoveRef(), 1); + BOOST_CHECK_EQUAL(m1.RemoveRef(), 0); + { + Msg::CountGuard guard(m0); + BOOST_CHECK_EQUAL(m1.AddRef(), 2); + { + Msg::CountGuard guard(m0); + BOOST_CHECK_EQUAL(m1.RemoveRef(), 2); + } + } + BOOST_CHECK_EQUAL(m1.Count(), 0); +} + +BOOST_AUTO_TEST_CASE(MsgHeaderTest) { MsgMetaV1 head; BOOST_CHECK_EQUAL(head.self_size_, sizeof(head)); @@ -146,7 +171,7 @@ BOOST_CHECK_EQUAL(memcmp(&head, &result, sizeof(head)), 0); } -BOOST_AUTO_TEST_CASE(RequestReply) +BOOST_AUTO_TEST_CASE(RequestReplyTest) { const std::string shm_name("ShmReqRep"); ShmRemover auto_remove(shm_name); @@ -191,7 +216,7 @@ auto cur = Now(); if (last_time.exchange(cur) != cur) { std::cout << "time: " << Now(); - printf(", total msg:%10ld, speed:%8ld, used mem:%8ld\n", count.load(), count - last_count.exchange(count), init_avail - Avail()); + printf(", total msg:%10ld, speed:%8ld/s, used mem:%8ld\n", count.load(), count - last_count.exchange(count), init_avail - Avail()); last_time = cur; } -- Gitblit v1.8.0