TestContext

Struct TestContext 

Source
pub struct TestContext {
    pub clock: Arc<dyn ClockProvider>,
    pub http: Arc<dyn HttpProvider>,
    pub rng: Arc<dyn RngProvider>,
    pub uuid: Arc<dyn UuidProvider>,
    pub fs: Arc<dyn FsProvider>,
    pub env: Arc<dyn EnvProvider>,
    pub secrets: Arc<dyn SecretsProvider>,
    /* private fields */
}
Expand description

Test context with pluggable providers for deterministic testing.

This context provides access to all the same functionality as the regular Context, plus mock providers for external dependencies.

§Example

use xerv_core::testing::{TestContextBuilder, MockClock, MockHttp};

let ctx = TestContextBuilder::new()
    .with_fixed_time("2024-01-15T10:30:00Z")
    .with_seed(42)
    .with_sequential_uuids()
    .with_recording()
    .build()
    .unwrap();

// Use providers
let time = ctx.clock.system_time_millis();
let uuid = ctx.uuid.new_v4();

Fields§

§clock: Arc<dyn ClockProvider>

Clock provider for time operations.

§http: Arc<dyn HttpProvider>

HTTP provider for network requests.

§rng: Arc<dyn RngProvider>

RNG provider for random number generation.

§uuid: Arc<dyn UuidProvider>

UUID provider for UUID generation.

§fs: Arc<dyn FsProvider>

Filesystem provider for file operations.

§env: Arc<dyn EnvProvider>

Environment provider for environment variables.

§secrets: Arc<dyn SecretsProvider>

Secrets provider for secret management.

Implementations§

Source§

impl TestContext

Source

pub fn trace_id(&self) -> TraceId

Get the trace ID.

Source

pub fn node_id(&self) -> NodeId

Get the node ID.

Source

pub fn read_bytes(&self, ptr: RelPtr<()>) -> Result<Vec<u8>>

Read bytes from the arena.

Source

pub fn write_bytes(&self, bytes: &[u8]) -> Result<RelPtr<()>>

Write bytes to the arena.

Source

pub fn read_raw(&self, offset: ArenaOffset, size: usize) -> Result<Vec<u8>>

Read raw bytes from the arena.

Source

pub fn write_raw(&self, bytes: &[u8]) -> Result<RelPtr<()>>

Write raw bytes to the arena.

Source

pub fn log(&self, message: impl AsRef<str>)

Log a message.

Source

pub fn warn(&self, message: impl AsRef<str>)

Log a warning.

Source

pub fn error(&self, message: impl AsRef<str>)

Log an error.

Source

pub fn write_position(&self) -> ArenaOffset

Get the current write position.

Source

pub fn wal(&self) -> &Wal

Get the WAL.

Source

pub fn recorder(&self) -> Option<&Arc<EventRecorder>>

Get the event recorder (if recording is enabled).

Source

pub fn record(&self, event: RecordedEvent)

Record an event (if recording is enabled).

Source

pub fn now(&self) -> u64

Get current time in nanoseconds.

Source

pub fn system_time_millis(&self) -> u64

Get current system time in milliseconds.

Source

pub fn new_uuid(&self) -> Uuid

Generate a new UUID.

Source

pub fn random_u64(&self) -> u64

Generate a random u64.

Source

pub fn random_f64(&self) -> f64

Generate a random f64 in [0, 1).

Source

pub fn env_var(&self, key: &str) -> Option<String>

Get an environment variable.

Source

pub fn secret(&self, key: &str) -> Option<String>

Get a secret.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more