Skip to content

Commit 55bb8ab

Browse files
authored
correct uptime group-by in viewer/nodes (#15258)
1 parent c30a288 commit 55bb8ab

File tree

4 files changed

+302
-36
lines changed

4 files changed

+302
-36
lines changed

ydb/core/tablet/node_whiteboard.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -721,6 +721,9 @@ class TNodeWhiteboardService : public TActorBootstrapped<TNodeWhiteboardService>
721721
auto& endpoint = *SystemStateInfo.AddEndpoints();
722722
endpoint.SetName(ev->Get()->Name);
723723
endpoint.SetAddress(ev->Get()->Address);
724+
std::sort(SystemStateInfo.MutableEndpoints()->begin(), SystemStateInfo.MutableEndpoints()->end(), [](const auto& a, const auto& b) {
725+
return a.GetName() < b.GetName();
726+
});
724727
SystemStateInfo.SetChangeTime(ctx.Now().MilliSeconds());
725728
}
726729

ydb/core/viewer/tests/canondata/result.json

Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2972,6 +2972,242 @@
29722972
"TotalNodes": "1"
29732973
}
29742974
},
2975+
"test.test_viewer_nodes_issue_14992": {
2976+
"response_group": {
2977+
"FieldsAvailable": "0000000110111110111111100000111",
2978+
"FieldsRequired": "0000000001000000010000000000101",
2979+
"FoundNodes": "3",
2980+
"MaximumDisksPerNode": "1",
2981+
"Nodes": [
2982+
{
2983+
"CpuUsage": "not-zero-number",
2984+
"DiskSpaceUsage": "not-zero-number",
2985+
"NodeId": 1,
2986+
"SystemState": {
2987+
"ChangeTime": "not-zero-number-text",
2988+
"CoresTotal": "not-zero-number",
2989+
"CoresUsed": "not-zero-number",
2990+
"Endpoints": [
2991+
{
2992+
"Address": "text",
2993+
"Name": "grpc"
2994+
},
2995+
{
2996+
"Address": "text",
2997+
"Name": "http-mon"
2998+
},
2999+
{
3000+
"Address": "text",
3001+
"Name": "ic"
3002+
}
3003+
],
3004+
"Host": "text",
3005+
"LoadAverage": "not-empty-array",
3006+
"Location": {
3007+
"DataCenter": "1",
3008+
"Rack": "1",
3009+
"Unit": "1"
3010+
},
3011+
"MaxDiskUsage": "not-zero-number",
3012+
"MemoryLimit": "not-zero-number-text",
3013+
"NodeId": 1,
3014+
"NumberOfCpus": "not-zero-number",
3015+
"PoolStats": [
3016+
{
3017+
"Limit": "not-zero-number",
3018+
"Name": "System",
3019+
"Threads": 2,
3020+
"Usage": "number"
3021+
},
3022+
{
3023+
"Limit": "not-zero-number",
3024+
"Name": "User",
3025+
"Threads": 3,
3026+
"Usage": "number"
3027+
},
3028+
{
3029+
"Limit": "not-zero-number",
3030+
"Name": "Batch",
3031+
"Threads": 2,
3032+
"Usage": "number"
3033+
},
3034+
{
3035+
"Limit": "not-zero-number",
3036+
"Name": "IO",
3037+
"Threads": 1,
3038+
"Usage": "number"
3039+
},
3040+
{
3041+
"Limit": "not-zero-number",
3042+
"Name": "IC",
3043+
"Threads": 1,
3044+
"Usage": "number"
3045+
}
3046+
],
3047+
"Roles": "not-empty-array",
3048+
"StartTime": "not-zero-number-text",
3049+
"SystemState": "Green",
3050+
"TotalSessions": 0
3051+
},
3052+
"UptimeSeconds": "number"
3053+
},
3054+
{
3055+
"CpuUsage": "not-zero-number",
3056+
"Database": "/Root/shared_db",
3057+
"NodeId": 50001,
3058+
"SystemState": {
3059+
"ChangeTime": "not-zero-number-text",
3060+
"CoresTotal": "not-zero-number",
3061+
"CoresUsed": "not-zero-number",
3062+
"Endpoints": [
3063+
{
3064+
"Address": "text",
3065+
"Name": "grpc"
3066+
},
3067+
{
3068+
"Address": "text",
3069+
"Name": "http-mon"
3070+
},
3071+
{
3072+
"Address": "text",
3073+
"Name": "ic"
3074+
}
3075+
],
3076+
"Host": "text",
3077+
"LoadAverage": "not-empty-array",
3078+
"Location": {},
3079+
"MemoryLimit": "not-zero-number-text",
3080+
"NodeId": 50001,
3081+
"NumberOfCpus": "not-zero-number",
3082+
"PoolStats": [
3083+
{
3084+
"Limit": "not-zero-number",
3085+
"Name": "System",
3086+
"Threads": 2,
3087+
"Usage": "number"
3088+
},
3089+
{
3090+
"Limit": "not-zero-number",
3091+
"Name": "User",
3092+
"Threads": 3,
3093+
"Usage": "number"
3094+
},
3095+
{
3096+
"Limit": "not-zero-number",
3097+
"Name": "Batch",
3098+
"Threads": 2,
3099+
"Usage": "number"
3100+
},
3101+
{
3102+
"Limit": "not-zero-number",
3103+
"Name": "IO",
3104+
"Threads": 1,
3105+
"Usage": "number"
3106+
},
3107+
{
3108+
"Limit": "not-zero-number",
3109+
"Name": "IC",
3110+
"Threads": 1,
3111+
"Usage": "number"
3112+
}
3113+
],
3114+
"Roles": "not-empty-array",
3115+
"StartTime": "not-zero-number-text",
3116+
"SystemState": "Green",
3117+
"Tenants": [
3118+
"/Root/shared_db"
3119+
],
3120+
"TotalSessions": 0
3121+
},
3122+
"UptimeSeconds": "number"
3123+
},
3124+
{
3125+
"CpuUsage": "not-zero-number",
3126+
"Database": "/Root/dedicated_db",
3127+
"NodeId": 50000,
3128+
"SystemState": {
3129+
"ChangeTime": "not-zero-number-text",
3130+
"CoresTotal": "not-zero-number",
3131+
"CoresUsed": "not-zero-number",
3132+
"Endpoints": [
3133+
{
3134+
"Address": "text",
3135+
"Name": "grpc"
3136+
},
3137+
{
3138+
"Address": "text",
3139+
"Name": "http-mon"
3140+
},
3141+
{
3142+
"Address": "text",
3143+
"Name": "ic"
3144+
}
3145+
],
3146+
"Host": "text",
3147+
"LoadAverage": "not-empty-array",
3148+
"Location": {},
3149+
"MemoryLimit": "not-zero-number-text",
3150+
"NodeId": 50000,
3151+
"NumberOfCpus": "not-zero-number",
3152+
"PoolStats": [
3153+
{
3154+
"Limit": "not-zero-number",
3155+
"Name": "System",
3156+
"Threads": 2,
3157+
"Usage": "number"
3158+
},
3159+
{
3160+
"Limit": "not-zero-number",
3161+
"Name": "User",
3162+
"Threads": 3,
3163+
"Usage": "number"
3164+
},
3165+
{
3166+
"Limit": "not-zero-number",
3167+
"Name": "Batch",
3168+
"Threads": 2,
3169+
"Usage": "number"
3170+
},
3171+
{
3172+
"Limit": "not-zero-number",
3173+
"Name": "IO",
3174+
"Threads": 1,
3175+
"Usage": "number"
3176+
},
3177+
{
3178+
"Limit": "not-zero-number",
3179+
"Name": "IC",
3180+
"Threads": 1,
3181+
"Usage": "number"
3182+
}
3183+
],
3184+
"Roles": "not-empty-array",
3185+
"StartTime": "not-zero-number-text",
3186+
"SystemState": "Green",
3187+
"Tenants": [
3188+
"/Root/dedicated_db"
3189+
],
3190+
"TotalSessions": 0
3191+
},
3192+
"UptimeSeconds": "number"
3193+
}
3194+
],
3195+
"TotalNodes": "3"
3196+
},
3197+
"response_group_by": {
3198+
"FieldsAvailable": "0000000110111110111111100000111",
3199+
"FieldsRequired": "0000000001000000010000000000101",
3200+
"FoundNodes": "3",
3201+
"MaximumDisksPerNode": "1",
3202+
"NodeGroups": [
3203+
{
3204+
"GroupName": "up <10m",
3205+
"NodeCount": "3"
3206+
}
3207+
],
3208+
"TotalNodes": "3"
3209+
}
3210+
},
29753211
"test.test_viewer_pdiskinfo": {
29763212
"PDiskStateInfo": [
29773213
{

ydb/core/viewer/tests/test.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -431,9 +431,6 @@ def test_viewer_nodes():
431431
result = get_viewer_db_normalized("/viewer/nodes", {
432432
'fields_required': 'all'
433433
})
434-
for name in databases:
435-
for node in result[name]['Nodes']:
436-
node['SystemState']['Endpoints'].sort(key=lambda x: x['Name'])
437434
return result
438435

439436

@@ -445,8 +442,6 @@ def test_storage_groups():
445442

446443
def test_viewer_sysinfo():
447444
result = get_viewer_normalized("/viewer/sysinfo")
448-
for node in result['SystemStateInfo']:
449-
node['Endpoints'].sort(key=lambda x: x['Name'])
450445
return result
451446

452447

@@ -560,3 +555,18 @@ def test_pqrb_tablet():
560555
'PathId',
561556
'SchemeShard'
562557
])
558+
559+
560+
def test_viewer_nodes_issue_14992():
561+
response_group_by = get_viewer_normalized("/viewer/nodes", {
562+
'group': 'Uptime'
563+
})
564+
response_group = get_viewer_normalized("/viewer/nodes", {
565+
'filter_group_by': 'Uptime',
566+
'filter_group' : response_group_by['NodeGroups'][0]['GroupName'],
567+
})
568+
result = {
569+
'response_group_by': response_group_by,
570+
'response_group': response_group,
571+
}
572+
return result

0 commit comments

Comments
 (0)