From 4769c5db948981765bbbbd9f07b5535f1b7aba9d Mon Sep 17 00:00:00 2001 From: onyinyang Date: Sun, 18 Jul 2021 18:51:49 -0400 Subject: [PATCH] Changed blockage test to only block non-spare buckets --- crates/lox-library/src/tests.rs | 251 +++++++++++++++++++++++++++++++- 1 file changed, 248 insertions(+), 3 deletions(-) diff --git a/crates/lox-library/src/tests.rs b/crates/lox-library/src/tests.rs index 649f0ed..95f197a 100644 --- a/crates/lox-library/src/tests.rs +++ b/crates/lox-library/src/tests.rs @@ -1147,11 +1147,256 @@ fn stats_test_blockage_migration_40() { block_bridges(&mut th, 40, credentials); } -/// Blocks a percentage of the total number of bridges for the passed Test Harness -/// for the number of buckets and hot spares passed at initialization +#[test] +fn stats_test_blockage_migration_45() { + let mut th = TestHarness::new_buckets(150, 150); + let mut credentials: Vec = 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, 45, credentials); +} + +#[test] +fn stats_test_blockage_migration_50() { + let mut th = TestHarness::new_buckets(150, 150); + let mut credentials: Vec = 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, 50, credentials); +} + +#[test] +fn stats_test_blockage_migration_55() { + let mut th = TestHarness::new_buckets(150, 150); + let mut credentials: Vec = 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, 55, credentials); +} + +#[test] +fn stats_test_blockage_migration_60() { + let mut th = TestHarness::new_buckets(150, 150); + let mut credentials: Vec = 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, 60, credentials); +} + +#[test] +fn stats_test_blockage_migration_65() { + let mut th = TestHarness::new_buckets(150, 150); + let mut credentials: Vec = 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, 65, credentials); +} + +#[test] +fn stats_test_blockage_migration_70() { + let mut th = TestHarness::new_buckets(150, 150); + let mut credentials: Vec = 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, 70, credentials); +} + + +#[test] +fn stats_test_blockage_migration_80() { + let mut th = TestHarness::new_buckets(150, 150); + let mut credentials: Vec = 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, 80, credentials); +} + +#[test] +fn stats_test_blockage_migration_85() { + let mut th = TestHarness::new_buckets(150, 150); + let mut credentials: Vec = 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, 85, credentials); +} + +#[test] +fn stats_test_blockage_migration_90() { + let mut th = TestHarness::new_buckets(150, 150); + let mut credentials: Vec = 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, 90, credentials); +} + +#[test] +fn stats_test_blockage_migration_95() { + let mut th = TestHarness::new_buckets(150, 150); + let mut credentials: Vec = 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, 95, credentials); +} + +#[test] +fn stats_test_blockage_migration_100() { + let mut th = TestHarness::new_buckets(150, 150); + let mut credentials: Vec = 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, 100, credentials); +} + +/// Blocks a percentage of the bridges for the passed Test Harness +/// excluding the hot spare buckets as they will not have been handed out. +/// The logic assumes hot spare buckets are appended to the end of the bridge_table +/// bucket list. fn block_bridges(th: &mut TestHarness, percentage: usize, credentials: Vec) { - let to_block: usize = (th.ba.bridge_table.buckets.len() * percentage / 100).into(); + let to_block: usize = ((th.ba.bridge_table.buckets.len() - th.ba.bridge_table.spares.len()) * percentage / 100).into(); let mut block_index: HashSet = HashSet::new(); let mut rng = rand::thread_rng();