T1.5: Migrate emit/parse sites to v2 wire format
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
use std::net::{Ipv4Addr, SocketAddr};
|
||||
use std::time::Duration;
|
||||
|
||||
use wzp_client::dual_path::{race, PeerCandidates, WinningPath};
|
||||
use wzp_client::dual_path::{PeerCandidates, WinningPath, race};
|
||||
use wzp_client::reflect::Role;
|
||||
use wzp_transport::{create_endpoint, server_config};
|
||||
|
||||
@@ -125,8 +125,15 @@ async fn dual_path_direct_wins_on_loopback() {
|
||||
.await
|
||||
.expect("race must succeed");
|
||||
|
||||
assert!(result.direct_transport.is_some(), "direct transport should be available");
|
||||
assert_eq!(result.local_winner, WinningPath::Direct, "direct should win on loopback");
|
||||
assert!(
|
||||
result.direct_transport.is_some(),
|
||||
"direct transport should be available"
|
||||
);
|
||||
assert_eq!(
|
||||
result.local_winner,
|
||||
WinningPath::Direct,
|
||||
"direct should win on loopback"
|
||||
);
|
||||
|
||||
// Cancel the acceptor accept task so the test finishes.
|
||||
acceptor_accept_task.abort();
|
||||
@@ -170,7 +177,10 @@ async fn dual_path_relay_wins_when_direct_is_dead() {
|
||||
.await
|
||||
.expect("race must succeed via relay fallback");
|
||||
|
||||
assert!(result.relay_transport.is_some(), "relay transport should be available");
|
||||
assert!(
|
||||
result.relay_transport.is_some(),
|
||||
"relay transport should be available"
|
||||
);
|
||||
assert_eq!(
|
||||
result.local_winner,
|
||||
WinningPath::Relay,
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use async_trait::async_trait;
|
||||
use tokio::sync::mpsc;
|
||||
use tokio::sync::Mutex;
|
||||
use tokio::sync::mpsc;
|
||||
|
||||
use wzp_proto::packet::MediaPacket;
|
||||
use wzp_proto::traits::{MediaTransport, PathQuality};
|
||||
@@ -83,7 +83,11 @@ async fn full_handshake_both_sides_derive_same_session() {
|
||||
|
||||
// Run client and relay handshakes concurrently.
|
||||
let (client_result, relay_result) = tokio::join!(
|
||||
wzp_client::handshake::perform_handshake(client_transport_clone.as_ref(), &client_seed, None),
|
||||
wzp_client::handshake::perform_handshake(
|
||||
client_transport_clone.as_ref(),
|
||||
&client_seed,
|
||||
None
|
||||
),
|
||||
wzp_relay::handshake::accept_handshake(relay_transport_clone.as_ref(), &relay_seed),
|
||||
);
|
||||
|
||||
|
||||
@@ -83,8 +83,12 @@ fn long_session_no_drift() {
|
||||
println!(
|
||||
"long_session_no_drift: decoded={frames_decoded}/{TOTAL_FRAMES}, \
|
||||
underruns={}, overruns={}, depth={}, max_depth={}, late={}, lost={}",
|
||||
stats.underruns, stats.overruns, stats.current_depth, stats.max_depth_seen,
|
||||
stats.packets_late, stats.packets_lost,
|
||||
stats.underruns,
|
||||
stats.overruns,
|
||||
stats.current_depth,
|
||||
stats.max_depth_seen,
|
||||
stats.packets_late,
|
||||
stats.packets_lost,
|
||||
);
|
||||
|
||||
// With 1 decode per tick over 3000 ticks, we expect ~3000 decoded frames
|
||||
@@ -123,7 +127,7 @@ fn long_session_with_simulated_loss() {
|
||||
|
||||
for (j, pkt) in batch.into_iter().enumerate() {
|
||||
// Drop every 20th *source* (non-repair) packet to simulate ~5% loss.
|
||||
if !pkt.header.is_repair && i % 20 == 0 && j == 0 {
|
||||
if !pkt.header.is_repair() && i % 20 == 0 && j == 0 {
|
||||
continue; // drop this packet
|
||||
}
|
||||
decoder.ingest(pkt);
|
||||
@@ -139,8 +143,12 @@ fn long_session_with_simulated_loss() {
|
||||
println!(
|
||||
"long_session_with_simulated_loss: decoded={frames_decoded}/{TOTAL_FRAMES}, \
|
||||
underruns={}, overruns={}, depth={}, max_depth={}, late={}, lost={}",
|
||||
stats.underruns, stats.overruns, stats.current_depth, stats.max_depth_seen,
|
||||
stats.packets_late, stats.packets_lost,
|
||||
stats.underruns,
|
||||
stats.overruns,
|
||||
stats.current_depth,
|
||||
stats.max_depth_seen,
|
||||
stats.packets_late,
|
||||
stats.packets_lost,
|
||||
);
|
||||
|
||||
// With 5% artificial loss + FEC recovery + PLC, we should still get >90% decoded.
|
||||
|
||||
Reference in New Issue
Block a user