41 lines
1.9 KiB
Rust
41 lines
1.9 KiB
Rust
// file: crates/common/game-realtime-websocket-lib/unit_tests/config.rs
|
|
// version: 1
|
|
|
|
#[test]
|
|
fn default_configuration_matches_the_product_baseline() {
|
|
let config = crate::WebSocketConfig::default();
|
|
assert_eq!(config.max_message_size(), 1024 * 1024);
|
|
assert_eq!(config.max_frame_size(), 1024 * 1024);
|
|
assert_eq!(config.write_buffer_size(), 64 * 1024);
|
|
assert_eq!(config.max_write_buffer_size(), 2 * 1024 * 1024);
|
|
assert_eq!(config.connect_timeout(), std::time::Duration::from_secs(10));
|
|
assert_eq!(config.send_timeout(), std::time::Duration::from_secs(5));
|
|
assert_eq!(config.close_timeout(), std::time::Duration::from_secs(2));
|
|
assert!(config.validate().is_ok());
|
|
}
|
|
|
|
#[test]
|
|
fn invalid_message_and_write_buffer_bounds_are_rejected() {
|
|
let zero_message = crate::WebSocketConfig::default().with_max_message_size(0);
|
|
assert_invalid_configuration(zero_message);
|
|
let oversized_frame = crate::WebSocketConfig::default().with_max_frame_size(2 * 1024 * 1024);
|
|
assert_invalid_configuration(oversized_frame);
|
|
let insufficient_write_buffer = crate::WebSocketConfig::default().with_max_write_buffer_size(1024 * 1024);
|
|
assert_invalid_configuration(insufficient_write_buffer);
|
|
}
|
|
|
|
#[test]
|
|
fn zero_operation_deadlines_are_rejected() {
|
|
assert_invalid_configuration(crate::WebSocketConfig::default().with_connect_timeout(std::time::Duration::ZERO));
|
|
assert_invalid_configuration(crate::WebSocketConfig::default().with_send_timeout(std::time::Duration::ZERO));
|
|
assert_invalid_configuration(crate::WebSocketConfig::default().with_close_timeout(std::time::Duration::ZERO));
|
|
}
|
|
|
|
fn assert_invalid_configuration(config: crate::WebSocketConfig) {
|
|
let result = config.validate();
|
|
match result {
|
|
Ok(()) => panic!("invalid WebSocket configuration was accepted"),
|
|
Err(error) => assert_eq!(error.kind(), game_realtime_transport_lib::TransportErrorKind::InvalidConfiguration),
|
|
}
|
|
}
|