Struct aws_smithy_runtime::client::http::test_util::dvr::RecordingClient
source · pub struct RecordingClient { /* private fields */ }
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
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
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
source§fn connector_metadata(&self) -> Option<ConnectorMetadata>
fn connector_metadata(&self) -> Option<ConnectorMetadata>
source§impl HttpConnector for RecordingClient
impl HttpConnector for RecordingClient
source§fn call(&self, request: HttpRequest) -> HttpConnectorFuture
fn call(&self, request: HttpRequest) -> HttpConnectorFuture
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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 more§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the foreground set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red()
and
green()
, which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg()
:
use yansi::{Paint, Color};
painted.fg(Color::White);
Set foreground color to white using white()
.
use yansi::Paint;
painted.white();
§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self
with the background set to
value
.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red()
and
on_green()
, which have the same functionality but
are pithier.
§Example
Set background color to red using fg()
:
use yansi::{Paint, Color};
painted.bg(Color::Red);
Set background color to red using on_red()
.
use yansi::Paint;
painted.on_red();
§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute
] value
.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold()
and
underline()
, which have the same functionality
but are pithier.
§Example
Make text bold using attr()
:
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);
Make text bold using using bold()
.
use yansi::Paint;
painted.bold();
§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi
[Quirk
] value
.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask()
and
wrap()
, which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk()
:
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);
Enable wrapping using wrap()
.
use yansi::Paint;
painted.wrap();
§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting()
due to conflicts with Vec::clear()
.
The clear()
method will be removed in a future release.§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition
] value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted
only when both stdout
and stderr
are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);