Add integration tests based on testcontainers
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
mod support;
|
||||
|
||||
use std::time::Duration;
|
||||
|
||||
use support::container_harness::{ProbeNames, cleanup_confirmed_probe_resources, run_probe};
|
||||
use support::container_selection::Selection;
|
||||
|
||||
const CLEANUP_BUDGET: Duration = Duration::from_secs(40);
|
||||
|
||||
#[test]
|
||||
#[ignore = "requires an explicitly selected disposable Docker daemon"]
|
||||
fn selected_daemon_wireguard_and_application_smoke() {
|
||||
let selection = Selection::from_process_environment()
|
||||
.unwrap_or_else(|category| panic!("Testcontainers selection failed ({category})"));
|
||||
let names = ProbeNames::unique();
|
||||
let result = run_probe(&names);
|
||||
|
||||
// run_probe is synchronous: all Testcontainers requests return or reach the
|
||||
// pinned client's request timeout before this ownership-checked cleanup.
|
||||
let cleanup = cleanup_confirmed_probe_resources(
|
||||
&selection,
|
||||
&names,
|
||||
&std::process::id().to_string(),
|
||||
CLEANUP_BUDGET,
|
||||
);
|
||||
|
||||
if !cleanup.is_empty() {
|
||||
eprintln!(
|
||||
"Testcontainers cleanup incomplete for owned resources {}, {}, {}, {} ({})",
|
||||
names.network,
|
||||
names.server,
|
||||
names.baseline,
|
||||
names.client,
|
||||
cleanup.join(", ")
|
||||
);
|
||||
}
|
||||
if let Err(category) = result {
|
||||
panic!("Testcontainers probe failed ({category})");
|
||||
}
|
||||
if !cleanup.is_empty() {
|
||||
panic!("Testcontainers probe passed but owned-resource cleanup was incomplete");
|
||||
}
|
||||
eprintln!(
|
||||
"Testcontainers capability and Application smoke passed; owned resources: {}, {}, {}, {}",
|
||||
names.network, names.server, names.baseline, names.client
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user