Browse Source

Remove open invitation buckets from blockages, add test for 75%

onyinyang 2 years ago
parent
commit
6ba706d49f
1 changed files with 30 additions and 4 deletions
  1. 30 4
      src/tests.rs

+ 30 - 4
src/tests.rs

@@ -1279,6 +1279,27 @@ fn stats_test_blockage_migration_70() {
     block_bridges(&mut th, 70, credentials);
 }
 
+#[test]
+fn stats_test_blockage_migration_75() {
+    let mut th = TestHarness::new_buckets(150, 150);
+    let mut credentials: Vec<cred::Lox> = Vec::new();
+    for _ in 0..10000 {
+        let cred = th.open_invite().1 .0;
+        th.advance_days(30);
+        let (_, migcred) = th.trust_promotion(&cred);
+        let (_, cred1) = th.level0_migration(&cred, &migcred);
+        th.advance_days(14);
+        let (_, cred2) = th.level_up(&cred1);
+        let (_, (cred2a, invite)) = th.issue_invite(&cred2);
+        let (_, bob_cred) = th.redeem_invite(&invite);
+        th.advance_days(28);
+        let (_, _) = th.level_up(&bob_cred);
+        let (_, cred3) = th.level_up(&cred2a);
+        credentials.push(cred3);
+    }
+
+    block_bridges(&mut th, 75, credentials);
+}
 
 #[test]
 fn stats_test_blockage_migration_80() {
@@ -1396,14 +1417,19 @@ fn stats_test_blockage_migration_100() {
 /// bucket list.
 
 fn block_bridges(th: &mut TestHarness, percentage: usize, credentials: Vec<cred::Lox>) {
-    let blockable_bridges = th.ba.bridge_table.buckets.len() - th.ba.bridge_table.spares.len();
-    let to_block: usize = (blockable_bridges * percentage / 100).into();
+    let blockable_num = th.ba.bridge_table.buckets.len()
+        - th.ba.bridge_table.spares.len()
+        - th.bdb.openinv_buckets.len();
+    let blockable_range = th.ba.bridge_table.buckets.len() - th.ba.bridge_table.spares.len();
+    let to_block: usize = (blockable_num * percentage / 100).into();
     let mut block_index: HashSet<usize> = HashSet::new();
     let mut rng = rand::thread_rng();
 
     while block_index.len() <= to_block - 1 {
-        let rand_num = rng.gen_range(0, blockable_bridges);
-        block_index.insert(rand_num);
+        let rand_num = rng.gen_range(0, blockable_range);
+        if !th.bdb.openinv_buckets.contains(&(rand_num as u32)) {
+            block_index.insert(rand_num);
+        }
     }
 
     for index in block_index {