Skip to main content

ProcessRunner

Struct ProcessRunner 

Source
pub struct ProcessRunner { /* private fields */ }
Expand description

Runs the production application as an external process

This struct provides methods for executing the application binary with different command-line arguments for black-box testing.

By default the runner falls back to cargo run -- so it can be used from src/bin/ programs that do not have a pre-built binary available. In integration tests (tests/), you should always call with_binary with env!("CARGO_BIN_EXE_torrust-tracker-deployer") so that Cargo’s pre-built binary is used directly, eliminating ~13 s of cargo run startup overhead per invocation.

Implementations§

Source§

impl ProcessRunner

Source

pub fn new() -> Self

Create a new process runner

Falls back to cargo run -- for executing the application. In integration tests prefer with_binary to avoid the ~13 s cargo run startup overhead.

Source

pub fn with_binary<P: AsRef<Path>>(self, binary: P) -> Self

Set the pre-built binary to use instead of cargo run.

In integration tests pass env!("CARGO_BIN_EXE_torrust-tracker-deployer") here. Cargo automatically builds the binary before running the integration test, so the binary is always up-to-date.

Source

pub fn working_dir<P: AsRef<Path>>(self, dir: P) -> Self

Set the working directory for the test process (not the app working dir)

This is the directory where the test command will be executed from, typically a temporary directory for test isolation.

Source

pub fn log_dir<P: AsRef<Path>>(self, dir: P) -> Self

Set the log directory for the application

This is passed as --log-dir to the application to control where logs are written, enabling test isolation.

Source

pub fn run_create_command(&self, config_file: &str) -> Result<ProcessResult>

Run the create command with the production binary

This method runs create environment --env-file <config_file> with optional working directory for the application itself via --working-dir.

§Errors

Returns an error if the command fails to execute.

§Panics

Panics if the working directory or config file path contains invalid UTF-8.

Source

pub fn run_provision_command( &self, environment_name: &str, ) -> Result<ProcessResult>

Run the provision command with the production binary

This method runs provision <environment_name> with optional working directory for the application itself via --working-dir.

§Errors

Returns an error if the command fails to execute.

§Panics

Panics if the working directory path contains invalid UTF-8.

Source

pub fn run_destroy_command( &self, environment_name: &str, ) -> Result<ProcessResult>

Run the destroy command with the production binary

This method runs destroy <environment_name> with optional working directory for the application itself via --working-dir.

§Errors

Returns an error if the command fails to execute.

§Panics

Panics if the working directory path contains invalid UTF-8.

Source

pub fn run_register_command( &self, environment_name: &str, instance_ip: &str, ssh_port: Option<u16>, ) -> Result<ProcessResult>

Run the register command with the production binary

This method runs register <environment_name> --instance-ip <ip> with optional working directory for the application itself via --working-dir.

§Errors

Returns an error if the command fails to execute.

§Panics

Panics if the working directory path contains invalid UTF-8.

Source

pub fn run_configure_command( &self, environment_name: &str, ) -> Result<ProcessResult>

Run the configure command with the production binary

This method runs configure <environment_name> with optional working directory for the application itself via --working-dir.

§Errors

Returns an error if the command fails to execute.

§Panics

Panics if the working directory path contains invalid UTF-8.

Source

pub fn run_test_command(&self, environment_name: &str) -> Result<ProcessResult>

Run the test command with the production binary

This method runs test <environment_name> with optional working directory for the application itself via --working-dir.

§Errors

Returns an error if the command fails to execute.

§Panics

Panics if the working directory path contains invalid UTF-8.

Source

pub fn run_release_command( &self, environment_name: &str, ) -> Result<ProcessResult>

Run the release command with the production binary

This method runs release <environment_name> with optional working directory for the application itself via --working-dir.

§Errors

Returns an error if the command fails to execute.

§Panics

Panics if the working directory path contains invalid UTF-8.

Source

pub fn run_run_command(&self, environment_name: &str) -> Result<ProcessResult>

Run the run command with the production binary

This method runs run <environment_name> with optional working directory for the application itself via --working-dir.

§Errors

Returns an error if the command fails to execute.

§Panics

Panics if the working directory path contains invalid UTF-8.

Source

pub fn run_list_command(&self) -> Result<ProcessResult>

Run the list command with the production binary

This method runs list with optional working directory for the application itself via --working-dir.

§Errors

Returns an error if the command fails to execute.

§Panics

Panics if the working directory path contains invalid UTF-8.

Source

pub fn run_exists_command( &self, environment_name: &str, ) -> Result<ProcessResult>

Run the exists command with the production binary

This method runs exists <environment_name> with optional working directory for the application itself via --working-dir.

§Errors

Returns an error if the command fails to execute.

§Panics

Panics if the working directory path contains invalid UTF-8.

Source

pub fn run_show_command(&self, environment_name: &str) -> Result<ProcessResult>

Run the show command with the production binary

This method runs show <environment_name> with optional working directory for the application itself via --working-dir.

§Errors

Returns an error if the command fails to execute.

§Panics

Panics if the working directory path contains invalid UTF-8.

Source

pub fn run_validate_command(&self, config_file: &str) -> Result<ProcessResult>

Run the validate command with the production binary

This method runs validate -f <config_file> with optional working directory for the application itself via --working-dir.

§Errors

Returns an error if the command fails to execute.

§Panics

Panics if the working directory or log directory path contains invalid UTF-8.

Source

pub fn run_render_command_with_env_name( &self, environment_name: &str, instance_ip: &str, output_dir: &str, ) -> Result<ProcessResult>

Run the purge command with the production binary

This method runs cargo run -- purge <environment_name> --force with optional working directory for the application itself via --working-dir. Always uses --force flag to skip interactive confirmation prompts in tests.

§Errors

Returns an error if the command fails to execute.

§Panics

Panics if the working directory path contains invalid UTF-8. Run the render command with environment name input mode

This method runs render --env-name <name> --instance-ip <ip> --output-dir <dir> with optional working directory for the application itself via --working-dir.

§Errors

Returns an error if the command fails to execute.

§Panics

May panic if the working directory path is not valid UTF-8.

Source

pub fn run_render_command_with_config_file( &self, config_file: &str, instance_ip: &str, output_dir: &str, ) -> Result<ProcessResult>

Run the render command with config file input mode

This method runs render --env-file <path> --instance-ip <ip> --output-dir <dir> with optional working directory and log directory for test isolation.

§Errors

Returns an error if the command fails to execute.

§Panics

May panic if the working directory or log directory path is not valid UTF-8.

Source

pub fn run_purge_command(&self, environment_name: &str) -> Result<ProcessResult>

Run the purge command with the production binary

This method runs purge <environment_name> --force with optional working directory for the application itself via --working-dir. The --force flag is always used to skip interactive prompts.

§Errors

Returns an error if the command fails to execute.

§Panics

May panic if the working directory path is not valid UTF-8.

Trait Implementations§

Source§

impl Default for ProcessRunner

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> IntoResult<T> for T

Source§

type Err = !

Source§

fn into_result(self) -> Result<T, <T as IntoResult<T>>::Err>

Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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 = !

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

fn try_from(value: U) -> Result<T, !>

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