|
@@ -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<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, 45, credentials);
|
|
|
+}
|
|
|
+
|
|
|
+#[test]
|
|
|
+fn stats_test_blockage_migration_50() {
|
|
|
+ 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, 50, credentials);
|
|
|
+}
|
|
|
+
|
|
|
+#[test]
|
|
|
+fn stats_test_blockage_migration_55() {
|
|
|
+ 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, 55, credentials);
|
|
|
+}
|
|
|
+
|
|
|
+#[test]
|
|
|
+fn stats_test_blockage_migration_60() {
|
|
|
+ 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, 60, credentials);
|
|
|
+}
|
|
|
+
|
|
|
+#[test]
|
|
|
+fn stats_test_blockage_migration_65() {
|
|
|
+ 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, 65, credentials);
|
|
|
+}
|
|
|
+
|
|
|
+#[test]
|
|
|
+fn stats_test_blockage_migration_70() {
|
|
|
+ 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, 70, credentials);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+#[test]
|
|
|
+fn stats_test_blockage_migration_80() {
|
|
|
+ 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, 80, credentials);
|
|
|
+}
|
|
|
+
|
|
|
+#[test]
|
|
|
+fn stats_test_blockage_migration_85() {
|
|
|
+ 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, 85, credentials);
|
|
|
+}
|
|
|
+
|
|
|
+#[test]
|
|
|
+fn stats_test_blockage_migration_90() {
|
|
|
+ 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, 90, credentials);
|
|
|
+}
|
|
|
+
|
|
|
+#[test]
|
|
|
+fn stats_test_blockage_migration_95() {
|
|
|
+ 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, 95, credentials);
|
|
|
+}
|
|
|
+
|
|
|
+#[test]
|
|
|
+fn stats_test_blockage_migration_100() {
|
|
|
+ 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, 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<cred::Lox>) {
|
|
|
- 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<usize> = HashSet::new();
|
|
|
let mut rng = rand::thread_rng();
|
|
|
|