summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorivanmorozov <[email protected]>2022-10-23 15:24:51 +0300
committerivanmorozov <[email protected]>2022-10-23 15:24:51 +0300
commit0e27829686e39af2c1e9e32270fd0f92e449ee16 (patch)
tree6bb0243330db28b2c1b9ff651c82e02fbb75150f
parent24108b105a2906e52c67ca6f2776700c2c97c026 (diff)
reuse methods for tests and incapsulate in special helpers
-rw-r--r--ydb/core/kqp/ut/common/kqp_ut_common.cpp41
-rw-r--r--ydb/core/kqp/ut/kqp_olap_ut.cpp172
-rw-r--r--ydb/core/testlib/CMakeLists.txt2
-rw-r--r--ydb/core/testlib/common_helper.cpp16
-rw-r--r--ydb/core/testlib/common_helper.h17
-rw-r--r--ydb/core/testlib/cs_helper.cpp41
-rw-r--r--ydb/core/testlib/cs_helper.h15
-rw-r--r--ydb/core/tx/datashard/datashard_ut_common.cpp44
-rw-r--r--ydb/core/tx/datashard/datashard_ut_snapshot.cpp2
9 files changed, 154 insertions, 196 deletions
diff --git a/ydb/core/kqp/ut/common/kqp_ut_common.cpp b/ydb/core/kqp/ut/common/kqp_ut_common.cpp
index a7204e535a7..19d4a173e33 100644
--- a/ydb/core/kqp/ut/common/kqp_ut_common.cpp
+++ b/ydb/core/kqp/ut/common/kqp_ut_common.cpp
@@ -943,46 +943,7 @@ void WaitForKqpProxyInit(const NYdb::TDriver& driver) {
}
void InitRoot(Tests::TServer::TPtr server, TActorId sender) {
- if (server->GetSettings().StoragePoolTypes.empty()) {
- return;
- }
-
- auto &runtime = *server->GetRuntime();
- auto &settings = server->GetSettings();
-
- auto tid = Tests::ChangeStateStorage(Tests::SchemeRoot, settings.Domain);
- const TDomainsInfo::TDomain& domain = runtime.GetAppData().DomainsInfo->GetDomain(settings.Domain);
-
- auto evTx = MakeHolder<NSchemeShard::TEvSchemeShard::TEvModifySchemeTransaction>(1, tid);
- auto transaction = evTx->Record.AddTransaction();
- transaction->SetOperationType(NKikimrSchemeOp::EOperationType::ESchemeOpAlterSubDomain);
- transaction->SetWorkingDir("/");
- auto op = transaction->MutableSubDomain();
- op->SetName(domain.Name);
-
- for (const auto& [kind, pool] : settings.StoragePoolTypes) {
- auto* p = op->AddStoragePools();
- p->SetKind(kind);
- p->SetName(pool.GetName());
- }
-
- runtime.SendToPipe(tid, sender, evTx.Release(), 0, GetPipeConfigWithRetries());
-
- {
- TAutoPtr<IEventHandle> handle;
- auto event = runtime.GrabEdgeEvent<NSchemeShard::TEvSchemeShard::TEvModifySchemeTransactionResult>(handle);
- UNIT_ASSERT_VALUES_EQUAL(event->Record.GetSchemeshardId(), tid);
- UNIT_ASSERT_VALUES_EQUAL(event->Record.GetStatus(), NKikimrScheme::EStatus::StatusAccepted);
- }
-
- auto evSubscribe = MakeHolder<NSchemeShard::TEvSchemeShard::TEvNotifyTxCompletion>(1);
- runtime.SendToPipe(tid, sender, evSubscribe.Release(), 0, GetPipeConfigWithRetries());
-
- {
- TAutoPtr<IEventHandle> handle;
- auto event = runtime.GrabEdgeEvent<NSchemeShard::TEvSchemeShard::TEvNotifyTxCompletionResult>(handle);
- UNIT_ASSERT_VALUES_EQUAL(event->Record.GetTxId(), 1);
- }
+ server->SetupRootStoragePools(sender);
}
} // namspace NKqp
diff --git a/ydb/core/kqp/ut/kqp_olap_ut.cpp b/ydb/core/kqp/ut/kqp_olap_ut.cpp
index 4741d7e8dfc..fb5c390202b 100644
--- a/ydb/core/kqp/ut/kqp_olap_ut.cpp
+++ b/ydb/core/kqp/ut/kqp_olap_ut.cpp
@@ -16,8 +16,9 @@
#include <ydb/core/grpc_services/base/base.h>
#include <ydb/core/tx/tx_proxy/proxy.h>
#include <ydb/core/tx/schemeshard/schemeshard.h>
-#include <ydb/core/testlib/test_client.h>
#include <ydb/core/testlib/tablet_helpers.h>
+#include <ydb/core/testlib/test_client.h>
+#include <ydb/core/testlib/cs_helper.h>
#include <util/system/sanitizers.h>
#include <fmt/format.h>
@@ -58,54 +59,15 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
EnableDebugLogging(kikimr.GetTestServer().GetRuntime());
}
- void WaitForSchemeOperation(Tests::TServer& server, TActorId sender, ui64 txId) {
- auto &runtime = *server.GetRuntime();
- auto &settings = server.GetSettings();
- auto request = MakeHolder<NSchemeShard::TEvSchemeShard::TEvNotifyTxCompletion>();
- request->Record.SetTxId(txId);
- auto tid = Tests::ChangeStateStorage(Tests::SchemeRoot, settings.Domain);
- runtime.SendToPipe(tid, sender, request.Release(), 0, GetPipeConfigWithRetries());
- runtime.GrabEdgeEventRethrow<TEvSchemeShard::TEvNotifyTxCompletionResult>(sender);
- }
-
- void CreateTestOlapStore(Tests::TServer& server, TActorId sender, TString scheme) {
- NKikimrSchemeOp::TColumnStoreDescription store;
- UNIT_ASSERT(::google::protobuf::TextFormat::ParseFromString(scheme, &store));
-
- auto request = std::make_unique<TEvTxUserProxy::TEvProposeTransaction>();
- request->Record.SetExecTimeoutPeriod(Max<ui64>());
- auto* op = request->Record.MutableTransaction()->MutableModifyScheme();
- op->SetOperationType(NKikimrSchemeOp::EOperationType::ESchemeOpCreateColumnStore);
- op->SetWorkingDir("/Root");
- op->MutableCreateColumnStore()->CopyFrom(store);
-
- server.GetRuntime()->Send(new IEventHandle(MakeTxProxyID(), sender, request.release()));
- auto ev = server.GetRuntime()->GrabEdgeEventRethrow<TEvTxUserProxy::TEvProposeTransactionStatus>(sender);
- ui64 txId = ev->Get()->Record.GetTxId();
- WaitForSchemeOperation(server, sender, txId);
- }
-
- void CreateTestOlapTable(Tests::TServer& server, TActorId sender, TString storeName, TString scheme) {
- NKikimrSchemeOp::TColumnTableDescription table;
- UNIT_ASSERT(::google::protobuf::TextFormat::ParseFromString(scheme, &table));
- auto request = std::make_unique<TEvTxUserProxy::TEvProposeTransaction>();
- request->Record.SetExecTimeoutPeriod(Max<ui64>());
- auto* op = request->Record.MutableTransaction()->MutableModifyScheme();
- op->SetOperationType(NKikimrSchemeOp::EOperationType::ESchemeOpCreateColumnTable);
- op->SetWorkingDir("/Root/" + storeName);
- op->MutableCreateColumnTable()->CopyFrom(table);
-
- server.GetRuntime()->Send(new IEventHandle(MakeTxProxyID(), sender, request.release()));
- auto ev = server.GetRuntime()->GrabEdgeEventRethrow<TEvTxUserProxy::TEvProposeTransactionStatus>(sender);
- ui64 txId = ev->Get()->Record.GetTxId();
- WaitForSchemeOperation(server, sender, txId);
- }
-
- void CreateTestOlapTable(Tests::TServer& server, TString tableName = "olapTable", TString storeName = "olapStore",
- ui32 storeShardsCount = 4, ui32 tableShardsCount = 3,
- TString shardingFunction = "HASH_FUNCTION_CLOUD_LOGS") {
- TActorId sender = server.GetRuntime()->AllocateEdgeActor();
- CreateTestOlapStore(server, sender, Sprintf(R"(
+ class TLocalHelper: public Tests::NCS::THelper {
+ private:
+ using TBase = Tests::NCS::THelper;
+ public:
+ void CreateTestOlapTable(TString tableName = "olapTable", TString storeName = "olapStore",
+ ui32 storeShardsCount = 4, ui32 tableShardsCount = 3,
+ TString shardingFunction = "HASH_FUNCTION_CLOUD_LOGS") {
+ TActorId sender = Server.GetRuntime()->AllocateEdgeActor();
+ CreateTestOlapStore(sender, Sprintf(R"(
Name: "%s"
ColumnShardCount: %d
SchemaPresets {
@@ -127,12 +89,12 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
}
)", storeName.c_str(), storeShardsCount));
- TString shardingColumns = "[\"timestamp\", \"uid\"]";
- if (shardingFunction != "HASH_FUNCTION_CLOUD_LOGS") {
- shardingColumns = "[\"uid\"]";
- }
+ TString shardingColumns = "[\"timestamp\", \"uid\"]";
+ if (shardingFunction != "HASH_FUNCTION_CLOUD_LOGS") {
+ shardingColumns = "[\"uid\"]";
+ }
- CreateTestOlapTable(server, sender, storeName, Sprintf(R"(
+ TBase::CreateTestOlapTable(sender, storeName, Sprintf(R"(
Name: "%s"
ColumnShardCount: %d
Sharding {
@@ -141,16 +103,14 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
Columns: %s
}
})", tableName.c_str(), tableShardsCount, shardingFunction.c_str(), shardingColumns.c_str()));
- }
-
-
- void CreateTestOlapTable(TKikimrRunner& kikimr, TString tableName = "olapTable", TString storeName = "olapStore",
- ui32 storeShardsCount = 4, ui32 tableShardsCount = 3,
- TString shardingFunction = "HASH_FUNCTION_CLOUD_LOGS") {
+ }
+ using TBase::TBase;
+ TLocalHelper(TKikimrRunner& runner)
+ : TBase(runner.GetTestServer())
+ {
- CreateTestOlapTable(kikimr.GetTestServer(), tableName, storeName, storeShardsCount, tableShardsCount,
- shardingFunction);
- }
+ }
+ };
std::shared_ptr<arrow::Schema> GetArrowSchema() {
return std::make_shared<arrow::Schema>(
@@ -536,7 +496,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
// EnableDebugLogging(kikimr);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000, 2);
@@ -568,7 +528,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
// EnableDebugLogging(kikimr);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000, 2);
@@ -599,7 +559,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
// EnableDebugLogging(kikimr);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000, 2);
@@ -631,7 +591,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
// EnableDebugLogging(kikimr);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000, 2);
@@ -792,7 +752,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
auto client = kikimr.GetTableClient();
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000, 3);
@@ -821,7 +781,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
.SetEnableKqpSessionActor(UseSessionActor);
TKikimrRunner kikimr(settings);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000);
auto tableClient = kikimr.GetTableClient();
@@ -846,7 +806,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
// EnableDebugLogging(kikimr);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
auto tableClient = kikimr.GetTableClient();
@@ -947,7 +907,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
auto client = kikimr.GetTableClient();
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000, 10);
TStreamExecScanQuerySettings scanSettings;
@@ -1022,7 +982,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
// EnableDebugLogging(kikimr);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000, 128);
auto tableClient = kikimr.GetTableClient();
@@ -1093,7 +1053,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
.SetEnableKqpSessionActor(UseSessionActor);
TKikimrRunner kikimr(settings);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000, 2000);
auto tableClient = kikimr.GetTableClient();
@@ -1125,7 +1085,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
.SetEnableKqpSessionActor(UseSessionActor);
TKikimrRunner kikimr(settings);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000, 2000);
// EnableDebugLogging(kikimr);
@@ -1174,7 +1134,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TStreamExecScanQuerySettings scanSettings;
scanSettings.Explain(true);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 5);
EnableDebugLogging(kikimr);
@@ -1312,7 +1272,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TKikimrRunner kikimr(settings);
// EnableDebugLogging(kikimr);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
auto tableClient = kikimr.GetTableClient();
{
@@ -1358,7 +1318,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TKikimrRunner kikimr(settings);
// EnableDebugLogging(kikimr);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
auto tableClient = kikimr.GetTableClient();
{
@@ -1398,7 +1358,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TKikimrRunner kikimr(settings);
// EnableDebugLogging(kikimr);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
auto tableClient = kikimr.GetTableClient();
{
@@ -1442,7 +1402,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TKikimrRunner kikimr(settings);
// EnableDebugLogging(kikimr);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
auto tableClient = kikimr.GetTableClient();
{
@@ -1485,7 +1445,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TKikimrRunner kikimr(settings);
// EnableDebugLogging(kikimr);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
auto tableClient = kikimr.GetTableClient();
{
@@ -1646,7 +1606,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TKikimrRunner kikimr(settings);
EnableDebugLogging(kikimr);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
auto tableClient = kikimr.GetTableClient();
{
@@ -1691,7 +1651,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
ui32 numShards = 1;
ui32 numIterations = 10;
- CreateTestOlapTable(*server, "olapTable", "olapStore", numShards, numShards);
+ TLocalHelper(*server).CreateTestOlapTable("olapTable", "olapStore", numShards, numShards);
ui32 insertRows = 0;
const ui32 iterationPackSize = 2000;
for (ui64 i = 0; i < numIterations; ++i) {
@@ -1735,20 +1695,6 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TestAggregationsInternal(cases);
}
- Y_UNIT_TEST(Aggregation_Composite_GroupByUR_Limit) {
- // https://st.yandex-team.ru/KIKIMR-16141
- return;
- TAggregationTestCase testCase;
- testCase.SetQuery(R"(
- SELECT uid, resource_id, count(*) AS c FROM `/Root/olapStore/olapTable` GROUP BY uid, resource_id LIMIT 10
- )")
- .AddExpectedPlanOptions("TKqpOlapAgg")
- .MutableRecordChecker().SetExpectedColumnsCount(3)
- ;
-
- TestAggregations({ testCase });
- }
-
Y_UNIT_TEST(Aggregation_ResultCountAll_FilterL) {
//https://st.yandex-team.ru/KIKIMR-16073
return;
@@ -1915,7 +1861,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TKikimrRunner kikimr(settings);
static ui32 numKinds = 5;
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr).CreateTestOlapTable();
for (ui64 i = 0; i < 100; ++i) {
WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000 + i*10000, 1000);
}
@@ -1957,8 +1903,8 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TKikimrRunner kikimr(settings);
static ui32 numKinds = 5;
- CreateTestOlapTable(kikimr, "olapTable_1");
- CreateTestOlapTable(kikimr, "olapTable_2");
+ TLocalHelper(kikimr).CreateTestOlapTable("olapTable_1");
+ TLocalHelper(kikimr).CreateTestOlapTable("olapTable_2");
for (ui64 i = 0; i < 10; ++i) {
WriteTestData(kikimr, "/Root/olapStore/olapTable_1", 0, 1000000 + i*10000, 1000);
WriteTestData(kikimr, "/Root/olapStore/olapTable_2", 0, 1000000 + i*10000, 2000);
@@ -2030,7 +1976,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
const ui32 numShards = 10;
const ui32 numIterations = 10;
- CreateTestOlapTable(*server, "selectTable", "selectStore", numShards, numShards);
+ TLocalHelper(*server).CreateTestOlapTable("selectTable", "selectStore", numShards, numShards);
ui32 insertRows = 0;
for(ui64 i = 0; i < numIterations; ++i) {
SendDataViaActorSystem(runtime, "/Root/selectStore/selectTable", 0, 1000000 + i*1000000, 2000);
@@ -2119,7 +2065,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
ui32 numShards = NSan::PlainOrUnderSanitizer(1000, 10);
ui32 numIterations = NSan::PlainOrUnderSanitizer(50, 10);
- CreateTestOlapTable(*server, "largeOlapTable", "largeOlapStore", numShards, numShards);
+ TLocalHelper(*server).CreateTestOlapTable("largeOlapTable", "largeOlapStore", numShards, numShards);
ui32 insertRows = 0;
for(ui64 i = 0; i < numIterations; ++i) {
SendDataViaActorSystem(runtime, "/Root/largeOlapStore/largeOlapTable", 0, 1000000 + i*1000000, 2000);
@@ -2185,7 +2131,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
const ui32 numShards = 10;
const ui32 numIterations = 50;
- CreateTestOlapTable(*server, "largeOlapTable", "largeOlapStore", numShards, numShards);
+ TLocalHelper(*server).CreateTestOlapTable("largeOlapTable", "largeOlapStore", numShards, numShards);
ui32 insertRows = 0;
for(ui64 i = 0; i < numIterations; ++i) {
SendDataViaActorSystem(runtime, "/Root/largeOlapStore/largeOlapTable", 0, 1000000 + i*1000000, 2000);
@@ -2250,7 +2196,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
ui32 numShards = 1;
ui32 numIterations = 100;
- CreateTestOlapTable(*server, "largeOlapTable", "largeOlapStore", numShards, numShards);
+ TLocalHelper(*server).CreateTestOlapTable("largeOlapTable", "largeOlapStore", numShards, numShards);
ui32 insertRows = 0;
const ui32 iterationPackSize = 2000;
for (ui64 i = 0; i < numIterations; ++i) {
@@ -2337,7 +2283,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
ui32 numShards = NSan::PlainOrUnderSanitizer(100, 10);
ui32 numIterations = NSan::PlainOrUnderSanitizer(100, 10);
- CreateTestOlapTable(*server, "largeOlapTable", "largeOlapStore", numShards, numShards);
+ TLocalHelper(*server).CreateTestOlapTable("largeOlapTable", "largeOlapStore", numShards, numShards);
ui32 insertRows = 0;
for(ui64 i = 0; i < numIterations; ++i) {
@@ -2420,7 +2366,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TKikimrRunner kikimr(settings);
static ui32 numKinds = 5;
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable();
for (ui64 i = 0; i < 10; ++i) {
WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000 + i*10000, 2000);
}
@@ -2481,9 +2427,9 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TKikimrRunner kikimr(settings);
static ui32 numKinds = 5;
- CreateTestOlapTable(kikimr, "olapTable_1");
- CreateTestOlapTable(kikimr, "olapTable_2");
- CreateTestOlapTable(kikimr, "olapTable_3");
+ TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable("olapTable_1");
+ TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable("olapTable_2");
+ TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable("olapTable_3");
for (ui64 i = 0; i < 10; ++i) {
WriteTestData(kikimr, "/Root/olapStore/olapTable_1", 0, 1000000 + i*10000, 2000);
@@ -2566,7 +2512,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
.SetEnableKqpSessionActor(UseSessionActor);
TKikimrRunner kikimr(settings);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable();
for (ui64 i = 0; i < 10; ++i) {
WriteTestData(kikimr, "/Root/olapStore/olapTable", 0, 1000000 + i*10000, 2000);
}
@@ -2641,9 +2587,9 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TKikimrRunner kikimr(settings);
static ui32 numKinds = 5;
- CreateTestOlapTable(kikimr, "olapTable_1");
- CreateTestOlapTable(kikimr, "olapTable_2");
- CreateTestOlapTable(kikimr, "olapTable_3");
+ TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable("olapTable_1");
+ TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable("olapTable_2");
+ TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable("olapTable_3");
for (ui64 i = 0; i < 100; ++i) {
WriteTestData(kikimr, "/Root/olapStore/olapTable_1", 0, 1000000 + i*10000, 1000);
@@ -2821,7 +2767,7 @@ Y_UNIT_TEST_SUITE(KqpOlap) {
TStreamExecScanQuerySettings scanSettings;
scanSettings.Explain(true);
- CreateTestOlapTable(kikimr);
+ TLocalHelper(kikimr.GetTestServer()).CreateTestOlapTable();
WriteTestData(kikimr, "/Root/olapStore/olapTable", 10000, 3000000, 1000);
auto tableClient = kikimr.GetTableClient();
diff --git a/ydb/core/testlib/CMakeLists.txt b/ydb/core/testlib/CMakeLists.txt
index c5ab86c1f78..208914902ec 100644
--- a/ydb/core/testlib/CMakeLists.txt
+++ b/ydb/core/testlib/CMakeLists.txt
@@ -98,6 +98,8 @@ target_link_libraries(ydb-core-testlib PUBLIC
)
target_sources(ydb-core-testlib PRIVATE
${CMAKE_SOURCE_DIR}/ydb/core/testlib/actor_helpers.cpp
+ ${CMAKE_SOURCE_DIR}/ydb/core/testlib/common_helper.cpp
+ ${CMAKE_SOURCE_DIR}/ydb/core/testlib/cs_helper.cpp
${CMAKE_SOURCE_DIR}/ydb/core/testlib/fake_coordinator.cpp
${CMAKE_SOURCE_DIR}/ydb/core/testlib/tablet_flat_dummy.cpp
${CMAKE_SOURCE_DIR}/ydb/core/testlib/tablet_helpers.cpp
diff --git a/ydb/core/testlib/common_helper.cpp b/ydb/core/testlib/common_helper.cpp
new file mode 100644
index 00000000000..2935060e0d7
--- /dev/null
+++ b/ydb/core/testlib/common_helper.cpp
@@ -0,0 +1,16 @@
+#include "cs_helper.h"
+#include <ydb/core/tx/schemeshard/schemeshard.h>
+
+namespace NKikimr::Tests::NCommon {
+
+void THelper::WaitForSchemeOperation(TActorId sender, ui64 txId) {
+ auto& runtime = *Server.GetRuntime();
+ auto& settings = Server.GetSettings();
+ auto request = MakeHolder<NSchemeShard::TEvSchemeShard::TEvNotifyTxCompletion>();
+ request->Record.SetTxId(txId);
+ auto tid = ChangeStateStorage(Tests::SchemeRoot, settings.Domain);
+ runtime.SendToPipe(tid, sender, request.Release(), 0, GetPipeConfigWithRetries());
+ runtime.GrabEdgeEventRethrow<NSchemeShard::TEvSchemeShard::TEvNotifyTxCompletionResult>(sender);
+}
+
+}
diff --git a/ydb/core/testlib/common_helper.h b/ydb/core/testlib/common_helper.h
new file mode 100644
index 00000000000..5870a770c6f
--- /dev/null
+++ b/ydb/core/testlib/common_helper.h
@@ -0,0 +1,17 @@
+#pragma once
+#include "test_client.h"
+
+namespace NKikimr::Tests::NCommon {
+
+class THelper {
+protected:
+ void WaitForSchemeOperation(TActorId sender, ui64 txId);
+
+ Tests::TServer& Server;
+public:
+ THelper(TServer& server)
+ : Server(server) {
+
+ }
+};
+}
diff --git a/ydb/core/testlib/cs_helper.cpp b/ydb/core/testlib/cs_helper.cpp
new file mode 100644
index 00000000000..6441df5be9e
--- /dev/null
+++ b/ydb/core/testlib/cs_helper.cpp
@@ -0,0 +1,41 @@
+#include "cs_helper.h"
+#include <library/cpp/actors/core/event.h>
+#include <library/cpp/testing/unittest/registar.h>
+#include <ydb/core/tx/tx_proxy/proxy.h>
+
+namespace NKikimr::Tests::NCS {
+
+void THelper::CreateTestOlapStore(TActorId sender, TString scheme) {
+ NKikimrSchemeOp::TColumnStoreDescription store;
+ UNIT_ASSERT(::google::protobuf::TextFormat::ParseFromString(scheme, &store));
+
+ auto request = std::make_unique<TEvTxUserProxy::TEvProposeTransaction>();
+ request->Record.SetExecTimeoutPeriod(Max<ui64>());
+ auto* op = request->Record.MutableTransaction()->MutableModifyScheme();
+ op->SetOperationType(NKikimrSchemeOp::EOperationType::ESchemeOpCreateColumnStore);
+ op->SetWorkingDir("/Root");
+ op->MutableCreateColumnStore()->CopyFrom(store);
+
+ Server.GetRuntime()->Send(new IEventHandle(MakeTxProxyID(), sender, request.release()));
+ auto ev = Server.GetRuntime()->GrabEdgeEventRethrow<TEvTxUserProxy::TEvProposeTransactionStatus>(sender);
+ ui64 txId = ev->Get()->Record.GetTxId();
+ WaitForSchemeOperation(sender, txId);
+}
+
+void THelper::CreateTestOlapTable(TActorId sender, TString storeName, TString scheme) {
+ NKikimrSchemeOp::TColumnTableDescription table;
+ UNIT_ASSERT(::google::protobuf::TextFormat::ParseFromString(scheme, &table));
+ auto request = std::make_unique<TEvTxUserProxy::TEvProposeTransaction>();
+ request->Record.SetExecTimeoutPeriod(Max<ui64>());
+ auto* op = request->Record.MutableTransaction()->MutableModifyScheme();
+ op->SetOperationType(NKikimrSchemeOp::EOperationType::ESchemeOpCreateColumnTable);
+ op->SetWorkingDir("/Root/" + storeName);
+ op->MutableCreateColumnTable()->CopyFrom(table);
+
+ Server.GetRuntime()->Send(new IEventHandle(MakeTxProxyID(), sender, request.release()));
+ auto ev = Server.GetRuntime()->GrabEdgeEventRethrow<TEvTxUserProxy::TEvProposeTransactionStatus>(sender);
+ ui64 txId = ev->Get()->Record.GetTxId();
+ WaitForSchemeOperation(sender, txId);
+}
+
+}
diff --git a/ydb/core/testlib/cs_helper.h b/ydb/core/testlib/cs_helper.h
new file mode 100644
index 00000000000..3c0123ea2b2
--- /dev/null
+++ b/ydb/core/testlib/cs_helper.h
@@ -0,0 +1,15 @@
+#pragma once
+#include "common_helper.h"
+
+namespace NKikimr::Tests::NCS {
+
+class THelper: public NCommon::THelper {
+private:
+ using TBase = NCommon::THelper;
+public:
+ using TBase::TBase;
+ void CreateTestOlapStore(TActorId sender, TString scheme);
+ void CreateTestOlapTable(TActorId sender, TString storeName, TString scheme);
+};
+
+}
diff --git a/ydb/core/tx/datashard/datashard_ut_common.cpp b/ydb/core/tx/datashard/datashard_ut_common.cpp
index 83554e0834c..1f3b0ac7545 100644
--- a/ydb/core/tx/datashard/datashard_ut_common.cpp
+++ b/ydb/core/tx/datashard/datashard_ut_common.cpp
@@ -1055,48 +1055,8 @@ THolder<NKqp::TEvKqp::TEvQueryRequest> MakeSQLRequest(const TString &sql,
}
void InitRoot(Tests::TServer::TPtr server,
- TActorId sender)
-{
- if (server->GetSettings().StoragePoolTypes.empty()) {
- return;
- }
-
- auto &runtime = *server->GetRuntime();
- auto &settings = server->GetSettings();
-
- auto tid = ChangeStateStorage(SchemeRoot, settings.Domain);
- const TDomainsInfo::TDomain& domain = runtime.GetAppData().DomainsInfo->GetDomain(settings.Domain);
-
- auto evTx = MakeHolder<TEvSchemeShard::TEvModifySchemeTransaction>(1, tid);
- auto transaction = evTx->Record.AddTransaction();
- transaction->SetOperationType(NKikimrSchemeOp::EOperationType::ESchemeOpAlterSubDomain);
- transaction->SetWorkingDir("/");
- auto op = transaction->MutableSubDomain();
- op->SetName(domain.Name);
-
- for (const auto& [kind, pool] : settings.StoragePoolTypes) {
- auto* p = op->AddStoragePools();
- p->SetKind(kind);
- p->SetName(pool.GetName());
- }
-
- runtime.SendToPipe(tid, sender, evTx.Release(), 0, GetPipeConfigWithRetries());
-
- {
- TAutoPtr<IEventHandle> handle;
- auto event = runtime.GrabEdgeEvent<TEvSchemeShard::TEvModifySchemeTransactionResult>(handle);
- UNIT_ASSERT_VALUES_EQUAL(event->Record.GetSchemeshardId(), tid);
- UNIT_ASSERT_VALUES_EQUAL(event->Record.GetStatus(), NKikimrScheme::EStatus::StatusAccepted);
- }
-
- auto evSubscribe = MakeHolder<TEvSchemeShard::TEvNotifyTxCompletion>(1);
- runtime.SendToPipe(tid, sender, evSubscribe.Release(), 0, GetPipeConfigWithRetries());
-
- {
- TAutoPtr<IEventHandle> handle;
- auto event = runtime.GrabEdgeEvent<TEvSchemeShard::TEvNotifyTxCompletionResult>(handle);
- UNIT_ASSERT_VALUES_EQUAL(event->Record.GetTxId(), 1);
- }
+ TActorId sender) {
+ server->SetupRootStoragePools(sender);
}
static THolder<TEvTxUserProxy::TEvProposeTransaction> SchemeTxTemplate(
diff --git a/ydb/core/tx/datashard/datashard_ut_snapshot.cpp b/ydb/core/tx/datashard/datashard_ut_snapshot.cpp
index f9f5ec7f53a..3432193978f 100644
--- a/ydb/core/tx/datashard/datashard_ut_snapshot.cpp
+++ b/ydb/core/tx/datashard/datashard_ut_snapshot.cpp
@@ -1670,7 +1670,7 @@ Y_UNIT_TEST_SUITE(DataShardSnapshots) {
runtime.SetLogPriority(NKikimrServices::TX_DATASHARD, NLog::PRI_TRACE);
runtime.SetLogPriority(NKikimrServices::TX_PROXY, NLog::PRI_DEBUG);
- InitRoot(server, sender);
+ server->SetupRootStoragePools(sender);
TDisableDataShardLogBatching disableDataShardLogBatching;
CreateShardedTable(server, sender, "/Root", "table-1", 1);