aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/lwtrace/log_ut.cpp
diff options
context:
space:
mode:
authorarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-06-10 00:12:57 +0300
committerarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-06-10 00:12:57 +0300
commita864adadcf849b49085a6c20aa414d535e25fcaf (patch)
treee8a0e042123090607d2c5beb0ef0aa8ca7ec633f /library/cpp/lwtrace/log_ut.cpp
parent683b886494d96e8ab3e8b571c91e69eb03cd8606 (diff)
downloadydb-a864adadcf849b49085a6c20aa414d535e25fcaf.tar.gz
intermediate changes
ref:fd45b675f102830e5f7311e0b3c6aaa6ee7d4eaa
Diffstat (limited to 'library/cpp/lwtrace/log_ut.cpp')
-rw-r--r--library/cpp/lwtrace/log_ut.cpp132
1 files changed, 132 insertions, 0 deletions
diff --git a/library/cpp/lwtrace/log_ut.cpp b/library/cpp/lwtrace/log_ut.cpp
new file mode 100644
index 0000000000..d9ee5f10ae
--- /dev/null
+++ b/library/cpp/lwtrace/log_ut.cpp
@@ -0,0 +1,132 @@
+#include "log.h"
+
+#include <library/cpp/testing/unittest/registar.h>
+
+using namespace NLWTrace;
+
+namespace
+{
+ struct TData
+ {
+ ui32 Val = 0;
+
+ void Clear()
+ {
+ }
+ };
+
+ struct TReader
+ {
+ ui32 NumSeen = 0;
+
+ void Reset()
+ {
+ NumSeen = 0;
+ }
+
+ void Push(TThread::TId tid, const TData& val)
+ {
+ Y_UNUSED(tid);
+ Y_UNUSED(val);
+
+ ++NumSeen;
+ }
+ };
+};
+
+Y_UNIT_TEST_SUITE(LWTraceLog) {
+ Y_UNIT_TEST(ShouldAccumulateTracesViaReadItems) {
+ TCyclicLogImpl<TData> log(100);
+
+ {
+ TCyclicLogImpl<TData>::TAccessor acc1(log);
+ TCyclicLogImpl<TData>::TAccessor acc2(log);
+ TCyclicLogImpl<TData>::TAccessor acc3(log);
+
+ acc1.Add()->Val = 1;
+ acc2.Add()->Val = 2;
+ acc3.Add()->Val = 3;
+ }
+
+ TReader reader;
+
+ log.ReadItems(reader);
+ UNIT_ASSERT_VALUES_EQUAL(3, reader.NumSeen);
+
+ {
+ TCyclicLogImpl<TData>::TAccessor acc1(log);
+ TCyclicLogImpl<TData>::TAccessor acc2(log);
+ TCyclicLogImpl<TData>::TAccessor acc3(log);
+
+ acc1.Add()->Val = 4;
+ acc2.Add()->Val = 5;
+ acc3.Add()->Val = 6;
+ }
+
+ reader.Reset();
+ log.ReadItems(reader);
+
+ UNIT_ASSERT_VALUES_EQUAL(6, reader.NumSeen);
+ }
+
+ Y_UNIT_TEST(ShouldNotReturnProcessedItemsViaMoveItems) {
+ struct TData
+ {
+ ui32 Val = 0;
+
+ void Clear()
+ {
+ }
+ };
+
+ struct TReader
+ {
+ ui32 NumSeen = 0;
+
+ void Reset()
+ {
+ NumSeen = 0;
+ }
+
+ void Push(TThread::TId tid, const TData& val)
+ {
+ Y_UNUSED(tid);
+ Y_UNUSED(val);
+
+ ++NumSeen;
+ }
+ };
+
+ TCyclicLogImpl<TData> log(100);
+
+ {
+ TCyclicLogImpl<TData>::TAccessor acc1(log);
+ TCyclicLogImpl<TData>::TAccessor acc2(log);
+ TCyclicLogImpl<TData>::TAccessor acc3(log);
+
+ acc1.Add()->Val = 1;
+ acc2.Add()->Val = 2;
+ acc3.Add()->Val = 3;
+ }
+
+ TReader reader;
+
+ log.ExtractItems(reader);
+ UNIT_ASSERT_VALUES_EQUAL(3, reader.NumSeen);
+
+ {
+ TCyclicLogImpl<TData>::TAccessor acc1(log);
+ TCyclicLogImpl<TData>::TAccessor acc2(log);
+ TCyclicLogImpl<TData>::TAccessor acc3(log);
+
+ acc1.Add()->Val = 4;
+ acc2.Add()->Val = 5;
+ acc3.Add()->Val = 6;
+ }
+
+ reader.Reset();
+ log.ExtractItems(reader);
+
+ UNIT_ASSERT_VALUES_EQUAL(3, reader.NumSeen);
+ }
+}