51 lines
1.5 KiB
Rust
51 lines
1.5 KiB
Rust
//! Allocation lifecycle unit tests covering clamping and removal.
|
|
|
|
#[path = "../support/mod.rs"]
|
|
mod support;
|
|
|
|
mod helpers;
|
|
|
|
use helpers::*;
|
|
use niom_turn::alloc::{AllocationManager, ClientSink};
|
|
use std::net::SocketAddr;
|
|
use std::sync::Arc;
|
|
use std::time::Duration;
|
|
use tokio::net::UdpSocket;
|
|
|
|
async fn allocate_sample(manager: &AllocationManager) -> SocketAddr {
|
|
let server = Arc::new(UdpSocket::bind("127.0.0.1:0").await.expect("udp bind"));
|
|
let client = sample_client();
|
|
manager
|
|
.allocate_for(
|
|
client,
|
|
ClientSink::Udp {
|
|
sock: server,
|
|
addr: client,
|
|
},
|
|
)
|
|
.await
|
|
.expect("allocate relay");
|
|
client
|
|
}
|
|
|
|
#[tokio::test(flavor = "current_thread")]
|
|
async fn refresh_clamps_to_minimum_lifetime() {
|
|
let manager = AllocationManager::new();
|
|
let client = allocate_sample(&manager).await;
|
|
let applied = manager
|
|
.refresh_allocation(client, Some(Duration::from_secs(30)))
|
|
.expect("refresh");
|
|
assert_eq!(applied, Duration::from_secs(60));
|
|
}
|
|
|
|
#[tokio::test(flavor = "current_thread")]
|
|
async fn zero_lifetime_removes_allocation() {
|
|
let manager = AllocationManager::new();
|
|
let client = allocate_sample(&manager).await;
|
|
let applied = manager
|
|
.refresh_allocation(client, Some(Duration::from_secs(0)))
|
|
.expect("refresh zero");
|
|
assert_eq!(applied, Duration::from_secs(0));
|
|
assert!(manager.get_allocation(&client).is_none());
|
|
}
|