diff options
author | yazevnul <[email protected]> | 2022-02-10 16:46:46 +0300 |
---|---|---|
committer | Daniil Cherednik <[email protected]> | 2022-02-10 16:46:46 +0300 |
commit | 8cbc307de0221f84c80c42dcbe07d40727537e2c (patch) | |
tree | 625d5a673015d1df891e051033e9fcde5c7be4e5 /util/system/condvar_ut.cpp | |
parent | 30d1ef3941e0dc835be7609de5ebee66958f215a (diff) |
Restoring authorship annotation for <[email protected]>. Commit 1 of 2.
Diffstat (limited to 'util/system/condvar_ut.cpp')
-rw-r--r-- | util/system/condvar_ut.cpp | 152 |
1 files changed, 76 insertions, 76 deletions
diff --git a/util/system/condvar_ut.cpp b/util/system/condvar_ut.cpp index 5130a18d32a..696516c810b 100644 --- a/util/system/condvar_ut.cpp +++ b/util/system/condvar_ut.cpp @@ -4,8 +4,8 @@ #include <library/cpp/testing/unittest/registar.h> -#include <util/system/atomic.h> -#include <util/system/atomic_ops.h> +#include <util/system/atomic.h> +#include <util/system/atomic_ops.h> #include <util/thread/pool.h> class TCondVarTest: public TTestBase { @@ -28,12 +28,12 @@ class TCondVarTest: public TTestBase { TCondVar condVar1; TCondVar condVar2; - TAtomic stopWaiting; + TAtomic stopWaiting; - TAtomic in; - TAtomic out; + TAtomic in; + TAtomic out; - TAtomic waited; + TAtomic waited; bool failed; }; @@ -61,36 +61,17 @@ class TCondVarTest: public TTestBase { Data_.failed = true; \ } void RunBasics() { - Y_ASSERT(TotalIds_ == 3); + Y_ASSERT(TotalIds_ == 3); if (Id_ < 2) { TGuard<TMutex> guard(Data_.mutex); - while (!AtomicGet(Data_.stopWaiting)) { + while (!AtomicGet(Data_.stopWaiting)) { bool res = Data_.condVar1.WaitT(Data_.mutex, TDuration::Seconds(1)); FAIL_ASSERT(res == true); } } else { usleep(100000); - AtomicSet(Data_.stopWaiting, true); - - TGuard<TMutex> guard(Data_.mutex); - Data_.condVar1.Signal(); - Data_.condVar1.Signal(); - } - } - - void RunBasicsWithPredicate() { - Y_ASSERT(TotalIds_ == 3); - - if (Id_ < 2) { - TGuard<TMutex> guard(Data_.mutex); - const auto res = Data_.condVar1.WaitT(Data_.mutex, TDuration::Seconds(1), [&] { - return AtomicGet(Data_.stopWaiting); - }); - FAIL_ASSERT(res == true); - } else { - usleep(100000); - AtomicSet(Data_.stopWaiting, true); + AtomicSet(Data_.stopWaiting, true); TGuard<TMutex> guard(Data_.mutex); Data_.condVar1.Signal(); @@ -98,63 +79,82 @@ class TCondVarTest: public TTestBase { } } + void RunBasicsWithPredicate() { + Y_ASSERT(TotalIds_ == 3); + + if (Id_ < 2) { + TGuard<TMutex> guard(Data_.mutex); + const auto res = Data_.condVar1.WaitT(Data_.mutex, TDuration::Seconds(1), [&] { + return AtomicGet(Data_.stopWaiting); + }); + FAIL_ASSERT(res == true); + } else { + usleep(100000); + AtomicSet(Data_.stopWaiting, true); + + TGuard<TMutex> guard(Data_.mutex); + Data_.condVar1.Signal(); + Data_.condVar1.Signal(); + } + } + void RunSyncronize() { for (size_t i = 0; i < 10; ++i) { TGuard<TMutex> guard(Data_.mutex); - AtomicIncrement(Data_.in); - if (AtomicGet(Data_.in) == TotalIds_) { - AtomicSet(Data_.out, 0); + AtomicIncrement(Data_.in); + if (AtomicGet(Data_.in) == TotalIds_) { + AtomicSet(Data_.out, 0); Data_.condVar1.BroadCast(); } else { - AtomicIncrement(Data_.waited); - while (AtomicGet(Data_.in) < TotalIds_) { + AtomicIncrement(Data_.waited); + while (AtomicGet(Data_.in) < TotalIds_) { bool res = Data_.condVar1.WaitT(Data_.mutex, TDuration::Seconds(1)); FAIL_ASSERT(res == true); } } - AtomicIncrement(Data_.out); - if (AtomicGet(Data_.out) == TotalIds_) { - AtomicSet(Data_.in, 0); + AtomicIncrement(Data_.out); + if (AtomicGet(Data_.out) == TotalIds_) { + AtomicSet(Data_.in, 0); Data_.condVar2.BroadCast(); } else { - while (AtomicGet(Data_.out) < TotalIds_) { + while (AtomicGet(Data_.out) < TotalIds_) { bool res = Data_.condVar2.WaitT(Data_.mutex, TDuration::Seconds(1)); FAIL_ASSERT(res == true); } } } - FAIL_ASSERT(AtomicGet(Data_.waited) == (TotalIds_ - 1) * 10); - } - - void RunSyncronizeWithPredicate() { - for (size_t i = 0; i < 10; ++i) { - TGuard<TMutex> guard(Data_.mutex); - AtomicIncrement(Data_.in); - if (AtomicGet(Data_.in) == TotalIds_) { - AtomicSet(Data_.out, 0); - Data_.condVar1.BroadCast(); - } else { - AtomicIncrement(Data_.waited); - const auto res = Data_.condVar1.WaitT(Data_.mutex, TDuration::Seconds(1), [&] { - return AtomicGet(Data_.in) >= TotalIds_; - }); - FAIL_ASSERT(res == true); - } - - AtomicIncrement(Data_.out); - if (AtomicGet(Data_.out) == TotalIds_) { - AtomicSet(Data_.in, 0); - Data_.condVar2.BroadCast(); - } else { - const auto res = Data_.condVar2.WaitT(Data_.mutex, TDuration::Seconds(1), [&] { - return AtomicGet(Data_.out) >= TotalIds_; - }); - FAIL_ASSERT(res == true); - } - } - + FAIL_ASSERT(AtomicGet(Data_.waited) == (TotalIds_ - 1) * 10); + } + + void RunSyncronizeWithPredicate() { + for (size_t i = 0; i < 10; ++i) { + TGuard<TMutex> guard(Data_.mutex); + AtomicIncrement(Data_.in); + if (AtomicGet(Data_.in) == TotalIds_) { + AtomicSet(Data_.out, 0); + Data_.condVar1.BroadCast(); + } else { + AtomicIncrement(Data_.waited); + const auto res = Data_.condVar1.WaitT(Data_.mutex, TDuration::Seconds(1), [&] { + return AtomicGet(Data_.in) >= TotalIds_; + }); + FAIL_ASSERT(res == true); + } + + AtomicIncrement(Data_.out); + if (AtomicGet(Data_.out) == TotalIds_) { + AtomicSet(Data_.in, 0); + Data_.condVar2.BroadCast(); + } else { + const auto res = Data_.condVar2.WaitT(Data_.mutex, TDuration::Seconds(1), [&] { + return AtomicGet(Data_.out) >= TotalIds_; + }); + FAIL_ASSERT(res == true); + } + } + FAIL_ASSERT(Data_.waited == (TotalIds_ - 1) * 10); } #undef FAIL_ASSERT @@ -162,7 +162,7 @@ class TCondVarTest: public TTestBase { private: PFunc Func_; size_t Id_; - TAtomicBase TotalIds_; + TAtomicBase TotalIds_; TSharedData& Data_; }; @@ -181,17 +181,17 @@ private: RUN_CYCLE(RunBasics, 3); } - inline void TestBasicsWithPredicate() { - RUN_CYCLE(RunBasicsWithPredicate, 3); - } - + inline void TestBasicsWithPredicate() { + RUN_CYCLE(RunBasicsWithPredicate, 3); + } + inline void TestSyncronize() { RUN_CYCLE(RunSyncronize, 6); } - - inline void TestSyncronizeWithPredicate() { - RUN_CYCLE(RunSyncronizeWithPredicate, 6); - } + + inline void TestSyncronizeWithPredicate() { + RUN_CYCLE(RunSyncronizeWithPredicate, 6); + } #undef RUN_CYCLE TSharedData Data_; TThreadPool Q_; |