diff options
author | ivanmorozov <[email protected]> | 2022-10-23 15:24:51 +0300 |
---|---|---|
committer | ivanmorozov <[email protected]> | 2022-10-23 15:24:51 +0300 |
commit | 0e27829686e39af2c1e9e32270fd0f92e449ee16 (patch) | |
tree | 6bb0243330db28b2c1b9ff651c82e02fbb75150f | |
parent | 24108b105a2906e52c67ca6f2776700c2c97c026 (diff) |
reuse methods for tests and incapsulate in special helpers
-rw-r--r-- | ydb/core/kqp/ut/common/kqp_ut_common.cpp | 41 | ||||
-rw-r--r-- | ydb/core/kqp/ut/kqp_olap_ut.cpp | 172 | ||||
-rw-r--r-- | ydb/core/testlib/CMakeLists.txt | 2 | ||||
-rw-r--r-- | ydb/core/testlib/common_helper.cpp | 16 | ||||
-rw-r--r-- | ydb/core/testlib/common_helper.h | 17 | ||||
-rw-r--r-- | ydb/core/testlib/cs_helper.cpp | 41 | ||||
-rw-r--r-- | ydb/core/testlib/cs_helper.h | 15 | ||||
-rw-r--r-- | ydb/core/tx/datashard/datashard_ut_common.cpp | 44 | ||||
-rw-r--r-- | ydb/core/tx/datashard/datashard_ut_snapshot.cpp | 2 |
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); |