pub struct ConnectionTestHarness { /* private fields */ }client and test-util and connector-hyper-0-14-x and wire-mock only.Expand description
Running scripted endpoints with recorded connection events and mock DNS.
Endpoint tasks own all accepted connection tasks. Use
ConnectionTestHarness::shutdown to stop and join them and to surface
script failures. Dropping the harness requests shutdown and aborts endpoint
tasks without waiting for their result.
Implementations§
Source§impl ConnectionTestHarness
impl ConnectionTestHarness
Sourcepub fn builder() -> HarnessBuilder
pub fn builder() -> HarnessBuilder
Creates a harness builder.
Sourcepub fn endpoints(&self) -> &[TestEndpoint]
pub fn endpoints(&self) -> &[TestEndpoint]
Returns all configured endpoints.
Sourcepub fn endpoint(&self, index: usize) -> Option<&TestEndpoint>
pub fn endpoint(&self, index: usize) -> Option<&TestEndpoint>
Returns an endpoint by configuration order.
Sourcepub fn endpoint_url(&self) -> String
pub fn endpoint_url(&self) -> String
Returns an HTTP URL for the first endpoint.
Sourcepub fn dns_resolver(&self) -> MockDnsResolver
pub fn dns_resolver(&self) -> MockDnsResolver
Returns a clone of the configured DNS resolver.
Sourcepub fn events(&self) -> Vec<ConnectionEvent>
pub fn events(&self) -> Vec<ConnectionEvent>
Returns a snapshot of all events recorded so far.
Events remain ordered by when they were recorded across all endpoints.
Sourcepub fn tcp_accepted_count(&self) -> usize
pub fn tcp_accepted_count(&self) -> usize
Returns the number of accepted TCP connections.
Sourcepub fn tcp_accepted_by(&self, ip: IpAddr) -> usize
pub fn tcp_accepted_by(&self, ip: IpAddr) -> usize
Returns the number of accepted TCP connections for ip.
Sourcepub fn dns_lookup_count(&self) -> usize
pub fn dns_lookup_count(&self) -> usize
Returns the number of DNS lookups.
Sourcepub fn http_requests(&self) -> Vec<(String, Option<String>)>
pub fn http_requests(&self) -> Vec<(String, Option<String>)>
Returns recorded HTTP request targets and Host headers.
Sourcepub async fn wait_for_tcp_accepts(
&self,
expected: usize,
timeout: Duration,
) -> Result<(), HarnessError>
pub async fn wait_for_tcp_accepts( &self, expected: usize, timeout: Duration, ) -> Result<(), HarnessError>
Waits up to timeout for at least expected accepted TCP connections.
A background harness failure is returned immediately.
Sourcepub async fn wait_for_http_requests(
&self,
expected: usize,
timeout: Duration,
) -> Result<(), HarnessError>
pub async fn wait_for_http_requests( &self, expected: usize, timeout: Duration, ) -> Result<(), HarnessError>
Waits up to timeout for at least expected complete HTTP/1 requests.
A background harness failure is returned immediately.
Sourcepub async fn wait_for_event<F>(
&self,
timeout: Duration,
predicate: F,
) -> Result<(), HarnessError>
pub async fn wait_for_event<F>( &self, timeout: Duration, predicate: F, ) -> Result<(), HarnessError>
Waits up to timeout until an event matches predicate.
A background harness failure is returned immediately.
Sourcepub async fn shutdown(self) -> Result<(), HarnessError>
pub async fn shutdown(self) -> Result<(), HarnessError>
Requests shutdown, joins every endpoint and connection task, and reports failures.
Failures recorded before or during shutdown are combined into the
returned HarnessError.
Drop any client holding connections to this harness before calling this.
Shutdown cancels connection tasks promptly, including one parked in
SocketScript::await_client_close; a script waiting there can only
observe bytes the client should not have sent while the connection is
still live, so shutting down with the client alive can mask that failure.
Trait Implementations§
Source§impl Debug for ConnectionTestHarness
impl Debug for ConnectionTestHarness
Auto Trait Implementations§
impl Freeze for ConnectionTestHarness
impl !RefUnwindSafe for ConnectionTestHarness
impl Send for ConnectionTestHarness
impl Sync for ConnectionTestHarness
impl Unpin for ConnectionTestHarness
impl UnsafeUnpin for ConnectionTestHarness
impl !UnwindSafe for ConnectionTestHarness
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
§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>
renamed to 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);