Skip to content

Commit a2040b4

Browse files
authored
Refactor balancing + add batch requests (#5904)
1 parent e615634 commit a2040b4

File tree

10 files changed

+594
-292
lines changed

10 files changed

+594
-292
lines changed

ydb/core/blobstorage/ut_blobstorage/balancing.cpp

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ struct TTestEnv {
7979

8080
auto SendGet(ui32 step, ui32 dataSize, bool mustRestoreFirst=false) {
8181
const TLogoBlobID blobId(1, 1, step, 0, dataSize, 0);
82-
Cerr << "SEND TEvGet with key " << blobId.ToString() << Endl;
8382
const TActorId sender = Env.Runtime->AllocateEdgeActor(GroupInfo->GetActorId(*RunningNodes.begin()).NodeId(), __FILE__, __LINE__);
8483
auto ev = std::make_unique<TEvBlobStorage::TEvGet>(
8584
blobId,
@@ -94,7 +93,6 @@ struct TTestEnv {
9493
});
9594
TInstant getDeadline = Env.Now() + TDuration::Seconds(30);
9695
auto res = Env.WaitForEdgeActorEvent<TEvBlobStorage::TEvGetResult>(sender, /* termOnCapture */ false, getDeadline);
97-
Cerr << "TEvGetResult: " << res->Get()->ToString() << Endl;
9896
return res;
9997
};
10098

@@ -152,7 +150,7 @@ struct TTestEnv {
152150
bool CheckPartsLocations(const TLogoBlobID& blobId) {
153151
auto expectedParts = GetExpectedPartsLocations(blobId);
154152
auto actualParts = GetActualPartsLocations(blobId);
155-
TString errMsg = ToString(expectedParts) + " != " + ToString(actualParts);
153+
TString errMsg = ToString(expectedParts) + " != " + ToString(actualParts) + " Key: " + blobId.ToString();
156154
UNIT_ASSERT_VALUES_EQUAL_C(expectedParts.size(), actualParts.size(), errMsg);
157155

158156
for (ui32 i = 0; i < expectedParts.size(); ++i) {
@@ -231,20 +229,20 @@ struct TStopOneNodeTest {
231229
Env.SendPut(step, data, NKikimrProto::OK);
232230
Env->Sim(TDuration::Seconds(10));
233231
Env.StartNode(nodeIdWithBlob);
234-
Env->Sim(TDuration::Seconds(10));
232+
Env->Sim(TDuration::Seconds(30));
235233

236234
Cerr << "Start compaction 1" << Endl;
237235
for (ui32 pos = 0; pos < Env->Settings.NodeCount; ++pos) {
238236
Env->CompactVDisk(Env.GroupInfo->GetActorId(pos));
239237
}
240-
Env->Sim(TDuration::Seconds(10));
238+
Env->Sim(TDuration::Seconds(30));
241239
Cerr << "Finish compaction 1" << Endl;
242240

243241
Cerr << "Start compaction 2" << Endl;
244242
for (ui32 pos = 0; pos < Env->Settings.NodeCount; ++pos) {
245243
Env->CompactVDisk(Env.GroupInfo->GetActorId(pos));
246244
}
247-
Env->Sim(TDuration::Seconds(10));
245+
Env->Sim(TDuration::Seconds(30));
248246
Cerr << "Finish compaction 2" << Endl;
249247

250248
Env.CheckPartsLocations(MakeLogoBlobId(step, data.size()));
@@ -259,7 +257,7 @@ struct TRandomTest {
259257
ui32 MaxBlobSize;
260258

261259
void RunTest() {
262-
srand(123);
260+
srand(123456);
263261
TVector<TString> data(Reserve(NumIters));
264262

265263
TVector<ui32> successfulSteps;
@@ -302,7 +300,7 @@ struct TRandomTest {
302300
// Wipe random node
303301
if (random() % 100 == 1) {
304302
ui32 pos = random() % Env->Settings.NodeCount;
305-
if (Env.RunningNodes.contains(pos)) {
303+
if (Env.RunningNodes.contains(pos) && Env.RunningNodes.contains(0)) {
306304
Cerr << "Wipe node " << pos << Endl;
307305
auto baseConfig = Env->FetchBaseConfig();
308306
const auto& someVSlot = baseConfig.GetVSlot(pos);
@@ -321,7 +319,7 @@ struct TRandomTest {
321319
for (ui32 pos = 0; pos < Env->Settings.NodeCount; ++pos) {
322320
Env.StartNode(pos);
323321
}
324-
Env->Sim(TDuration::Seconds(10));
322+
Env->Sim(TDuration::Seconds(60));
325323

326324
Cerr << "Start compaction 1" << Endl;
327325
for (ui32 pos = 0; pos < Env->Settings.NodeCount; ++pos) {
@@ -337,9 +335,8 @@ struct TRandomTest {
337335

338336
Cerr << "Start checking" << Endl;
339337
for (ui32 step: successfulSteps) {
340-
Cerr << "step = " << step << Endl;
341338
Env.CheckPartsLocations(MakeLogoBlobId(step, data[step].size()));
342-
UNIT_ASSERT_VALUES_EQUAL(Env.SendGet(step, data[step].size())->Get()->Responses[0].Buffer.ConvertToString(), data[step]);
339+
UNIT_ASSERT_VALUES_EQUAL_C(Env.SendGet(step, data[step].size())->Get()->Responses[0].Buffer.ConvertToString(), data[step], MakeLogoBlobId(step, data[step].size()).ToString());
343340
}
344341
}
345342
};
@@ -401,21 +398,21 @@ struct TTwoPartsOnOneNodeTest {
401398
// start all stopped nodes
402399
Env.StartNode(partIdxToNodeId[1]);
403400
Env.StartNode(handoffNodeIds[1]);
404-
Env->Sim(TDuration::Seconds(10));
401+
Env->Sim(TDuration::Seconds(30));
405402

406403
// run compactions
407404
Cerr << "Start compaction 1" << Endl;
408405
for (ui32 pos = 0; pos < Env->Settings.NodeCount; ++pos) {
409406
Env->CompactVDisk(Env.GroupInfo->GetActorId(pos));
410407
}
411-
Env->Sim(TDuration::Seconds(10));
408+
Env->Sim(TDuration::Seconds(30));
412409
Cerr << "Finish compaction 1" << Endl;
413410

414411
Cerr << "Start compaction 2" << Endl;
415412
for (ui32 pos = 0; pos < Env->Settings.NodeCount; ++pos) {
416413
Env->CompactVDisk(Env.GroupInfo->GetActorId(pos));
417414
}
418-
Env->Sim(TDuration::Seconds(10));
415+
Env->Sim(TDuration::Seconds(30));
419416
Cerr << "Finish compaction 2" << Endl;
420417

421418
Env.CheckPartsLocations(MakeLogoBlobId(step, data.size()));

0 commit comments

Comments
 (0)