diff options
author | kulikov <kulikov@yandex-team.com> | 2023-07-27 12:28:50 +0300 |
---|---|---|
committer | kulikov <kulikov@yandex-team.com> | 2023-07-27 12:28:50 +0300 |
commit | 4a7691c519e6114e013dc1dd0c3b2528154507f9 (patch) | |
tree | af6ee3a210f95bb4532036b1f1a5352ef072068a /library/cpp/threading/equeue/equeue_ut.cpp | |
parent | dcde92436ae71c3fdf1d6b9916e3858f3b35146e (diff) | |
download | ydb-4a7691c519e6114e013dc1dd0c3b2528154507f9.tar.gz |
revert rXXXXXX (see discusstion in pr), will commit again more pci-dss friendly way
Diffstat (limited to 'library/cpp/threading/equeue/equeue_ut.cpp')
-rw-r--r-- | library/cpp/threading/equeue/equeue_ut.cpp | 79 |
1 files changed, 20 insertions, 59 deletions
diff --git a/library/cpp/threading/equeue/equeue_ut.cpp b/library/cpp/threading/equeue/equeue_ut.cpp index 2c7d2c7b1e..8557f63ac0 100644 --- a/library/cpp/threading/equeue/equeue_ut.cpp +++ b/library/cpp/threading/equeue/equeue_ut.cpp @@ -1,5 +1,4 @@ #include "equeue.h" -#include "fast.h" #include <library/cpp/testing/unittest/registar.h> @@ -10,33 +9,18 @@ Y_UNIT_TEST_SUITE(TElasticQueueTest) { const size_t MaxQueueSize = 20; const size_t ThreadCount = 10; + const size_t N = 100000; - template <typename T> - THolder<T> MakeQueue(); - - template <> - THolder<TElasticQueue> MakeQueue() { - return MakeHolder<TElasticQueue>(MakeHolder<TSimpleThreadPool>()); - } - - template <> - THolder<TFastElasticQueue> MakeQueue() { - return MakeHolder<TFastElasticQueue>(); - } - - template <typename T> - struct TEnv { - static inline THolder<T> Queue; + static THolder<TElasticQueue> Queue; - struct TQueueSetup { - TQueueSetup() { - Queue.Reset(MakeQueue<T>()); - Queue->Start(ThreadCount, MaxQueueSize); - } - ~TQueueSetup() { - Queue->Stop(); - } - }; + struct TQueueSetup { + TQueueSetup() { + Queue.Reset(new TElasticQueue(MakeHolder<TSimpleThreadPool>())); + Queue->Start(ThreadCount, MaxQueueSize); + } + ~TQueueSetup() { + Queue->Stop(); + } }; struct TCounters { @@ -53,9 +37,7 @@ Y_UNIT_TEST_SUITE(TElasticQueueTest) { //fill test -- fill queue with "endless" jobs TSystemEvent WaitEvent; - - template <typename T> - void FillTest() { + Y_UNIT_TEST(FillTest) { Counters.Reset(); struct TWaitJob: public IObjectInQueue { @@ -65,10 +47,7 @@ Y_UNIT_TEST_SUITE(TElasticQueueTest) { } } job; - struct TLocalSetup: TEnv<T>::TQueueSetup { - TLocalSetup() { - WaitEvent.Reset(); - } + struct TLocalSetup: TQueueSetup { ~TLocalSetup() { WaitEvent.Signal(); } @@ -77,26 +56,19 @@ Y_UNIT_TEST_SUITE(TElasticQueueTest) { size_t enqueued = 0; { TLocalSetup setup; - while (TEnv<T>::Queue->Add(&job) && enqueued < MaxQueueSize + 100) { + while (Queue->Add(&job) && enqueued < MaxQueueSize + 100) { ++enqueued; } UNIT_ASSERT_VALUES_EQUAL(enqueued, MaxQueueSize); - UNIT_ASSERT_VALUES_EQUAL(enqueued, TEnv<T>::Queue->ObjectCount()); + UNIT_ASSERT_VALUES_EQUAL(enqueued, Queue->ObjectCount()); } - UNIT_ASSERT_VALUES_EQUAL(0u, TEnv<T>::Queue->ObjectCount()); - UNIT_ASSERT_VALUES_EQUAL(0u, TEnv<T>::Queue->Size()); + UNIT_ASSERT_VALUES_EQUAL(0u, Queue->ObjectCount()); + UNIT_ASSERT_VALUES_EQUAL(0u, Queue->Size()); UNIT_ASSERT_VALUES_EQUAL((size_t)Counters.Processed, enqueued); } - Y_UNIT_TEST(FillTest) { - FillTest<TElasticQueue>(); - } - - Y_UNIT_TEST(FillTestFast) { - FillTest<TFastElasticQueue>(); - } //concurrent test -- send many jobs from different threads struct TJob: public IObjectInQueue { @@ -106,10 +78,9 @@ Y_UNIT_TEST_SUITE(TElasticQueueTest) { }; static TJob Job; - template <typename T> static bool TryAdd() { AtomicIncrement(Counters.Total); - if (TEnv<T>::Queue->Add(&Job)) { + if (Queue->Add(&Job)) { AtomicIncrement(Counters.Scheduled); return true; } else { @@ -118,18 +89,16 @@ Y_UNIT_TEST_SUITE(TElasticQueueTest) { } } - const size_t N = 100000; static size_t TryCounter; - template <typename T> - void ConcurrentTest() { + Y_UNIT_TEST(ConcurrentTest) { Counters.Reset(); TryCounter = 0; struct TSender: public IThreadFactory::IThreadAble { void DoExecute() override { while ((size_t)AtomicIncrement(TryCounter) <= N) { - if (!TryAdd<T>()) { + if (!TryAdd()) { Sleep(TDuration::MicroSeconds(50)); } } @@ -137,7 +106,7 @@ Y_UNIT_TEST_SUITE(TElasticQueueTest) { } sender; { - typename TEnv<T>::TQueueSetup setup; + TQueueSetup setup; TVector< TAutoPtr<IThreadFactory::IThread> > senders; for (size_t i = 0; i < ThreadCount; ++i) { @@ -153,12 +122,4 @@ Y_UNIT_TEST_SUITE(TElasticQueueTest) { UNIT_ASSERT_VALUES_EQUAL(Counters.Processed, Counters.Scheduled); UNIT_ASSERT_VALUES_EQUAL(Counters.Total, Counters.Scheduled + Counters.Discarded); } - - Y_UNIT_TEST(ConcurrentTest) { - ConcurrentTest<TElasticQueue>(); - } - - Y_UNIT_TEST(ConcurrentTestFast) { - ConcurrentTest<TFastElasticQueue>(); - } } |