diff options
author | zverevgeny <zverevgeny@ydb.tech> | 2025-04-09 09:44:25 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-09 09:44:25 +0300 |
commit | d42149aab9a13a57ed779d9ed2aed8d1e34ec7ea (patch) | |
tree | 5dd63d577fc78fad94cd27dc19db66bcd68c6bc3 | |
parent | 34a1855aaa5fb3d26817b2bbedbebc08a57f6a11 (diff) | |
download | ydb-d42149aab9a13a57ed779d9ed2aed8d1e34ec7ea.tar.gz |
test overload with WritePortionsOnInsert (#16963)
-rw-r--r-- | ydb/core/tx/columnshard/ut_rw/ut_columnshard_read_write.cpp | 53 |
1 files changed, 28 insertions, 25 deletions
diff --git a/ydb/core/tx/columnshard/ut_rw/ut_columnshard_read_write.cpp b/ydb/core/tx/columnshard/ut_rw/ut_columnshard_read_write.cpp index 394868ac571..2e5078be89a 100644 --- a/ydb/core/tx/columnshard/ut_rw/ut_columnshard_read_write.cpp +++ b/ydb/core/tx/columnshard/ut_rw/ut_columnshard_read_write.cpp @@ -10,6 +10,7 @@ #include <ydb/core/tx/columnshard/hooks/testing/controller.h> #include <ydb/core/tx/columnshard/operations/write_data.h> #include <ydb/core/tx/columnshard/test_helper/columnshard_ut_common.h> +#include <ydb/core/tx/columnshard/test_helper/test_combinator.h> #include <ydb/core/tx/columnshard/test_helper/controllers.h> #include <ydb/core/tx/columnshard/test_helper/shard_reader.h> #include <ydb/core/tx/columnshard/test_helper/shard_writer.h> @@ -434,11 +435,12 @@ void TestWrite(const TestTableDescription& table) { UNIT_ASSERT(ok); } -void TestWriteOverload(const TestTableDescription& table) { +void TestWriteOverload(const TestTableDescription& table, bool WritePortionsOnInsert) { TTestBasicRuntime runtime; TTester::Setup(runtime); + runtime.GetAppData().FeatureFlags.SetEnableWritePortionsOnInsert(WritePortionsOnInsert); auto csDefaultControllerGuard = NKikimr::NYDBTest::TControllers::RegisterCSControllerGuard<TDefaultTestsController>(); - + csDefaultControllerGuard->SetOverrideBlobSplitSettings(std::nullopt); TActorId sender = runtime.AllocateEdgeActor(); CreateTestBootstrapper(runtime, CreateTestTabletInfo(TTestTxConfig::TxTablet0, TTabletTypes::ColumnShard), &CreateColumnShard); @@ -462,26 +464,31 @@ void TestWriteOverload(const TestTableDescription& table) { TDeque<TAutoPtr<IEventHandle>> capturedWrites; auto captureEvents = [&](TTestActorRuntimeBase&, TAutoPtr<IEventHandle>& ev) { - if (auto* msg = TryGetPrivateEvent<NColumnShard::TEvPrivate::TEvWriteBlobsResult>(ev)) { - Cerr << "CATCH TEvWrite, status " << msg->GetPutResult().GetPutStatus() << Endl; - if (toCatch && msg->GetPutResult().GetPutStatus() != NKikimrProto::UNKNOWN) { - capturedWrites.push_back(ev.Release()); + if (toCatch) { + TAutoPtr<IEventHandle> eventToCapture; + if (WritePortionsOnInsert) { + if (auto* msg = TryGetPrivateEvent<NColumnShard::NPrivateEvents::NWrite::TEvWritePortionResult>(ev)) { + Cerr << "CATCH TEvWritePortionResult, status " << msg->GetWriteStatus() << Endl; + if (msg->GetWriteStatus() != NKikimrProto::EReplyStatus::UNKNOWN) { + eventToCapture = ev.Release(); + } + } + } else { + if (auto* msg = TryGetPrivateEvent<NColumnShard::TEvPrivate::TEvWriteBlobsResult>(ev)) { + Cerr << "CATCH TEvWrite, status " << msg->GetPutResult().GetPutStatus() << Endl; + if (msg->GetPutResult().GetPutStatus() != NKikimrProto::UNKNOWN) { + eventToCapture = ev.Release(); + } + } + } + if (eventToCapture) { --toCatch; + capturedWrites.push_back(std::move(eventToCapture)); return true; - } else { - return false; } } return false; }; - - auto resendOneCaptured = [&]() { - UNIT_ASSERT(capturedWrites.size()); - Cerr << "RESEND TEvWrite" << Endl; - runtime.Send(capturedWrites.front().Release()); - capturedWrites.pop_front(); - }; - runtime.SetEventFilter(captureEvents); const ui32 toSend = toCatch + 1; @@ -492,7 +499,8 @@ void TestWriteOverload(const TestTableDescription& table) { UNIT_ASSERT_VALUES_EQUAL(WaitWriteResult(runtime, TTestTxConfig::TxTablet0), (ui32)NKikimrDataEvents::TEvWriteResult::STATUS_OVERLOADED); while (capturedWrites.size()) { - resendOneCaptured(); + runtime.Send(capturedWrites.front().Release()); + capturedWrites.pop_front(); UNIT_ASSERT_VALUES_EQUAL(WaitWriteResult(runtime, TTestTxConfig::TxTablet0), (ui32)NKikimrDataEvents::TEvWriteResult::STATUS_COMPLETED); } @@ -1665,15 +1673,10 @@ Y_UNIT_TEST_SUITE(TColumnShardTestReadWrite) { TestWrite(table); } - Y_UNIT_TEST(WriteOverload) { + Y_UNIT_TEST_QUATRO(WriteOverload, InStore, WithWritePortionsOnInsert) { TestTableDescription table; - TestWriteOverload(table); - } - - Y_UNIT_TEST(WriteStandaloneOverload) { - TestTableDescription table; - table.InStore = false; - TestWriteOverload(table); + table.InStore = InStore; + TestWriteOverload(table, WithWritePortionsOnInsert); } Y_UNIT_TEST(WriteReadDuplicate) { |