Struct libcnb_test::ContainerConfig
source · pub struct ContainerConfig { /* private fields */ }Expand description
Config used when starting a container.
By default the container will run the CNB default process-type, however this can be
overridden using ContainerConfig::entrypoint and ContainerConfig::command.
See: CNB App Developer Guide: Run a multi-process app
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(
ContainerConfig::new()
.env("PORT", "12345")
.expose_port(12345),
|container| {
// ...
},
);
},
);Implementations§
source§impl ContainerConfig
impl ContainerConfig
sourcepub fn new() -> Self
pub fn new() -> Self
Creates an empty ContainerConfig instance.
By default the container will run the CNB default process-type, however this can be
overridden using ContainerConfig::entrypoint and ContainerConfig::command.
See: CNB App Developer Guide: Run a multi-process app
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(
ContainerConfig::new()
.env("PORT", "12345")
.expose_port(12345),
|container| {
// ...
},
);
},
);sourcepub fn entrypoint(&mut self, entrypoint: impl Into<String>) -> &mut Self
pub fn entrypoint(&mut self, entrypoint: impl Into<String>) -> &mut Self
Override the image’s entrypoint (which is the CNB default process-type).
See: CNB App Developer Guide: Run a multi-process app
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(ContainerConfig::new().entrypoint("worker"), |container| {
// ...
});
},
);sourcepub fn command<I: IntoIterator<Item = S>, S: Into<String>>(
&mut self,
command: I,
) -> &mut Self
pub fn command<I: IntoIterator<Item = S>, S: Into<String>>( &mut self, command: I, ) -> &mut Self
Set the container’s command (CNB images have no default command).
See: CNB App Developer Guide: Run a multi-process app
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(
ContainerConfig::new().command(["--additional-arg1", "--additional-arg2"]),
|container| {
// ...
},
);
},
);sourcepub fn expose_port(&mut self, port: u16) -> &mut Self
pub fn expose_port(&mut self, port: u16) -> &mut Self
Exposes a given port of the container to the host machine.
The given port is mapped to a random port on the host machine. Use
crate::ContainerContext::address_for_port to obtain the local port for a mapped port.
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(
ContainerConfig::new()
.env("PORT", "12345")
.expose_port(12345),
|container| {
let address_on_host = container.address_for_port(12345);
// ...
},
);
},
);sourcepub fn env(
&mut self,
key: impl Into<String>,
value: impl Into<String>,
) -> &mut Self
pub fn env( &mut self, key: impl Into<String>, value: impl Into<String>, ) -> &mut Self
Inserts or updates an environment variable mapping for the container.
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(
ContainerConfig::new()
.env("PORT", "5678")
.env("DEBUG", "true"),
|container| {
// ...
},
);
},
);sourcepub fn envs<K: Into<String>, V: Into<String>, I: IntoIterator<Item = (K, V)>>(
&mut self,
envs: I,
) -> &mut Self
pub fn envs<K: Into<String>, V: Into<String>, I: IntoIterator<Item = (K, V)>>( &mut self, envs: I, ) -> &mut Self
Adds or updates multiple environment variable mappings for the container.
§Example
use libcnb_test::{BuildConfig, ContainerConfig, TestRunner};
TestRunner::default().build(
BuildConfig::new("heroku/builder:22", "tests/fixtures/app"),
|context| {
// ...
context.start_container(
ContainerConfig::new().envs([("PORT", "5678"), ("DEBUG", "true")]),
|container| {
// ...
},
);
},
);Trait Implementations§
source§impl Clone for ContainerConfig
impl Clone for ContainerConfig
source§fn clone(&self) -> ContainerConfig
fn clone(&self) -> ContainerConfig
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Default for ContainerConfig
impl Default for ContainerConfig
source§fn default() -> ContainerConfig
fn default() -> ContainerConfig
Auto Trait Implementations§
impl Freeze for ContainerConfig
impl RefUnwindSafe for ContainerConfig
impl Send for ContainerConfig
impl Sync for ContainerConfig
impl Unpin for ContainerConfig
impl UnwindSafe for ContainerConfig
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> 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