mirror of
https://github.com/telemt/telemt.git
synced 2026-09-05 18:16:06 +03:00
34eeb2d856
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
52 lines
1.7 KiB
Rust
52 lines
1.7 KiB
Rust
use super::*;
|
|
|
|
fn entry(kind: WebSocketKind, opened: bool, peer_tick: u64) -> WebSocketEntry {
|
|
let phase = if opened {
|
|
WebSocketPhase::Active
|
|
} else {
|
|
WebSocketPhase::Claimed
|
|
};
|
|
WebSocketEntry {
|
|
id: 1,
|
|
owner: [0; 32],
|
|
session_id: 1,
|
|
claim: WebSocketClaimKey {
|
|
session_hash: [0; 32],
|
|
kind,
|
|
},
|
|
client_ip: "192.0.2.10".parse().unwrap(),
|
|
kind,
|
|
liveness_interval_ms: 10,
|
|
created_tick: 1,
|
|
last_peer_tick: AtomicU64::new(peer_tick),
|
|
last_progress_tick: AtomicU64::new(peer_tick),
|
|
phase: AtomicU8::new(phase as u8),
|
|
closing: AtomicBool::new(false),
|
|
cancel: CancellationToken::new(),
|
|
released: CancellationToken::new(),
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn preopen_and_dead_entries_precede_live_lane_and_multiplex_victims() {
|
|
let preopen = entry(WebSocketKind::Multiplex, false, 90);
|
|
let dead = entry(WebSocketKind::Multiplex, true, 1);
|
|
let lane = entry(WebSocketKind::Lane(7), true, 90);
|
|
let multiplex = entry(WebSocketKind::Multiplex, true, 90);
|
|
|
|
assert_eq!(entry_priority(&preopen, 100), 0);
|
|
assert_eq!(entry_priority(&dead, 100), 0);
|
|
assert_eq!(entry_priority(&lane, 100), 1);
|
|
assert_eq!(entry_priority(&multiplex, 100), 2);
|
|
}
|
|
|
|
#[test]
|
|
fn dead_classification_keeps_each_connections_creation_time_interval() {
|
|
let short_interval = entry(WebSocketKind::Multiplex, true, 80);
|
|
let mut long_interval = entry(WebSocketKind::Multiplex, true, 80);
|
|
long_interval.liveness_interval_ms = 100;
|
|
|
|
assert_eq!(entry_priority(&short_interval, 100), 0);
|
|
assert_eq!(entry_priority(&long_interval, 100), 2);
|
|
}
|