Skip to main content

TestContext

Struct TestContext 

Source
pub struct TestContext {
    pub test_id: String,
    pub config: E2eConfig,
    pub postgres: PostgresResource,
    pub kafka: KafkaResource,
    pub clickhouse: Option<ClickHouseResource>,
    pub mysql: Option<MySqlResource>,
    pub prometheus: Option<PrometheusResource>,
    pub sqs: Option<SqsResource>,
    pub use_plugin: bool,
    pub temp_dir: TempDir,
    pub pg_database: String,
    pub kafka_topic: String,
}
Expand description

Test context providing isolated resources for a single test

Fields§

§test_id: String

Unique identifier for this test run

§config: E2eConfig

Configuration

§postgres: PostgresResource

PostgreSQL resource manager

§kafka: KafkaResource

Kafka resource manager

§clickhouse: Option<ClickHouseResource>

ClickHouse resource manager (optional, only if clickhouse tests are needed)

§mysql: Option<MySqlResource>

MySQL resource manager (optional, only if mysql tests are needed)

§prometheus: Option<PrometheusResource>

Prometheus resource manager (optional, only if metrics tests are needed)

§sqs: Option<SqsResource>

SQS resource manager (optional, only if SQS tests are needed)

§use_plugin: bool

When true, Self::build_env_vars forwards STREAMLING__PLUGIN__PATH to the streamling subprocess if it is set in the current environment and points at an existing file.

§temp_dir: TempDir

Temporary directory for pipeline files

§pg_database: String

Name of the isolated PostgreSQL database

§kafka_topic: String

Name of the isolated Kafka topic

Implementations§

Source§

impl TestContext

Source

pub async fn new() -> Result<Self>

Create a new test context with isolated resources

Source

pub async fn with_options(options: TestContextOptions) -> Result<Self>

Create a new test context with custom options

Source

pub fn pg_connection_string(&self) -> String

Get the PostgreSQL connection string for the isolated database

Source

pub async fn run_streamling(&self, pipeline_yaml: &str) -> Result<ExitStatus>

Run streamling with the given pipeline YAML content

Source

pub async fn run_streamling_file( &self, pipeline_path: &Path, ) -> Result<ExitStatus>

Run streamling with a pipeline file path

Source

pub fn build_env_vars(&self) -> Vec<(String, String)>

Build environment variables for streamling execution

Source

pub async fn create_sqs_queue(&self, queue_suffix: &str) -> Result<SqsResource>

Create an additional SQS queue for use in tests

Source

pub async fn create_kafka_topic( &self, topic_suffix: &str, ) -> Result<KafkaResource>

Create an additional Kafka topic for use in tests (e.g., for sink output)

Source

pub async fn consume_kafka_messages( &self, topic: &str, max_messages: usize, ) -> Result<Vec<(i64, String, String)>>

Consume messages from a Kafka topic and return them as decoded values

Source

pub async fn run_pipeline( &self, pipeline_yaml: &str, record_limit: u64, ) -> Result<ExitStatus>

Run streamling with pipeline YAML and stop after N records

This is the most common pattern for e2e tests - run until a specific number of records have been processed.

Source

pub async fn run_pipeline_with_opts( &self, pipeline_yaml: &str, opts: PipelineOpts, ) -> Result<ExitStatus>

Run streamling with pipeline YAML and custom options

Source

pub async fn run_pipeline_with_capture( &self, pipeline_yaml: &str, opts: PipelineOpts, ) -> Result<PrintSinkOutput>

Run streamling with pipeline YAML and capture stdout/stderr for inspection

This is useful for tests that need to inspect the print sink output. Returns a PrintSinkOutput which can be used to verify the pipeline output.

Source

pub async fn run_pipeline_raw( &self, pipeline_yaml: &str, opts: PipelineOpts, ) -> Result<StreamlingOutput>

Run streamling with pipeline YAML and return raw output (stdout, stderr, status)

This is useful for tests that need to inspect error messages or other raw output that doesn’t fit the PrintSinkOutput format. Unlike other run methods, this returns the output even if the pipeline fails, allowing tests to inspect error messages.

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> 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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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