Skip to content

Commit 3c2e809

Browse files
vporyadkeydbot
authored andcommitted
test for invalid reassign (#28404)
1 parent 66912fe commit 3c2e809

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

ydb/core/mind/hive/hive_ut.cpp

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8229,6 +8229,69 @@ Y_UNIT_TEST_SUITE(THiveTest) {
82298229
}
82308230
}
82318231

8232+
Y_UNIT_TEST(TestReassignNonexistentTablet) {
8233+
TTestBasicRuntime runtime(1, false);
8234+
Setup(runtime, true);
8235+
8236+
const ui64 hiveTablet = MakeDefaultHiveID();
8237+
const ui64 testerTablet = MakeTabletID(false, 1);
8238+
const TActorId hiveActor = CreateTestBootstrapper(runtime, CreateTestTabletInfo(hiveTablet, TTabletTypes::Hive), &CreateDefaultHive);
8239+
runtime.EnableScheduleForActor(hiveActor);
8240+
MakeSureTabletIsUp(runtime, hiveTablet, 0);
8241+
TActorId sender = runtime.AllocateEdgeActor(0);
8242+
8243+
{
8244+
TDispatchOptions options;
8245+
options.FinalEvents.emplace_back(TEvLocal::EvSyncTablets);
8246+
runtime.DispatchEvents(options);
8247+
}
8248+
8249+
THolder<TEvHive::TEvCreateTablet> createTablet = MakeHolder<TEvHive::TEvCreateTablet>(testerTablet, 1, TTabletTypes::Dummy, BINDED_CHANNELS);
8250+
ui64 tablet = SendCreateTestTablet(runtime, hiveTablet, testerTablet, std::move(createTablet), 0, true);
8251+
8252+
MakeSureTabletIsUp(runtime, tablet, 0);
8253+
8254+
{
8255+
NActorsProto::TRemoteHttpInfo pb;
8256+
pb.SetMethod(HTTP_METHOD_POST);
8257+
pb.SetPath("/app");
8258+
auto* p1 = pb.AddQueryParams();
8259+
p1->SetKey("TabletID");
8260+
p1->SetValue(TStringBuilder() << hiveTablet);
8261+
auto* p2 = pb.AddQueryParams();
8262+
p2->SetKey("page");
8263+
p2->SetValue("ReassignTablet");
8264+
auto* p3 = pb.AddQueryParams();
8265+
p3->SetKey("tablet");
8266+
p3->SetValue("52");
8267+
runtime.SendToPipe(hiveTablet, sender, new NMon::TEvRemoteHttpInfo(std::move(pb)), 0, GetPipeConfigWithRetries());
8268+
8269+
TAutoPtr<IEventHandle> handle;
8270+
auto resp = runtime.GrabEdgeEventRethrow<NMon::TEvRemoteJsonInfoRes>(handle);
8271+
Ctest << "Hive response: " << resp->Json << Endl;
8272+
NJson::TJsonValue value;
8273+
ReadJsonTree(resp->Json, &value, false);
8274+
UNIT_ASSERT_VALUES_EQUAL(value["total"].GetIntegerSafe(), 0);
8275+
}
8276+
8277+
// this must not block balancer
8278+
8279+
{
8280+
THolder<TEvHive::TEvTabletMetrics> metrics = MakeHolder<TEvHive::TEvTabletMetrics>();
8281+
NKikimrHive::TTabletMetrics* metric = metrics->Record.AddTabletMetrics();
8282+
metric->SetTabletID(tablet);
8283+
metric->MutableResourceUsage()->SetNetwork(9000);
8284+
8285+
runtime.SendToPipe(hiveTablet, sender, metrics.Release());
8286+
}
8287+
8288+
{
8289+
TDispatchOptions options;
8290+
options.FinalEvents.push_back(NHive::TEvPrivate::EvBalancerOut);
8291+
runtime.DispatchEvents(options);
8292+
}
8293+
}
8294+
82328295
Y_UNIT_TEST(TestTabletsStartingCounter) {
82338296
TTestBasicRuntime runtime(1, false);
82348297
Setup(runtime, true);

0 commit comments

Comments
 (0)