use std::time::Duration; #[tokio::test] #[ignore] async fn docker_swarm_smoke_test_is_gated_and_times_out() { let enabled = std::env::var("CONTROL_TEST_DOCKER").ok(); assert_eq!(enabled.as_deref(), Some("1")); let stack = "cloudlysis_control_test"; let compose = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")) .parent() .and_then(|p| p.parent()) .unwrap() .join("swarm/stacks/control-plane.yml"); let deploy = tokio::process::Command::new("docker") .args(["stack", "deploy", "-c"]) .arg(&compose) .arg(stack) .output(); let out = tokio::time::timeout(Duration::from_secs(30), deploy) .await .expect("docker stack deploy timed out") .expect("failed to run docker stack deploy"); assert!( out.status.success(), "docker stack deploy failed: {}", String::from_utf8_lossy(&out.stderr) ); let ls = tokio::process::Command::new("docker") .args(["service", "ls"]) .output(); let _ = tokio::time::timeout(Duration::from_secs(10), ls).await; let rm = tokio::process::Command::new("docker") .args(["stack", "rm"]) .arg(stack) .output(); let _ = tokio::time::timeout(Duration::from_secs(10), rm).await; }