@@ -23,19 +23,29 @@ namespace NBlobStorageNodeWardenTest{
23
23
24
24
Y_UNIT_TEST_SUITE (TDistconfGenerateConfigTest) {
25
25
26
- NKikimrConfig::TDomainsConfig::TStateStorage GenerateSimpleStateStorage (ui32 nodes, std::unordered_set<ui32> usedNodes = {}) {
26
+ NKikimrConfig::TDomainsConfig::TStateStorage GenerateSimpleStateStorage (ui32 nodes, std::unordered_set<ui32> usedNodes = {}, ui32 overrideReplicasInRingCount = 0 , ui32 overrideRingsCount = 0 ) {
27
27
NKikimr::NStorage::TDistributedConfigKeeper keeper (nullptr , nullptr , true );
28
28
NKikimrConfig::TDomainsConfig::TStateStorage ss;
29
29
NKikimrBlobStorage::TStorageConfig config;
30
30
for (ui32 i : xrange (nodes)) {
31
31
auto *node = config.AddAllNodes ();
32
32
node->SetNodeId (i + 1 );
33
33
}
34
- keeper.GenerateStateStorageConfig (&ss, config, usedNodes);
34
+ keeper.GenerateStateStorageConfig (&ss, config, usedNodes, {}, overrideReplicasInRingCount, overrideRingsCount );
35
35
return ss;
36
36
}
37
37
38
- NKikimrConfig::TDomainsConfig::TStateStorage GenerateDCStateStorage (ui32 dcCnt, ui32 racksCnt, ui32 nodesInRack, std::unordered_map<ui32, ui32> nodesState = {}, std::unordered_set<ui32> usedNodes = {}, std::vector<ui32> oldConfig = {}, ui32 oldNToSelect = 9 ) {
38
+ NKikimrConfig::TDomainsConfig::TStateStorage GenerateDCStateStorage (
39
+ ui32 dcCnt
40
+ , ui32 racksCnt
41
+ , ui32 nodesInRack
42
+ , std::unordered_map<ui32, ui32> nodesState = {}
43
+ , std::unordered_set<ui32> usedNodes = {}
44
+ , std::vector<ui32> oldConfig = {}
45
+ , ui32 oldNToSelect = 9
46
+ , ui32 overrideReplicasInRingCount = 0
47
+ , ui32 overrideRingsCount = 0
48
+ ) {
39
49
NKikimrBlobStorage::TStorageConfig config;
40
50
ui32 nodeId = 1 ;
41
51
NKikimr::NStorage::TDistributedConfigKeeper keeper (nullptr , nullptr , true );
@@ -63,7 +73,7 @@ Y_UNIT_TEST_SUITE(TDistconfGenerateConfigTest) {
63
73
for (auto [nodeId, state] : nodesState) {
64
74
keeper.SelfHealNodesState [nodeId] = state;
65
75
}
66
- keeper.GenerateStateStorageConfig (&ss, config, usedNodes, oldSS);
76
+ keeper.GenerateStateStorageConfig (&ss, config, usedNodes, oldSS, overrideReplicasInRingCount, overrideRingsCount );
67
77
return ss;
68
78
}
69
79
@@ -173,6 +183,24 @@ Y_UNIT_TEST_SUITE(TDistconfGenerateConfigTest) {
173
183
// DC disconnected - use previous config for this DC
174
184
CheckStateStorage (GenerateDCStateStorage (3 , 3 , 3 , { {10 , 2 }, {11 , 4 }, {13 , 3 }, {14 , 4 }, {15 , 2 } }, {}, {1 , 5 , 8 , 10 , 14 , 17 , 19 , 22 , 25 }, 9 ), 9 , {1 , 4 , 7 , 10 , 14 , 17 , 19 , 22 , 25 });
175
185
}
186
+
187
+ Y_UNIT_TEST (GenerateConfigReplicasDensity) {
188
+ CheckStateStorage (GenerateSimpleStateStorage (100 , {}, 0 , 0 ), 5 , {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 });
189
+ CheckStateStorage (GenerateSimpleStateStorage (100 , {}, 1 , 1 ), 1 , {1 });
190
+ CheckStateStorage2 (GenerateSimpleStateStorage (100 , {}, 3 , 3 ),
191
+ " { RingGroups { NToSelect: 3 Ring { Node: 1 Node: 2 Node: 3 }"
192
+ " Ring { Node: 4 Node: 5 Node: 6 } Ring { Node: 7 Node: 8 Node: 9 } } }" );
193
+ CheckStateStorage (GenerateSimpleStateStorage (100 , {}, 20 , 10 ), 5 , {1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 });
194
+ CheckStateStorage2 (GenerateSimpleStateStorage (16 , {}, 4 , 2 ), " { RingGroups { NToSelect: 1 Ring { Node: 1 Node: 2 Node: 3 Node: 4 } Ring { Node: 5 Node: 6 Node: 7 Node: 8 } } }" );
195
+ CheckStateStorage (GenerateDCStateStorage (3 , 3 , 3 , {}, {}, {}, 9 , 0 , 0 ), 9 , {1 , 4 , 7 , 10 , 13 , 16 , 19 , 22 , 25 });
196
+ CheckStateStorage (GenerateDCStateStorage (3 , 3 , 3 , {}, {}, {}, 9 , 1 , 3 ), 3 , {1 , 10 , 19 });
197
+ CheckStateStorage2 (GenerateDCStateStorage (3 , 3 , 3 , {}, {}, {}, 9 , 2 , 3 ), " { RingGroups { NToSelect: 3 Ring { Node: 1 Node: 2 } Ring { Node: 10 Node: 11 } Ring { Node: 19 Node: 20 } } }" );
198
+ CheckStateStorage2 (GenerateDCStateStorage (3 , 3 , 3 , {}, {}, {}, 9 , 3 , 3 ), " { RingGroups { NToSelect: 3 Ring { Node: 1 Node: 2 Node: 3 } Ring { Node: 10 Node: 11 Node: 12 } Ring { Node: 19 Node: 20 Node: 21 } } }" );
199
+ CheckStateStorage2 (GenerateDCStateStorage (3 , 3 , 3 , {}, {}, {}, 9 , 2 , 1 )," { RingGroups { NToSelect: 9 "
200
+ " Ring { Node: 1 Node: 2 } Ring { Node: 4 Node: 5 } Ring { Node: 7 Node: 8 } "
201
+ " Ring { Node: 10 Node: 11 } Ring { Node: 13 Node: 14 } Ring { Node: 16 Node: 17 } "
202
+ " Ring { Node: 19 Node: 20 } Ring { Node: 22 Node: 23 } Ring { Node: 25 Node: 26 } } }" );
203
+ }
176
204
}
177
205
}
178
206
}
0 commit comments