Skip to content

Commit ba8aab8

Browse files
authored
test for invalid reassign (#28404)
1 parent d77c4f4 commit ba8aab8

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
@@ -8233,6 +8233,69 @@ Y_UNIT_TEST_SUITE(THiveTest) {
82338233
}
82348234
}
82358235

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

0 commit comments

Comments
 (0)