Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,7 @@ jobs:
# `test resume-model` sweeps resume against its model from a fresh seed; PRs run a fixed 64.
# `test route-key-model` proves the route key proof with Tamarin, and that each variant breaks what it names.
# `test route-sweep` checks random lite-07 meshes against the route rules from a fresh seed; PRs run a fixed 8.
# It also runs the router's handoff sweeps over 20,000 fixed scenarios; PRs run 150.
# It also runs the bandwidth probe's acceptance suite, of which PRs run the short cases.
# `test drill impaired` runs the relay drills over a freshly seeded shaper; PRs run loopback.
# `rs cli-export` runs moq-cli's export process tests, which take tens of seconds of real time.
Expand Down
33 changes: 0 additions & 33 deletions quest/m2/cluster-routes/handoff-revival.md

This file was deleted.

31 changes: 31 additions & 0 deletions rs/moq-net/src/route/tests/handoff.rs
Original file line number Diff line number Diff line change
Expand Up @@ -594,6 +594,37 @@ fn widening_past_a_changed_claim_moves_it_up() {
assert_eq!(false_ends(&sim.events), 0);
}

/// A client widens past a claim that changed while its relay had lost the
/// origin. When the relay gets the origin back, the client's narrow
/// presentation moves up to the changed claim without ending.
#[test]
fn widening_while_the_relay_lost_the_origin_moves_the_claim_up() {
let (origin, relay, client) = (0, 1, 2);
let mut sim = Sim::new(3);
sim.leaf(origin);
sim.leaf(client);
sim.join(origin, relay, 1);
sim.join(client, relay, 1);
sim.originate(origin, 7, 0);
assert!(sim.run());
sim.announce(origin, "live/", 2, None);
sim.watch(client, "live/b");
for (from, to) in [(origin, relay), (origin, relay), (relay, client), (relay, client)] {
assert!(sim.deliver(from, to));
}
assert_eq!(sim.shows(client, 7, "live/b"), Some(true));

// The relay's answer to the old interest is still queued when the client widens.
sim.disconnect(origin, relay);
sim.announce(origin, "live/", 0, None);
sim.watch(client, "");
sim.connect(origin, relay);
assert!(sim.run());
assert_eq!(sim.shows(client, 7, "live/"), Some(true));
assert_eq!(sim.shown(client).len(), 1);
assert_eq!(false_ends(&sim.events), 0);
}

/// A claim withdrawn below one its origin still has ends: the claim above
/// covers its path but is not the claim it was.
#[test]
Expand Down
2 changes: 2 additions & 0 deletions test/route-sweep.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@ echo "Route sweep: MOQ_ROUTE_SEED=$MOQ_ROUTE_SEED MOQ_ROUTE_CASES=$MOQ_ROUTE_CAS
# Release keeps the sweep inside nextest's hang budget; the checks stay on so it still catches what a debug run would.
export CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS=true CARGO_PROFILE_RELEASE_OVERFLOW_CHECKS=true
just rs test -p moq-net --release --features async --test integration -E 'test(=mesh_sweep::seeded_meshes_hold_the_route_rules)'
# The router's handoff sweeps replay their fixed scenarios past the gate's 150.
MOQ_ROUTE_SCENARIOS=${MOQ_ROUTE_SCENARIOS:-20000} just rs test -P sweep -p moq-net --release -E 'test(/^route::tests::handoff::sweep_/)'