Skip to content

Commit 72e47d6

Browse files
pdisk filter
1 parent 5e2e7ea commit 72e47d6

File tree

3 files changed

+130
-0
lines changed

3 files changed

+130
-0
lines changed

ydb/core/viewer/json_storage.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ class TJsonStorage : public TJsonStorageBase {
125125
}
126126

127127
void Bootstrap() override {
128+
Cerr << "iiiii Bootstrap" << Endl;
128129
TIntrusivePtr<TDomainsInfo> domains = AppData()->DomainsInfo;
129130
ui64 hiveId = domains->GetHive();
130131
if (hiveId != TDomainsInfo::BadTabletId) {

ydb/core/viewer/json_storage_base.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,7 @@ class TJsonStorageBase : public TViewerPipeClient<TJsonStorageBase> {
263263
}
264264

265265
void Handle(TEvInterconnect::TEvNodesInfo::TPtr& ev) {
266+
Cerr << "iiiiiiiiii TEvNodesInfo 1" << Endl;
266267
ui32 maxAllowedNodeId = std::numeric_limits<ui32>::max();
267268
TIntrusivePtr<TDynamicNameserviceConfig> dynamicNameserviceConfig = AppData()->DynamicNameserviceConfig;
268269
if (dynamicNameserviceConfig) {
@@ -274,6 +275,7 @@ class TJsonStorageBase : public TViewerPipeClient<TJsonStorageBase> {
274275
SendNodeRequests(ni.NodeId);
275276
}
276277
}
278+
Cerr << "iiiiiiiiii TEvNodesInfo 2" << Endl;
277279
RequestDone();
278280
}
279281

@@ -312,6 +314,7 @@ class TJsonStorageBase : public TViewerPipeClient<TJsonStorageBase> {
312314
}
313315

314316
void Handle(TEvHive::TEvResponseHiveStorageStats::TPtr& ev) {
317+
Cerr << "iiiii TEvResponseHiveStorageStats" << Endl;
315318
HiveStorageStats[ev->Cookie] = ev->Release();
316319
RequestDone();
317320
}
@@ -351,7 +354,9 @@ class TJsonStorageBase : public TViewerPipeClient<TJsonStorageBase> {
351354
}
352355

353356
void Handle(TEvWhiteboard::TEvVDiskStateResponse::TPtr& ev) {
357+
Cerr << "iiiii TEvVDiskStateResponse" << Endl;
354358
ui64 nodeId = ev.Get()->Cookie;
359+
Cerr << "iiiii nodeid" << nodeId << Endl;
355360
auto& vDiskInfo = VDiskInfo[nodeId] = std::move(ev->Get()->Record);
356361
for (auto& vDiskStateInfo : *(vDiskInfo.MutableVDiskStateInfo())) {
357362
vDiskStateInfo.SetNodeId(nodeId);
@@ -368,11 +373,13 @@ class TJsonStorageBase : public TViewerPipeClient<TJsonStorageBase> {
368373

369374
void Handle(TEvWhiteboard::TEvBSGroupStateResponse::TPtr& ev) {
370375
ui64 nodeId = ev.Get()->Cookie;
376+
Cerr << "iiiiiiiiiiiii Cookie " << nodeId << Endl;
371377
for (const auto& info : ev->Get()->Record.GetBSGroupStateInfo()) {
372378
TString storagePoolName = info.GetStoragePoolName();
373379
if (storagePoolName.empty()) {
374380
continue;
375381
}
382+
Cerr << "iiiiiiiiiiiii nodeId " << info.GetNodeId() << Endl;
376383
if (FilterNodeIds.empty() || FilterNodeIds.contains(info.GetNodeId())) {
377384
StoragePoolInfo[storagePoolName].Groups.emplace(ToString(info.GetGroupID()));
378385
TString groupId(ToString(info.GetGroupID()));
@@ -381,6 +388,7 @@ class TJsonStorageBase : public TViewerPipeClient<TJsonStorageBase> {
381388
}
382389
}
383390
for (const auto& vDiskNodeId : info.GetVDiskNodeIds()) {
391+
Cerr << "iiiiiiiiiiiii vDiskNodeId " << vDiskNodeId << Endl;
384392
Group2NodeId[info.GetGroupID()].push_back(vDiskNodeId);
385393
}
386394
}

ydb/core/viewer/viewer_ut.cpp

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ Y_UNIT_TEST_SUITE(Viewer) {
274274
nodes.clear();
275275

276276
for (int nodeId = 0; nodeId < nodesTotal; nodeId++) {
277+
sample.NodeId = nodeId;
277278
nodes.emplace_back(sample);
278279
}
279280
}
@@ -1317,4 +1318,124 @@ Y_UNIT_TEST_SUITE(Viewer) {
13171318
"description",
13181319
});
13191320
}
1321+
1322+
void ChangeBSGroupStateResponse(TEvWhiteboard::TEvBSGroupStateResponse::TPtr* ev) {
1323+
auto& pbRecord = (*ev)->Get()->Record;
1324+
// pbRecord.clear_bsgroupstateinfo();
1325+
// auto state = pbRecord.add_bsgroupstateinfo();
1326+
Cerr << pbRecord.ShortDebugString() << Endl;
1327+
}
1328+
1329+
void ChangePDiskStateResponse(TEvWhiteboard::TEvPDiskStateResponse::TPtr* ev) {
1330+
auto& pbRecord = (*ev)->Get()->Record;
1331+
// pbRecord.clear_pdiskstateinfo();
1332+
// auto state = pbRecord.add_pdiskstateinfo();
1333+
Cerr << pbRecord.ShortDebugString() << Endl;
1334+
}
1335+
1336+
1337+
void ChangeVDiskStateOn9NodeResponse(NNodeWhiteboard::TEvWhiteboard::TEvVDiskStateResponse::TPtr* ev) {
1338+
ui64 nodeId = (*ev)->Cookie;
1339+
auto& pbRecord = (*ev)->Get()->Record;
1340+
1341+
auto sample = pbRecord.vdiskstateinfo(0);
1342+
pbRecord.clear_vdiskstateinfo();
1343+
1344+
for (int k = 1; k <= 8; k++) {
1345+
auto groupId = (nodeId + k) % 9;
1346+
ui32 pdisk = k <= 4 ? 0 : 1;
1347+
ui32 slotid = k % 4;
1348+
auto vdisk = 0;
1349+
auto state = pbRecord.add_vdiskstateinfo();
1350+
state->CopyFrom(sample);
1351+
state->set_pdiskid(pdisk);
1352+
state->set_vdiskslotid(slotid);
1353+
state->mutable_vdiskid()->set_vdisk(vdisk++);
1354+
state->mutable_vdiskid()->set_groupid(groupId);
1355+
state->set_vdiskstate(NKikimrWhiteboard::EVDiskState::OK);
1356+
state->set_nodeid(nodeId);
1357+
}
1358+
}
1359+
1360+
void JsonStorage9NodesListingTest() {
1361+
TPortManager tp;
1362+
ui16 port = tp.GetPort(2134);
1363+
ui16 grpcPort = tp.GetPort(2135);
1364+
auto settings = TServerSettings(port);
1365+
settings.InitKikimrRunConfig()
1366+
.SetNodeCount(1)
1367+
.SetUseRealThreads(false)
1368+
.SetDomainName("Root");
1369+
TServer server(settings);
1370+
server.EnableGRpc(grpcPort);
1371+
TClient client(settings);
1372+
TTestActorRuntime& runtime = *server.GetRuntime();
1373+
1374+
TActorId sender = runtime.AllocateEdgeActor();
1375+
TAutoPtr<IEventHandle> handle;
1376+
1377+
THttpRequest httpReq(HTTP_METHOD_GET);
1378+
httpReq.CgiParameters.emplace("with", "all");
1379+
httpReq.CgiParameters.emplace("version", "v2");
1380+
// httpReq.CgiParameters.emplace("node_id", "1");
1381+
auto page = MakeHolder<TMonPage>("viewer", "title");
1382+
TMonService2HttpRequest monReq(nullptr, &httpReq, nullptr, page.Get(), "/json/storage", nullptr);
1383+
auto request = MakeHolder<NMon::TEvHttpInfo>(monReq);
1384+
1385+
auto observerFunc = [&](TAutoPtr<IEventHandle>& ev) {
1386+
Y_UNUSED(ev);
1387+
switch (ev->GetTypeRewrite()) {
1388+
case TEvInterconnect::EvNodesInfo: {
1389+
auto *x = reinterpret_cast<TEvInterconnect::TEvNodesInfo::TPtr*>(&ev);
1390+
Cerr << "aaaa EvNodesInfo 1" << Endl;
1391+
ChangeListNodes(x, 9);
1392+
Cerr << "aaaa EvNodesInfo 2" << Endl;
1393+
break;
1394+
}
1395+
case TEvWhiteboard::EvBSGroupStateResponse: {
1396+
auto *x = reinterpret_cast<TEvWhiteboard::TEvBSGroupStateResponse::TPtr*>(&ev);
1397+
Cerr << "aaaa EvBSGroupStateResponse 1" << Endl;
1398+
ChangeBSGroupStateResponse(x);
1399+
Cerr << "aaaa EvBSGroupStateResponse 2" << Endl;
1400+
break;
1401+
}
1402+
case TEvWhiteboard::EvVDiskStateResponse: {
1403+
auto *x = reinterpret_cast<TEvWhiteboard::TEvVDiskStateResponse::TPtr*>(&ev);
1404+
Cerr << "aaaa EvVDiskStateResponse 1" << Endl;
1405+
ChangeVDiskStateOn9NodeResponse(x);
1406+
Cerr << "aaaa EvVDiskStateResponse 2" << Endl;
1407+
break;
1408+
}
1409+
case TEvWhiteboard::EvPDiskStateResponse: {
1410+
auto *x = reinterpret_cast<TEvWhiteboard::TEvPDiskStateResponse::TPtr*>(&ev);
1411+
Cerr << "aaaa EvPDiskStateResponse 1" << Endl;
1412+
ChangePDiskStateResponse(x);
1413+
Cerr << "aaaa EvPDiskStateResponse 2" << Endl;
1414+
break;
1415+
}
1416+
}
1417+
1418+
return TTestActorRuntime::EEventAction::PROCESS;
1419+
};
1420+
runtime.SetObserverFunc(observerFunc);
1421+
1422+
runtime.Send(new IEventHandle(NKikimr::NViewer::MakeViewerID(0), sender, request.Release(), 0));
1423+
NMon::TEvHttpInfoRes* result = runtime.GrabEdgeEvent<NMon::TEvHttpInfoRes>(handle);
1424+
1425+
size_t pos = result->Answer.find('{');
1426+
TString jsonResult = result->Answer.substr(pos);
1427+
Cerr << "json result: " << jsonResult << Endl;
1428+
NJson::TJsonValue json;
1429+
try {
1430+
NJson::ReadJsonTree(jsonResult, &json, true);
1431+
}
1432+
catch (yexception ex) {
1433+
Ctest << ex.what() << Endl;
1434+
}
1435+
// UNIT_ASSERT_VALUES_EQUAL(json.GetMap().contains("StorageGroups"), isExpectingGroup);
1436+
}
1437+
1438+
Y_UNIT_TEST(JsonStorage9NodesListingV1NodeIdFilter) {
1439+
JsonStorage9NodesListingTest();
1440+
}
13201441
}

0 commit comments

Comments
 (0)