Skip to content

Commit 63a6a81

Browse files
authored
refactor statistics tests (#9654)
1 parent b153534 commit 63a6a81

17 files changed

+317
-466
lines changed

ydb/core/kqp/ut/query/kqp_analyze_ut.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ Y_UNIT_TEST_SUITE(KqpAnalyze) {
1919
using namespace NStat;
2020

2121
Y_UNIT_TEST_TWIN(AnalyzeTable, ColumnStore) {
22-
TTestEnv env(1, 1, 1, true);
22+
TTestEnv env(1, 1, true);
23+
2324
CreateDatabase(env, "Database");
2425

2526
TTableClient client(env.GetDriver());

ydb/core/statistics/aggregator/aggregator_impl.cpp

+7-3
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,11 @@ void TStatisticsAggregator::InitializeStatisticsTable() {
511511
if (!EnableColumnStatistics) {
512512
return;
513513
}
514-
Register(CreateStatisticsTableCreator(std::make_unique<TEvStatistics::TEvStatTableCreationResponse>()));
514+
if (!Database) {
515+
return;
516+
}
517+
Register(CreateStatisticsTableCreator(
518+
std::make_unique<TEvStatistics::TEvStatTableCreationResponse>(), Database));
515519
}
516520

517521
void TStatisticsAggregator::Navigate() {
@@ -598,7 +602,7 @@ void TStatisticsAggregator::SaveStatisticsToTable() {
598602
data.push_back(strSketch);
599603
}
600604

601-
Register(CreateSaveStatisticsQuery(SelfId(),
605+
Register(CreateSaveStatisticsQuery(SelfId(), Database,
602606
TraversalPathId, EStatType::COUNT_MIN_SKETCH, std::move(columnTags), std::move(data)));
603607
}
604608

@@ -610,7 +614,7 @@ void TStatisticsAggregator::DeleteStatisticsFromTable() {
610614

611615
PendingDeleteStatistics = false;
612616

613-
Register(CreateDeleteStatisticsQuery(SelfId(), TraversalPathId));
617+
Register(CreateDeleteStatisticsQuery(SelfId(), Database, TraversalPathId));
614618
}
615619

616620
void TStatisticsAggregator::ScheduleNextAnalyze(NIceDb::TNiceDb& db) {

ydb/core/statistics/aggregator/tx_configure.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,13 @@ struct TStatisticsAggregator::TTxConfigure : public TTxBase {
2222

2323
NIceDb::TNiceDb db(txc.DB);
2424

25+
bool needInitialize = !Self->Database;
2526
Self->Database = Record.GetDatabase();
2627
Self->PersistSysParam(db, Schema::SysParam_Database, Self->Database);
28+
29+
if (needInitialize) {
30+
Self->InitializeStatisticsTable();
31+
}
2732
return true;
2833
}
2934

ydb/core/statistics/aggregator/tx_init.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,9 @@ struct TStatisticsAggregator::TTxInit : public TTxBase {
287287
SA_LOG_W("[" << Self->TabletID() << "] TTxInit::Complete. EnableColumnStatistics=false");
288288
}
289289

290-
Self->InitializeStatisticsTable();
290+
if (Self->Database) {
291+
Self->InitializeStatisticsTable();
292+
}
291293

292294
if (Self->TraversalPathId && Self->TraversalStartKey) {
293295
SA_LOG_D("[" << Self->TabletID() << "] TTxInit::Complete. Start navigate. PathId " << Self->TraversalPathId);

ydb/core/statistics/aggregator/ut/ut_analyze_columnshard.cpp

-2
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
namespace NKikimr {
1010
namespace NStat {
1111

12-
13-
1412
Y_UNIT_TEST_SUITE(AnalyzeColumnshard) {
1513
Y_UNIT_TEST(AnalyzeTable) {
1614
TTestEnv env(1, 1);

ydb/core/statistics/aggregator/ut/ut_analyze_datashard.cpp

+10-44
Original file line numberDiff line numberDiff line change
@@ -7,56 +7,35 @@
77
#include <ydb/core/statistics/events.h>
88
#include <ydb/core/statistics/service/service.h>
99

10-
#include <thread>
11-
1210
namespace NKikimr {
1311
namespace NStat {
1412

15-
namespace {
16-
17-
18-
} // namespace
19-
2013
Y_UNIT_TEST_SUITE(AnalyzeDatashard) {
2114

2215
Y_UNIT_TEST(AnalyzeOneTable) {
2316
TTestEnv env(1, 1);
24-
auto init = [&] () {
25-
CreateDatabase(env, "Database");
26-
CreateUniformTable(env, "Database", "Table");
27-
};
28-
std::thread initThread(init);
2917

3018
auto& runtime = *env.GetServer().GetRuntime();
31-
runtime.SimulateSleep(TDuration::Seconds(5));
32-
initThread.join();
19+
20+
CreateDatabase(env, "Database");
21+
CreateUniformTable(env, "Database", "Table");
3322

3423
ui64 saTabletId;
3524
auto pathId = ResolvePathId(runtime, "/Root/Database/Table", nullptr, &saTabletId);
3625

37-
runtime.SimulateSleep(TDuration::Seconds(30));
38-
3926
Analyze(runtime, saTabletId, {{pathId}});
4027

4128
ValidateCountMinDatashardAbsense(runtime, pathId);
4229
}
4330

4431
Y_UNIT_TEST(AnalyzeTwoTables) {
4532
TTestEnv env(1, 1);
46-
auto init = [&] () {
47-
CreateDatabase(env, "Database");
48-
CreateUniformTable(env, "Database", "Table1");
49-
CreateUniformTable(env, "Database", "Table2");
50-
};
51-
// TODO remove thread
52-
std::thread initThread(init);
5333

5434
auto& runtime = *env.GetServer().GetRuntime();
55-
runtime.SimulateSleep(TDuration::Seconds(5));
56-
initThread.join();
5735

58-
// TODO remove sleep
59-
runtime.SimulateSleep(TDuration::Seconds(30));
36+
CreateDatabase(env, "Database");
37+
CreateUniformTable(env, "Database", "Table1");
38+
CreateUniformTable(env, "Database", "Table2");
6039

6140
ui64 saTabletId1;
6241
auto pathId1 = ResolvePathId(runtime, "/Root/Database/Table1", nullptr, &saTabletId1);
@@ -68,34 +47,21 @@ Y_UNIT_TEST_SUITE(AnalyzeDatashard) {
6847
ValidateCountMinDatashardAbsense(runtime, pathId2);
6948
}
7049

71-
7250
Y_UNIT_TEST(DropTableNavigateError) {
7351
TTestEnv env(1, 1);
74-
auto init = [&] () {
75-
CreateDatabase(env, "Database");
76-
CreateUniformTable(env, "Database", "Table");
77-
};
78-
std::thread initThread(init);
7952

8053
auto& runtime = *env.GetServer().GetRuntime();
81-
runtime.SimulateSleep(TDuration::Seconds(5));
82-
initThread.join();
54+
55+
CreateDatabase(env, "Database");
56+
CreateUniformTable(env, "Database", "Table");
8357

8458
ui64 saTabletId = 0;
8559
auto pathId = ResolvePathId(runtime, "/Root/Database/Table", nullptr, &saTabletId);
8660

87-
auto init2 = [&] () {
88-
DropTable(env, "Database", "Table");
89-
};
90-
std::thread init2Thread(init2);
91-
92-
runtime.SimulateSleep(TDuration::Seconds(5));
93-
init2Thread.join();
61+
DropTable(env, "Database", "Table");
9462

9563
Analyze(runtime, saTabletId, {pathId});
9664

97-
runtime.SimulateSleep(TDuration::Seconds(10));
98-
9965
ValidateCountMinDatashardAbsense(runtime, pathId);
10066
}
10167
}

ydb/core/statistics/aggregator/ut/ut_traverse_columnshard.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,18 @@ Y_UNIT_TEST_SUITE(TraverseColumnShard) {
4343
UNIT_ASSERT(CheckCountMinSketch(countMin, ColumnTableRowsNumber));
4444
}
4545

46+
Y_UNIT_TEST(TraverseServerlessColumnTable) {
47+
TTestEnv env(1, 1);
48+
auto& runtime = *env.GetServer().GetRuntime();
49+
auto tableInfo = CreateServerlessDatabaseColumnTables(env, 1, 10)[0];
50+
51+
WaitForSavedStatistics(runtime, tableInfo.PathId);
52+
53+
auto countMin = ExtractCountMin(runtime, tableInfo.PathId);
54+
55+
UNIT_ASSERT(CheckCountMinSketch(countMin, ColumnTableRowsNumber));
56+
}
57+
4658
Y_UNIT_TEST(TraverseColumnTableRebootColumnshard) {
4759
TTestEnv env(1, 1);
4860
auto& runtime = *env.GetServer().GetRuntime();

ydb/core/statistics/aggregator/ut/ut_traverse_datashard.cpp

+17-92
Original file line numberDiff line numberDiff line change
@@ -7,50 +7,29 @@
77
#include <ydb/core/statistics/events.h>
88
#include <ydb/core/statistics/service/service.h>
99

10-
#include <thread>
11-
1210
namespace NKikimr {
1311
namespace NStat {
1412

15-
namespace {
16-
17-
18-
} // namespace
19-
2013
Y_UNIT_TEST_SUITE(TraverseDatashard) {
2114

2215
Y_UNIT_TEST(TraverseOneTable) {
2316
TTestEnv env(1, 1);
24-
auto init = [&] () {
25-
CreateDatabase(env, "Database");
26-
CreateUniformTable(env, "Database", "Table");
27-
};
28-
std::thread initThread(init);
29-
3017
auto& runtime = *env.GetServer().GetRuntime();
31-
runtime.SimulateSleep(TDuration::Seconds(5));
32-
initThread.join();
3318

34-
runtime.SimulateSleep(TDuration::Seconds(60));
19+
CreateDatabase(env, "Database");
20+
CreateUniformTable(env, "Database", "Table");
3521

3622
auto pathId = ResolvePathId(runtime, "/Root/Database/Table");
3723
ValidateCountMinDatashardAbsense(runtime, pathId);
3824
}
3925

4026
Y_UNIT_TEST(TraverseTwoTables) {
4127
TTestEnv env(1, 1);
42-
auto init = [&] () {
43-
CreateDatabase(env, "Database");
44-
CreateUniformTable(env, "Database", "Table1");
45-
CreateUniformTable(env, "Database", "Table2");
46-
};
47-
std::thread initThread(init);
48-
4928
auto& runtime = *env.GetServer().GetRuntime();
50-
runtime.SimulateSleep(TDuration::Seconds(5));
51-
initThread.join();
5229

53-
runtime.SimulateSleep(TDuration::Seconds(60));
30+
CreateDatabase(env, "Database");
31+
CreateUniformTable(env, "Database", "Table1");
32+
CreateUniformTable(env, "Database", "Table2");
5433

5534
auto pathId1 = ResolvePathId(runtime, "/Root/Database/Table1");
5635
auto pathId2 = ResolvePathId(runtime, "/Root/Database/Table2");
@@ -60,60 +39,24 @@ Y_UNIT_TEST_SUITE(TraverseDatashard) {
6039

6140
Y_UNIT_TEST(TraverseOneTableServerless) {
6241
TTestEnv env(1, 1);
63-
64-
auto init = [&] () {
65-
CreateDatabase(env, "Shared");
66-
};
67-
std::thread initThread(init);
68-
6942
auto& runtime = *env.GetServer().GetRuntime();
70-
runtime.SimulateSleep(TDuration::Seconds(5));
71-
initThread.join();
72-
73-
TPathId domainKey;
74-
ResolvePathId(runtime, "/Root/Shared", &domainKey);
75-
76-
auto init2 = [&] () {
77-
CreateServerlessDatabase(env, "Serverless", domainKey);
78-
CreateUniformTable(env, "Serverless", "Table");
79-
};
80-
std::thread init2Thread(init2);
81-
82-
runtime.SimulateSleep(TDuration::Seconds(5));
83-
init2Thread.join();
8443

85-
runtime.SimulateSleep(TDuration::Seconds(60));
44+
CreateDatabase(env, "Shared", 1, true);
45+
CreateServerlessDatabase(env, "Serverless", "/Root/Shared");
46+
CreateUniformTable(env, "Serverless", "Table");
8647

8748
auto pathId = ResolvePathId(runtime, "/Root/Serverless/Table");
8849
ValidateCountMinDatashardAbsense(runtime, pathId);
8950
}
9051

9152
Y_UNIT_TEST(TraverseTwoTablesServerless) {
9253
TTestEnv env(1, 1);
93-
94-
auto init = [&] () {
95-
CreateDatabase(env, "Shared");
96-
};
97-
std::thread initThread(init);
98-
9954
auto& runtime = *env.GetServer().GetRuntime();
100-
runtime.SimulateSleep(TDuration::Seconds(5));
101-
initThread.join();
102-
103-
TPathId domainKey;
104-
ResolvePathId(runtime, "/Root/Shared", &domainKey);
105-
106-
auto init2 = [&] () {
107-
CreateServerlessDatabase(env, "Serverless", domainKey);
108-
CreateUniformTable(env, "Serverless", "Table1");
109-
CreateUniformTable(env, "Serverless", "Table2");
110-
};
111-
std::thread init2Thread(init2);
112-
113-
runtime.SimulateSleep(TDuration::Seconds(5));
114-
init2Thread.join();
11555

116-
runtime.SimulateSleep(TDuration::Seconds(60));
56+
CreateDatabase(env, "Shared", 1, true);
57+
CreateServerlessDatabase(env, "Serverless", "/Root/Shared");
58+
CreateUniformTable(env, "Serverless", "Table1");
59+
CreateUniformTable(env, "Serverless", "Table2");
11760

11861
auto pathId1 = ResolvePathId(runtime, "/Root/Serverless/Table1");
11962
auto pathId2 = ResolvePathId(runtime, "/Root/Serverless/Table2");
@@ -123,31 +66,13 @@ Y_UNIT_TEST_SUITE(TraverseDatashard) {
12366

12467
Y_UNIT_TEST(TraverseTwoTablesTwoServerlessDbs) {
12568
TTestEnv env(1, 1);
126-
127-
auto init = [&] () {
128-
CreateDatabase(env, "Shared");
129-
};
130-
std::thread initThread(init);
131-
13269
auto& runtime = *env.GetServer().GetRuntime();
133-
runtime.SimulateSleep(TDuration::Seconds(5));
134-
initThread.join();
135-
136-
TPathId domainKey;
137-
ResolvePathId(runtime, "/Root/Shared", &domainKey);
138-
139-
auto init2 = [&] () {
140-
CreateServerlessDatabase(env, "Serverless1", domainKey);
141-
CreateServerlessDatabase(env, "Serverless2", domainKey);
142-
CreateUniformTable(env, "Serverless1", "Table1");
143-
CreateUniformTable(env, "Serverless2", "Table2");
144-
};
145-
std::thread init2Thread(init2);
146-
147-
runtime.SimulateSleep(TDuration::Seconds(5));
148-
init2Thread.join();
14970

150-
runtime.SimulateSleep(TDuration::Seconds(60));
71+
CreateDatabase(env, "Shared", 1, true);
72+
CreateServerlessDatabase(env, "Serverless1", "/Root/Shared");
73+
CreateServerlessDatabase(env, "Serverless2", "/Root/Shared");
74+
CreateUniformTable(env, "Serverless1", "Table1");
75+
CreateUniformTable(env, "Serverless2", "Table2");
15176

15277
auto pathId1 = ResolvePathId(runtime, "/Root/Serverless1/Table1");
15378
auto pathId2 = ResolvePathId(runtime, "/Root/Serverless2/Table2");

0 commit comments

Comments
 (0)