From 03a07bceb625909327ffdc2fe687a24f12b8f97d Mon Sep 17 00:00:00 2001 From: Appelmans Date: Mon, 3 Mar 2025 12:57:04 -0800 Subject: [PATCH] Adds integ test --- quic/s2n-quic/src/tests.rs | 1 + quic/s2n-quic/src/tests/connection_limits.rs | 50 ++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 quic/s2n-quic/src/tests/connection_limits.rs diff --git a/quic/s2n-quic/src/tests.rs b/quic/s2n-quic/src/tests.rs index e4cb36123..d71c68edb 100644 --- a/quic/s2n-quic/src/tests.rs +++ b/quic/s2n-quic/src/tests.rs @@ -26,6 +26,7 @@ mod recorder; mod resumption; mod setup; +mod connection_limits; use setup::*; mod blackhole; diff --git a/quic/s2n-quic/src/tests/connection_limits.rs b/quic/s2n-quic/src/tests/connection_limits.rs new file mode 100644 index 000000000..037ee699e --- /dev/null +++ b/quic/s2n-quic/src/tests/connection_limits.rs @@ -0,0 +1,50 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +use super::*; +use s2n_quic_core::connection::limits::{ + ConnectionInfo, HandshakeInfo, Limiter, Limits, UpdatableLimits, +}; + +#[test] +fn connection_limits() { + struct LimitsProvider; + impl Limiter for LimitsProvider { + fn on_connection(&mut self, info: &ConnectionInfo) -> Limits { + let addr: [u8; 4] = [1, 0, 0, 1]; + let port = 49153; + assert_eq!(info.remote_address.ip(), addr); + assert_eq!(info.remote_address.port(), port); + Limits::default() + } + + fn on_post_handshake(&mut self, info: &HandshakeInfo, limits: &mut UpdatableLimits) { + let addr: [u8; 4] = [1, 0, 0, 1]; + let port = 49153; + assert_eq!(info.remote_address.ip(), addr); + assert_eq!(info.remote_address.port(), port); + assert_eq!(*info.server_name.unwrap(), "localhost".into()); + assert_eq!(info.application_protocol, "h3"); + limits.stream_batch_size(100); + } + } + + let model = Model::default(); + test(model, |handle| { + let server = Server::builder() + .with_io(handle.builder().build()?)? + .with_tls(SERVER_CERTS)? + .with_limits(LimitsProvider)? + .start()?; + + let client = Client::builder() + .with_io(handle.builder().build().unwrap())? + .with_tls(certificates::CERT_PEM)? + .start()?; + let addr = start_server(server)?; + start_client(client, addr, Data::new(1000))?; + + Ok(addr) + }) + .unwrap(); +}