Struct aws_smithy_runtime::client::http::test_util::dvr::RecordingClient
source · pub struct RecordingClient { /* private fields */ }Available on crate features
client and test-util and connector-hyper-0-14-x only.Expand description
Recording client
RecordingClient wraps an inner connection and records all traffic, enabling traffic replay.
§Example
ⓘ
use aws_smithy_async::rt::sleep::default_async_sleep;
use aws_smithy_runtime::client::http::hyper_014::default_connector;
use aws_smithy_runtime::client::http::test_util::dvr::RecordingClient;
use aws_smithy_runtime_api::client::http::HttpConnectorSettingsBuilder;
use aws_sdk_s3::{Client, Config};
#[tokio::test]
async fn test_content_length_enforcement_is_not_applied_to_head_request() {
let settings = HttpConnectorSettingsBuilder::default().build();
let http_client = default_connector(&settings, default_async_sleep()).unwrap();
let http_client = RecordingClient::new(http_client);
// Since we need to send a real request for this,
// you'll need to use your real credentials.
let config = aws_config::load_defaults(BehaviorVersion::latest()).await;
let config = Config::from(&config).to_builder()
.http_client(http_client.clone())
.region(Region::new("us-east-1"))
.build();
let client = Client::from_conf(config);
let _resp = client
.head_object()
.key("some-test-file.txt")
.bucket("your-test-bucket")
.send()
.await
.unwrap();
// If the request you want to record has a body, don't forget to poll
// the body to completion BEFORE calling `dump_to_file`. Otherwise, your
// test json won't include the body.
// let _body = _resp.body.collect().await.unwrap();
// This path is relative to your project or workspace `Cargo.toml` file.
http_client.dump_to_file("tests/data/content-length-enforcement/head-object.json").unwrap();
}Implementations§
source§impl RecordingClient
impl RecordingClient
sourcepub fn new(underlying_connector: impl HttpConnector + 'static) -> Self
pub fn new(underlying_connector: impl HttpConnector + 'static) -> Self
Create a new recording connection from a connection
sourcepub fn events(&self) -> MutexGuard<'_, Vec<Event>>
pub fn events(&self) -> MutexGuard<'_, Vec<Event>>
Return the traffic recorded by this connection
sourcepub fn network_traffic(&self) -> NetworkTraffic
pub fn network_traffic(&self) -> NetworkTraffic
NetworkTraffic struct suitable for serialization
Trait Implementations§
source§impl Clone for RecordingClient
impl Clone for RecordingClient
source§fn clone(&self) -> RecordingClient
fn clone(&self) -> RecordingClient
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moresource§impl Debug for RecordingClient
impl Debug for RecordingClient
source§impl HttpClient for RecordingClient
impl HttpClient for RecordingClient
source§fn http_connector(
&self,
_: &HttpConnectorSettings,
_: &RuntimeComponents,
) -> SharedHttpConnector
fn http_connector( &self, _: &HttpConnectorSettings, _: &RuntimeComponents, ) -> SharedHttpConnector
Returns a HTTP connector based on the requested connector settings. Read more
source§fn connector_metadata(&self) -> Option<ConnectorMetadata>
fn connector_metadata(&self) -> Option<ConnectorMetadata>
Provide metadata about the crate that this HttpClient uses to make connectors. Read more
source§impl HttpConnector for RecordingClient
impl HttpConnector for RecordingClient
source§fn call(&self, request: HttpRequest) -> HttpConnectorFuture
fn call(&self, request: HttpRequest) -> HttpConnectorFuture
Asynchronously converts a request into a response.
Auto Trait Implementations§
impl Freeze for RecordingClient
impl !RefUnwindSafe for RecordingClient
impl Send for RecordingClient
impl Sync for RecordingClient
impl Unpin for RecordingClient
impl !UnwindSafe for RecordingClient
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit)source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreCreates a shared type from an unshared type.