From 34cd75f77d0ca94dbdba4e6cc9451fe4d33e78b3 Mon Sep 17 00:00:00 2001 From: lichao <lichao@aiotlink.com> Date: 星期三, 19 五月 2021 19:14:13 +0800 Subject: [PATCH] add api BHQueryProcs. --- utest/robust_test.cpp | 74 +++++++++++++++++++++++++++--------- 1 files changed, 55 insertions(+), 19 deletions(-) diff --git a/utest/robust_test.cpp b/utest/robust_test.cpp index 0645918..ea6144c 100644 --- a/utest/robust_test.cpp +++ b/utest/robust_test.cpp @@ -16,6 +16,35 @@ ///////////////////////////////////////////////////////////////////////////////////////// +BOOST_AUTO_TEST_CASE(InitTest) +{ + AtomicReqRep rr; + auto client = [&]() { + for (int i = 0; i < 20; ++i) { + int64_t reply = 0; + bool r = rr.ClientRequest(i, reply); + printf("init request %d, %s, reply %d\n", i, (r ? "ok" : "failed"), reply); + } + }; + + bool run = true; + auto server = [&]() { + auto onReq = [](int64_t req) { return req + 100; }; + while (run) { + rr.ServerProcess(onReq); + } + }; + + ThreadManager clients, servers; + servers.Launch(server); + for (int i = 0; i < 2; ++i) { + clients.Launch(client); + } + clients.WaitAll(); + run = false; + servers.WaitAll(); +} + BOOST_AUTO_TEST_CASE(QueueTest) { const int nthread = 100; @@ -39,19 +68,24 @@ std::atomic<uint64_t> nwrite(0); std::atomic<uint64_t> writedone(0); -#if 0 - typedef AtomicQueue<4> Rcb; +#if 1 + const int kPower = 0; + typedef AtomicQueue<kPower> Rcb; Rcb tmp; - BOOST_CHECK(tmp.like_empty()); + // BOOST_CHECK(tmp.like_empty()); BOOST_CHECK(tmp.push(1)); - BOOST_CHECK(tmp.tail() == 1); + if (kPower != 0) { + BOOST_CHECK(tmp.tail() == 1); + } BOOST_CHECK(tmp.head() == 0); int64_t d; BOOST_CHECK(tmp.pop(d)); - BOOST_CHECK(tmp.like_empty()); - BOOST_CHECK(tmp.head() == 1); - BOOST_CHECK(tmp.tail() == 1); + if (kPower != 0) { + // BOOST_CHECK(tmp.like_empty()); + BOOST_CHECK(tmp.head() == 1); + BOOST_CHECK(tmp.tail() == 1); + } ShmObject<Rcb> rcb(shm, "test_rcb"); bool try_more = true; @@ -166,18 +200,20 @@ BOOST_AUTO_TEST_CASE(MutexTest) { { - int fd = open("/tmp/test_fmutex", O_CREAT | O_RDONLY, 0666); - flock(fd, LOCK_EX); - printf("lock 1"); + int sem_id = semget(100, 1, 0666 | IPC_CREAT); + auto P = [&]() { + sembuf op = {0, -1, SEM_UNDO}; + semop(sem_id, &op, 1); + }; + auto V = [&]() { + sembuf op = {0, 1, SEM_UNDO}; + semop(sem_id, &op, 1); + }; + for (int i = 0; i < 10; ++i) { + V(); + } Sleep(10s); - flock(fd, LOCK_EX); - printf("lock 2"); - Sleep(10s); - flock(fd, LOCK_UN); - printf("un lock 2"); - Sleep(10s); - flock(fd, LOCK_UN); - printf("un lock 1"); + return; } @@ -204,7 +240,7 @@ std::mutex m; typedef std::chrono::steady_clock Clock; - auto Now = []() { return Clock::now().time_since_epoch(); }; + if (pi) { auto old = *pi; printf("int : %d, add1: %d\n", old, ++*pi); -- Gitblit v1.8.0