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
impl ProcessRunner
Sourcepub fn new() -> Self
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.
Sourcepub fn with_binary<P: AsRef<Path>>(self, binary: P) -> Self
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.
Sourcepub fn working_dir<P: AsRef<Path>>(self, dir: P) -> Self
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.
Sourcepub fn log_dir<P: AsRef<Path>>(self, dir: P) -> Self
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.
Sourcepub fn run_create_command(&self, config_file: &str) -> Result<ProcessResult>
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.
Sourcepub fn run_provision_command(
&self,
environment_name: &str,
) -> Result<ProcessResult>
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.
Sourcepub fn run_destroy_command(
&self,
environment_name: &str,
) -> Result<ProcessResult>
pub fn run_destroy_command( &self, environment_name: &str, ) -> Result<ProcessResult>
Sourcepub fn run_register_command(
&self,
environment_name: &str,
instance_ip: &str,
ssh_port: Option<u16>,
) -> Result<ProcessResult>
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.
Sourcepub fn run_configure_command(
&self,
environment_name: &str,
) -> Result<ProcessResult>
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.
Sourcepub fn run_test_command(&self, environment_name: &str) -> Result<ProcessResult>
pub fn run_test_command(&self, environment_name: &str) -> Result<ProcessResult>
Sourcepub fn run_release_command(
&self,
environment_name: &str,
) -> Result<ProcessResult>
pub fn run_release_command( &self, environment_name: &str, ) -> Result<ProcessResult>
Sourcepub fn run_run_command(&self, environment_name: &str) -> Result<ProcessResult>
pub fn run_run_command(&self, environment_name: &str) -> Result<ProcessResult>
Sourcepub fn run_list_command(&self) -> Result<ProcessResult>
pub fn run_list_command(&self) -> Result<ProcessResult>
Sourcepub fn run_exists_command(
&self,
environment_name: &str,
) -> Result<ProcessResult>
pub fn run_exists_command( &self, environment_name: &str, ) -> Result<ProcessResult>
Sourcepub fn run_show_command(&self, environment_name: &str) -> Result<ProcessResult>
pub fn run_show_command(&self, environment_name: &str) -> Result<ProcessResult>
Sourcepub fn run_validate_command(&self, config_file: &str) -> Result<ProcessResult>
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.
Sourcepub fn run_render_command_with_env_name(
&self,
environment_name: &str,
instance_ip: &str,
output_dir: &str,
) -> Result<ProcessResult>
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.
Sourcepub fn run_render_command_with_config_file(
&self,
config_file: &str,
instance_ip: &str,
output_dir: &str,
) -> Result<ProcessResult>
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.
Sourcepub fn run_purge_command(&self, environment_name: &str) -> Result<ProcessResult>
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§
Auto Trait Implementations§
impl Freeze for ProcessRunner
impl RefUnwindSafe for ProcessRunner
impl Send for ProcessRunner
impl Sync for ProcessRunner
impl Unpin for ProcessRunner
impl UnsafeUnpin for ProcessRunner
impl UnwindSafe for ProcessRunner
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request