test: only cleanup test related instances

This commit is contained in:
zhom
2025-08-06 22:13:32 +04:00
parent 9cfed6d73e
commit cecb4579c7
2 changed files with 49 additions and 26 deletions
+38 -1
View File
@@ -121,11 +121,48 @@ impl TestUtils {
Ok(tempfile::tempdir()?)
}
/// Clean up specific nodecar processes by IDs (for targeted test cleanup)
pub async fn cleanup_specific_processes(
nodecar_path: &PathBuf,
proxy_ids: &[String],
camoufox_ids: &[String],
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
println!("Cleaning up specific test processes...");
// Stop specific proxies
for proxy_id in proxy_ids {
let stop_args = ["proxy", "stop", "--id", proxy_id];
if let Ok(output) = Self::execute_nodecar_command(nodecar_path, &stop_args, 10).await {
if output.status.success() {
println!("Stopped test proxy: {proxy_id}");
}
}
}
// Stop specific camoufox instances
for camoufox_id in camoufox_ids {
let stop_args = ["camoufox", "stop", "--id", camoufox_id];
if let Ok(output) = Self::execute_nodecar_command(nodecar_path, &stop_args, 30).await {
if output.status.success() {
println!("Stopped test camoufox instance: {camoufox_id}");
}
}
}
// Give processes time to clean up
tokio::time::sleep(Duration::from_millis(500)).await;
println!("Test process cleanup completed");
Ok(())
}
/// Clean up all running nodecar processes (proxies and camoufox instances)
/// WARNING: This will stop ALL processes, including those from actual app usage
#[allow(dead_code)]
pub async fn cleanup_all_nodecar_processes(
nodecar_path: &PathBuf,
) -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
println!("Cleaning up all nodecar processes...");
println!("WARNING: Cleaning up ALL nodecar processes...");
// Get list of all proxies and stop them individually
let proxy_list_args = ["proxy", "list"];
+11 -25
View File
@@ -6,8 +6,9 @@ use serde_json::Value;
async fn setup_test() -> Result<std::path::PathBuf, Box<dyn std::error::Error + Send + Sync>> {
let nodecar_path = TestUtils::ensure_nodecar_binary().await?;
// Clean up any existing processes from previous test runs
let _ = TestUtils::cleanup_all_nodecar_processes(&nodecar_path).await;
// Only clean up test-specific processes, not all processes
// This prevents interfering with actual app usage during testing
println!("Setting up test environment...");
Ok(nodecar_path)
}
@@ -37,20 +38,13 @@ impl TestResourceTracker {
}
async fn cleanup_all(&self) {
// Clean up tracked proxies
for proxy_id in &self.proxy_ids {
let stop_args = ["proxy", "stop", "--id", proxy_id];
let _ = TestUtils::execute_nodecar_command(&self.nodecar_path, &stop_args, 10).await;
}
// Clean up tracked camoufox instances
for camoufox_id in &self.camoufox_ids {
let stop_args = ["camoufox", "stop", "--id", camoufox_id];
let _ = TestUtils::execute_nodecar_command(&self.nodecar_path, &stop_args, 30).await;
}
// Give processes time to clean up
tokio::time::sleep(tokio::time::Duration::from_millis(500)).await;
// Use targeted cleanup to only stop test-specific processes
let _ = TestUtils::cleanup_specific_processes(
&self.nodecar_path,
&self.proxy_ids,
&self.camoufox_ids,
)
.await;
}
}
@@ -62,15 +56,7 @@ impl Drop for TestResourceTracker {
let nodecar_path = self.nodecar_path.clone();
tokio::spawn(async move {
for proxy_id in &proxy_ids {
let stop_args = ["proxy", "stop", "--id", proxy_id];
let _ = TestUtils::execute_nodecar_command(&nodecar_path, &stop_args, 10).await;
}
for camoufox_id in &camoufox_ids {
let stop_args = ["camoufox", "stop", "--id", camoufox_id];
let _ = TestUtils::execute_nodecar_command(&nodecar_path, &stop_args, 30).await;
}
let _ = TestUtils::cleanup_specific_processes(&nodecar_path, &proxy_ids, &camoufox_ids).await;
});
}
}