aboutsummaryrefslogtreecommitdiffstats
path: root/util/system/rwlock_ut.cpp
diff options
context:
space:
mode:
authorkimkim <kimkim@yandex-team.ru>2022-02-10 16:49:28 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:49:28 +0300
commit10807864acf73d00f425a23b442aac2cf34403a8 (patch)
tree5d5cb817648f650d76cf1076100726fd9b8448e8 /util/system/rwlock_ut.cpp
parent13f84424ed9975f6827d9786087c6fe6ea265cda (diff)
downloadydb-10807864acf73d00f425a23b442aac2cf34403a8.tar.gz
Restoring authorship annotation for <kimkim@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'util/system/rwlock_ut.cpp')
-rw-r--r--util/system/rwlock_ut.cpp84
1 files changed, 42 insertions, 42 deletions
diff --git a/util/system/rwlock_ut.cpp b/util/system/rwlock_ut.cpp
index d050737c9c..2b384c05b3 100644
--- a/util/system/rwlock_ut.cpp
+++ b/util/system/rwlock_ut.cpp
@@ -2,36 +2,36 @@
#include "atomic.h"
#include <library/cpp/testing/unittest/registar.h>
-
+
#include <util/thread/pool.h>
-#include <util/random/random.h>
-
+#include <util/random/random.h>
+
class TRWMutexTest: public TTestBase {
- UNIT_TEST_SUITE(TRWMutexTest);
+ UNIT_TEST_SUITE(TRWMutexTest);
UNIT_TEST(TestReaders)
UNIT_TEST(TestReadersWriters)
- UNIT_TEST_SUITE_END();
-
- struct TSharedData {
- TSharedData()
- : writersIn(0)
- , readersIn(0)
- , failed(false)
- {
- }
-
+ UNIT_TEST_SUITE_END();
+
+ struct TSharedData {
+ TSharedData()
+ : writersIn(0)
+ , readersIn(0)
+ , failed(false)
+ {
+ }
+
TAtomic writersIn;
TAtomic readersIn;
-
- bool failed;
-
- TRWMutex mutex;
- };
+
+ bool failed;
+
+ TRWMutex mutex;
+ };
class TThreadTask: public IObjectInQueue {
public:
using PFunc = void (TThreadTask::*)(void);
-
+
TThreadTask(PFunc func, TSharedData& data, size_t id, size_t total)
: Func_(func)
, Data_(data)
@@ -39,62 +39,62 @@ class TRWMutexTest: public TTestBase {
, Total_(total)
{
}
-
+
void Process(void*) override {
THolder<TThreadTask> This(this);
(this->*Func_)();
}
-
+
#define FAIL_ASSERT(cond) \
if (!(cond)) { \
Data_.failed = true; \
- }
+ }
void RunReaders() {
Data_.mutex.AcquireRead();
-
+
AtomicIncrement(Data_.readersIn);
usleep(100);
FAIL_ASSERT(Data_.readersIn == long(Total_));
usleep(100);
AtomicDecrement(Data_.readersIn);
-
+
Data_.mutex.ReleaseRead();
}
-
+
void RunReadersWriters() {
if (Id_ % 2 == 0) {
for (size_t i = 0; i < 10; ++i) {
Data_.mutex.AcquireRead();
-
+
AtomicIncrement(Data_.readersIn);
FAIL_ASSERT(Data_.writersIn == 0);
usleep(RandomNumber<ui32>() % 5);
AtomicDecrement(Data_.readersIn);
-
+
Data_.mutex.ReleaseRead();
}
} else {
for (size_t i = 0; i < 10; ++i) {
Data_.mutex.AcquireWrite();
-
+
AtomicIncrement(Data_.writersIn);
FAIL_ASSERT(Data_.readersIn == 0 && Data_.writersIn == 1);
usleep(RandomNumber<ui32>() % 5);
AtomicDecrement(Data_.writersIn);
-
+
Data_.mutex.ReleaseWrite();
- }
- }
+ }
+ }
}
-#undef FAIL_ASSERT
-
+#undef FAIL_ASSERT
+
private:
PFunc Func_;
TSharedData& Data_;
size_t Id_;
size_t Total_;
- };
+ };
private:
#define RUN_CYCLE(what, count) \
@@ -106,19 +106,19 @@ private:
bool b = Data_.failed; \
Data_.failed = false; \
UNIT_ASSERT(!b);
-
+
void TestReaders() {
RUN_CYCLE(RunReaders, 1);
}
-
+
void TestReadersWriters() {
RUN_CYCLE(RunReadersWriters, 1);
}
-
-#undef RUN_CYCLE
+
+#undef RUN_CYCLE
private:
TSharedData Data_;
TThreadPool Q_;
-};
-
-UNIT_TEST_SUITE_REGISTRATION(TRWMutexTest)
+};
+
+UNIT_TEST_SUITE_REGISTRATION(TRWMutexTest)