Skip to content

Commit bcce307

Browse files
committed
tests: adjust BFT tests
Signed-off-by: ljedrz <[email protected]>
1 parent 83c07af commit bcce307

File tree

1 file changed

+56
-25
lines changed

1 file changed

+56
-25
lines changed

node/bft/src/sync/mod.rs

Lines changed: 56 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1043,8 +1043,9 @@ mod tests {
10431043

10441044
// Create a genesis block with a seeded RNG to reproduce the same genesis private keys.
10451045
let seed: u64 = rng.r#gen();
1046-
let genesis_rng = &mut TestRng::from_seed(seed);
1047-
let genesis = VM::from(store).unwrap().genesis_beacon(account.private_key(), genesis_rng).unwrap();
1046+
let vm = VM::from(store).unwrap();
1047+
let genesis_pk = account.private_key().clone();
1048+
let genesis = spawn_blocking!(vm.genesis_beacon(&genesis_pk, &mut TestRng::from_seed(seed))).unwrap();
10481049

10491050
// Extract the private keys from the genesis committee by using the same RNG to sample private keys.
10501051
let genesis_rng = &mut TestRng::from_seed(seed);
@@ -1170,10 +1171,13 @@ mod tests {
11701171
subdag_map.insert(commit_round, leader_cert_map.clone());
11711172
subdag_map.insert(commit_round - 1, previous_cert_map.clone());
11721173
let subdag = Subdag::from(subdag_map.clone())?;
1173-
core_ledger.prepare_advance_to_next_quorum_block(subdag, Default::default())?
1174+
let ledger = core_ledger.clone();
1175+
spawn_blocking!(ledger.prepare_advance_to_next_quorum_block(subdag, Default::default()))?
11741176
};
11751177
// Insert block 1.
1176-
core_ledger.advance_to_next_block(&block_1)?;
1178+
let ledger = core_ledger.clone();
1179+
let block = block_1.clone();
1180+
spawn_blocking!(ledger.advance_to_next_block(&block))?;
11771181

11781182
// Create block 2.
11791183
let leader_round_2 = commit_round + 2;
@@ -1197,10 +1201,13 @@ mod tests {
11971201
subdag_map_2.insert(leader_round_2 - 1, previous_cert_map_2.clone());
11981202
subdag_map_2.insert(leader_round_2 - 2, prev_commit_cert_map_2.clone());
11991203
let subdag_2 = Subdag::from(subdag_map_2.clone())?;
1200-
core_ledger.prepare_advance_to_next_quorum_block(subdag_2, Default::default())?
1204+
let ledger = core_ledger.clone();
1205+
spawn_blocking!(ledger.prepare_advance_to_next_quorum_block(subdag_2, Default::default()))?
12011206
};
12021207
// Insert block 2.
1203-
core_ledger.advance_to_next_block(&block_2)?;
1208+
let ledger = core_ledger.clone();
1209+
let block = block_2.clone();
1210+
spawn_blocking!(ledger.advance_to_next_block(&block))?;
12041211

12051212
// Create block 3
12061213
let leader_round_3 = commit_round + 4;
@@ -1224,24 +1231,25 @@ mod tests {
12241231
subdag_map_3.insert(leader_round_3 - 1, previous_cert_map_3.clone());
12251232
subdag_map_3.insert(leader_round_3 - 2, prev_commit_cert_map_3.clone());
12261233
let subdag_3 = Subdag::from(subdag_map_3.clone())?;
1227-
core_ledger.prepare_advance_to_next_quorum_block(subdag_3, Default::default())?
1234+
let ledger = core_ledger.clone();
1235+
spawn_blocking!(ledger.prepare_advance_to_next_quorum_block(subdag_3, Default::default()))?
12281236
};
12291237
// Insert block 3.
1230-
core_ledger.advance_to_next_block(&block_3)?;
1238+
let ledger = core_ledger.clone();
1239+
let block = block_3.clone();
1240+
spawn_blocking!(ledger.advance_to_next_block(&block))?;
12311241

12321242
// Initialize the syncing ledger.
1233-
let storage_mode = StorageMode::new_test(None);
1234-
let syncing_ledger = Arc::new(CoreLedgerService::new(
1235-
CurrentLedger::load(genesis, storage_mode.clone()).unwrap(),
1236-
Default::default(),
1237-
));
1243+
let syncing_ledger = spawn_blocking!(CurrentLedger::load(genesis, StorageMode::new_test(None))).unwrap();
1244+
let syncing_ledger = Arc::new(CoreLedgerService::new(syncing_ledger, Default::default()));
12381245
// Initialize the gateway.
1246+
let storage_mode = StorageMode::new_test(None);
12391247
let gateway =
12401248
Gateway::new(account.clone(), storage.clone(), syncing_ledger.clone(), None, &[], storage_mode, None)?;
12411249
// Initialize the block synchronization logic.
12421250
let block_sync = Arc::new(BlockSync::new(syncing_ledger.clone()));
12431251
// Initialize the sync module.
1244-
let sync = Sync::new(gateway.clone(), storage.clone(), syncing_ledger.clone(), block_sync);
1252+
let sync = Sync::new(gateway, storage, syncing_ledger.clone(), block_sync);
12451253
// Try to sync block 1.
12461254
sync.sync_storage_with_block(block_1).await?;
12471255
assert_eq!(syncing_ledger.latest_block_height(), 1);
@@ -1255,6 +1263,12 @@ mod tests {
12551263
assert!(syncing_ledger.contains_block_height(1));
12561264
assert!(syncing_ledger.contains_block_height(2));
12571265

1266+
tokio::task::spawn_blocking(move || {
1267+
drop(core_ledger);
1268+
drop(syncing_ledger);
1269+
drop(sync);
1270+
});
1271+
12581272
Ok(())
12591273
}
12601274

@@ -1272,8 +1286,9 @@ mod tests {
12721286

12731287
// Create a genesis block with a seeded RNG to reproduce the same genesis private keys.
12741288
let seed: u64 = rng.r#gen();
1275-
let genesis_rng = &mut TestRng::from_seed(seed);
1276-
let genesis = VM::from(store).unwrap().genesis_beacon(account.private_key(), genesis_rng).unwrap();
1289+
let vm = VM::from(store).unwrap();
1290+
let genesis_pk = account.private_key().clone();
1291+
let genesis = spawn_blocking!(vm.genesis_beacon(&genesis_pk, &mut TestRng::from_seed(seed))).unwrap();
12771292

12781293
// Extract the private keys from the genesis committee by using the same RNG to sample private keys.
12791294
let genesis_rng = &mut TestRng::from_seed(seed);
@@ -1284,13 +1299,13 @@ mod tests {
12841299
PrivateKey::new(genesis_rng)?,
12851300
];
12861301
// Initialize the ledger with the genesis block.
1287-
let ledger = spawn_blocking!(CurrentLedger::load(genesis.clone(), StorageMode::new_test(None))).unwrap();
1302+
let ledger = spawn_blocking!(CurrentLedger::load(genesis, StorageMode::new_test(None))).unwrap();
12881303
// Initialize the ledger.
1289-
let core_ledger = Arc::new(CoreLedgerService::new(ledger.clone(), Default::default()));
1304+
let core_ledger = Arc::new(CoreLedgerService::new(ledger, Default::default()));
12901305
// Sample rounds of batch certificates starting at the genesis round from a static set of 4 authors.
12911306
let (round_to_certificates_map, committee) = {
12921307
// Initialize the committee.
1293-
let committee = ledger.latest_committee().unwrap();
1308+
let committee = core_ledger.current_committee().unwrap();
12941309
// Initialize a mapping from the round number to the set of batch certificates in the round.
12951310
let mut round_to_certificates_map: HashMap<u64, IndexSet<BatchCertificate<CurrentNetwork>>> =
12961311
HashMap::new();
@@ -1359,10 +1374,13 @@ mod tests {
13591374
subdag_map.insert(commit_round, leader_cert_map.clone());
13601375
subdag_map.insert(commit_round - 1, previous_cert_map.clone());
13611376
let subdag = Subdag::from(subdag_map.clone())?;
1362-
core_ledger.prepare_advance_to_next_quorum_block(subdag, Default::default())?
1377+
let ledger = core_ledger.clone();
1378+
spawn_blocking!(ledger.prepare_advance_to_next_quorum_block(subdag, Default::default()))?
13631379
};
13641380
// Insert block 1.
1365-
core_ledger.advance_to_next_block(&block_1)?;
1381+
let ledger = core_ledger.clone();
1382+
let block = block_1.clone();
1383+
spawn_blocking!(ledger.advance_to_next_block(&block))?;
13661384

13671385
// Create block 2.
13681386
let leader_round_2 = commit_round + 2;
@@ -1379,10 +1397,13 @@ mod tests {
13791397
subdag_map_2.insert(leader_round_2, leader_cert_map_2.clone());
13801398
subdag_map_2.insert(leader_round_2 - 1, previous_cert_map_2.clone());
13811399
let subdag_2 = Subdag::from(subdag_map_2.clone())?;
1382-
core_ledger.prepare_advance_to_next_quorum_block(subdag_2, Default::default())?
1400+
let ledger = core_ledger.clone();
1401+
spawn_blocking!(ledger.prepare_advance_to_next_quorum_block(subdag_2, Default::default()))?
13831402
};
13841403
// Insert block 2.
1385-
core_ledger.advance_to_next_block(&block_2)?;
1404+
let ledger = core_ledger.clone();
1405+
let block = block_2.clone();
1406+
spawn_blocking!(ledger.advance_to_next_block(&block))?;
13861407

13871408
// Create block 3
13881409
let leader_round_3 = commit_round + 4;
@@ -1399,10 +1420,13 @@ mod tests {
13991420
subdag_map_3.insert(leader_round_3, leader_cert_map_3.clone());
14001421
subdag_map_3.insert(leader_round_3 - 1, previous_cert_map_3.clone());
14011422
let subdag_3 = Subdag::from(subdag_map_3.clone())?;
1402-
core_ledger.prepare_advance_to_next_quorum_block(subdag_3, Default::default())?
1423+
let ledger = core_ledger.clone();
1424+
spawn_blocking!(ledger.prepare_advance_to_next_quorum_block(subdag_3, Default::default()))?
14031425
};
14041426
// Insert block 3.
1405-
core_ledger.advance_to_next_block(&block_3)?;
1427+
let ledger = core_ledger.clone();
1428+
let block = block_3.clone();
1429+
spawn_blocking!(ledger.advance_to_next_block(&block))?;
14061430

14071431
/*
14081432
Check that the pending certificates are computed correctly.
@@ -1433,6 +1457,13 @@ mod tests {
14331457
}
14341458
// Check that the set of pending certificates is equal to the set of candidate pending certificates.
14351459
assert_eq!(pending_certificates, candidate_pending_certificates);
1460+
1461+
println!("1");
1462+
tokio::task::spawn_blocking(move || {
1463+
drop(core_ledger);
1464+
drop(storage);
1465+
});
1466+
14361467
Ok(())
14371468
}
14381469
}

0 commit comments

Comments
 (0)