test: consolidate and prune implementation-coupled tests
This commit is contained in:
1 parent
a7288cc612
commit
ddd420cc21
4 files changed
+73
-262
No files matched your search
@@ -1,6 +1,6 @@
|
||||
mod support;
|
||||
|
||||
use irtt_client::{Client, ClientConfig, ClientError, ClientEvent, NegotiationPolicy};
|
||||
use irtt_client::{Client, ClientConfig, ClientError, NegotiationPolicy};
|
||||
use irtt_proto::{Params, TimestampFields};
|
||||
|
||||
use support::{
|
||||
@@ -32,63 +32,34 @@ fn echo_observation(run: &OneProbeRun) -> (usize, bool, u64, u32) {
|
||||
// ─── Config mapping ───
|
||||
|
||||
#[test]
|
||||
fn server_fill_none_produces_no_fill_in_open_params() {
|
||||
let params = default_params();
|
||||
let run = run_one_probe(params, TimestampFields::default());
|
||||
assert!(open_observation_params(&run).server_fill.is_none());
|
||||
fn server_fill_none_short_and_max_map_into_open_params() {
|
||||
for fill in [None, Some("abc"), Some("0123456789abcdef0123456789abcdef")] {
|
||||
let mut params = default_params();
|
||||
params.server_fill = fill.and_then(server_fill);
|
||||
|
||||
let run = run_one_probe(params, TimestampFields::default());
|
||||
assert_eq!(
|
||||
open_observation_params(&run)
|
||||
.server_fill
|
||||
.as_ref()
|
||||
.map(|f| f.value.as_str()),
|
||||
fill
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn server_fill_short_value_maps_into_open_params() {
|
||||
let mut params = default_params();
|
||||
params.server_fill = server_fill("abc");
|
||||
let run = run_one_probe(params, TimestampFields::default());
|
||||
assert_eq!(
|
||||
open_observation_params(&run)
|
||||
.server_fill
|
||||
.as_ref()
|
||||
.map(|f| f.value.as_str()),
|
||||
Some("abc")
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn server_fill_32_byte_value_maps_into_open_params() {
|
||||
let mut params = default_params();
|
||||
let fill = "0123456789abcdef0123456789abcdef";
|
||||
params.server_fill = server_fill(fill);
|
||||
let run = run_one_probe(params, TimestampFields::default());
|
||||
assert_eq!(
|
||||
open_observation_params(&run)
|
||||
.server_fill
|
||||
.as_ref()
|
||||
.map(|f| f.value.as_str()),
|
||||
Some(fill)
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn server_fill_over_32_bytes_rejected_at_config_boundary() {
|
||||
let config = ClientConfig {
|
||||
server_fill: Some("0123456789abcdef0123456789abcdefx".to_owned()),
|
||||
..ClientConfig::default()
|
||||
};
|
||||
assert!(matches!(
|
||||
Client::connect(config),
|
||||
Err(ClientError::InvalidConfig { .. })
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn server_fill_empty_rejected_at_config_boundary() {
|
||||
let config = ClientConfig {
|
||||
server_fill: Some("".to_owned()),
|
||||
..ClientConfig::default()
|
||||
};
|
||||
assert!(matches!(
|
||||
Client::connect(config),
|
||||
Err(ClientError::InvalidConfig { .. })
|
||||
));
|
||||
fn server_fill_empty_and_oversized_values_are_rejected_at_config_boundary() {
|
||||
for fill in ["", "0123456789abcdef0123456789abcdefx"] {
|
||||
let config = ClientConfig {
|
||||
server_fill: Some(fill.to_owned()),
|
||||
..ClientConfig::default()
|
||||
};
|
||||
assert!(matches!(
|
||||
Client::connect(config),
|
||||
Err(ClientError::InvalidConfig { .. })
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
// ─── Open negotiation ───
|
||||
@@ -102,53 +73,26 @@ fn server_fill_negotiated_params_reflect_accepted_value() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn server_fill_strict_rejects_removed_fill() {
|
||||
let mut requested = default_params();
|
||||
requested.server_fill = server_fill("rand");
|
||||
fn server_fill_strict_rejects_removed_changed_or_unexpected_fill() {
|
||||
for (requested_fill, returned_fill) in [
|
||||
(Some("rand"), None),
|
||||
(Some("abc"), Some("xyz")),
|
||||
(None, Some("unexpected")),
|
||||
] {
|
||||
let mut requested = default_params();
|
||||
requested.server_fill = requested_fill.and_then(server_fill);
|
||||
|
||||
let mut returned = requested.clone();
|
||||
returned.server_fill = None;
|
||||
let mut returned = requested.clone();
|
||||
returned.server_fill = returned_fill.and_then(server_fill);
|
||||
|
||||
let server = start_open_server(returned, None);
|
||||
let mut client = Client::connect(config_for_params(server.addr, &requested)).unwrap();
|
||||
assert!(matches!(
|
||||
client.open(),
|
||||
Err(ClientError::NegotiationRejected { .. })
|
||||
));
|
||||
server.join();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn server_fill_strict_rejects_different_fill_value() {
|
||||
let mut requested = default_params();
|
||||
requested.server_fill = server_fill("abc");
|
||||
|
||||
let mut returned = requested.clone();
|
||||
returned.server_fill = server_fill("xyz");
|
||||
|
||||
let server = start_open_server(returned, None);
|
||||
let mut client = Client::connect(config_for_params(server.addr, &requested)).unwrap();
|
||||
assert!(matches!(
|
||||
client.open(),
|
||||
Err(ClientError::NegotiationRejected { .. })
|
||||
));
|
||||
server.join();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn server_fill_strict_rejects_unexpected_fill_from_server() {
|
||||
let requested = default_params();
|
||||
|
||||
let mut returned = requested.clone();
|
||||
returned.server_fill = server_fill("unexpected");
|
||||
|
||||
let server = start_open_server(returned, None);
|
||||
let mut client = Client::connect(config_for_params(server.addr, &requested)).unwrap();
|
||||
assert!(matches!(
|
||||
client.open(),
|
||||
Err(ClientError::NegotiationRejected { .. })
|
||||
));
|
||||
server.join();
|
||||
let server = start_open_server(returned, None);
|
||||
let mut client = Client::connect(config_for_params(server.addr, &requested)).unwrap();
|
||||
assert!(matches!(
|
||||
client.open(),
|
||||
Err(ClientError::NegotiationRejected { .. })
|
||||
));
|
||||
server.join();
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -176,14 +120,6 @@ fn server_fill_loose_allows_server_to_remove_fill() {
|
||||
|
||||
// ─── Echo behavior ───
|
||||
|
||||
#[test]
|
||||
fn server_fill_echo_reply_decoded_with_fill_configured() {
|
||||
let mut params = default_params();
|
||||
params.server_fill = server_fill("rand");
|
||||
let run = run_one_probe(params, TimestampFields::default());
|
||||
assert!(matches!(run.reply, ClientEvent::EchoReply { .. }));
|
||||
}
|
||||
|
||||
// server_fill is a negotiation/config parameter only; it does not affect
|
||||
// client-observable reply payload layout. The client sends server_fill in
|
||||
// the open request and expects the server to use it for reply payload
|
||||
|
||||
Reference in new issue
Block a user