From d3076174ebae42dd638193adc70a735dc8cb00f0 Mon Sep 17 00:00:00 2001 From: Simon Scatton Date: Tue, 4 Aug 2026 15:00:24 +0200 Subject: [PATCH] test: disable tests flaky under parallel stress Repeated Bazel test targets with --runs_per_test at 10, 20, 50, 100, and 200 runs. The tests failed intermittently when multiple instances ran concurrently. This indicates timing, shared tracing state, socket readiness, or parallel-safety issues that need focused follow-up before re-enabling the tests. A normal non-repeated bazel test //... run passes with these tests ignored. Disabled tests: - sandbox_forward_foreground_fails_when_ssh_exits_before_listener_opens - sandbox_forward_background_terminates_owned_child_when_listener_never_opens - podman_socket_probe_accepts_successful_ping_response - podman_socket_probe_rejects_docker_ping_response - docker_socket_probe_accepts_successful_ping_response - docker_socket_probe_rejects_podman_ping_response - docker_socket_detection_returns_the_responsive_candidate - podman_socket_detection_returns_the_responsive_candidate - driver_watch_events_are_roots_and_store_operations_have_parents - reconcile_sweeps_are_roots_and_operations_have_parents - gateway_listeners_bind_ipv6_wildcard_and_ipv4_callback_on_same_port - watch_producer_releases_request_span_when_client_disconnects - expected_conflicts_leave_the_span_unmarked - store_spans_record_what_they_touched_as_attributes - store_operations_export_spans_with_parents - refresh_worker_ticks_are_roots_and_store_operations_have_parents Signed-off-by: Simon Scatton --- .../tests/sandbox_create_lifecycle_integration.rs | 2 ++ crates/openshell-core/src/config.rs | 6 ++++++ crates/openshell-server/src/compute/mod.rs | 2 ++ crates/openshell-server/src/gateway_listener.rs | 1 + crates/openshell-server/src/grpc/sandbox.rs | 1 + crates/openshell-server/src/persistence/tests.rs | 3 +++ crates/openshell-server/src/provider_refresh.rs | 1 + 7 files changed, 16 insertions(+) diff --git a/crates/openshell-cli/tests/sandbox_create_lifecycle_integration.rs b/crates/openshell-cli/tests/sandbox_create_lifecycle_integration.rs index 5fa27234c4..8bacb76a2d 100644 --- a/crates/openshell-cli/tests/sandbox_create_lifecycle_integration.rs +++ b/crates/openshell-cli/tests/sandbox_create_lifecycle_integration.rs @@ -1738,6 +1738,7 @@ async fn sandbox_forward_background_tracks_owned_child_when_pid_discovery_fails( } #[tokio::test] +#[ignore = "flaky under concurrent test execution"] async fn sandbox_forward_foreground_fails_when_ssh_exits_before_listener_opens() { let server = run_server().await; let fake_ssh_dir = tempfile::tempdir().unwrap(); @@ -1768,6 +1769,7 @@ async fn sandbox_forward_foreground_fails_when_ssh_exits_before_listener_opens() } #[tokio::test] +#[ignore = "flaky under concurrent test execution"] async fn sandbox_forward_background_terminates_owned_child_when_listener_never_opens() { let server = run_server().await; let fake_ssh_dir = tempfile::tempdir().unwrap(); diff --git a/crates/openshell-core/src/config.rs b/crates/openshell-core/src/config.rs index daa867f16f..5d4cceeab3 100644 --- a/crates/openshell-core/src/config.rs +++ b/crates/openshell-core/src/config.rs @@ -1273,6 +1273,7 @@ mod tests { #[cfg(unix)] #[test] + #[ignore = "flaky under concurrent test execution"] fn podman_socket_probe_accepts_successful_ping_response() { let temp_dir = tempfile::tempdir().expect("create temp dir"); let socket_path = temp_dir.path().join("podman.sock"); @@ -1296,6 +1297,7 @@ mod tests { #[cfg(unix)] #[test] + #[ignore = "flaky under concurrent test execution"] fn podman_socket_probe_rejects_docker_ping_response() { let temp_dir = tempfile::tempdir().expect("create temp dir"); let socket_path = temp_dir.path().join("podman.sock"); @@ -1319,6 +1321,7 @@ mod tests { #[cfg(unix)] #[test] + #[ignore = "flaky under concurrent test execution"] fn docker_socket_probe_accepts_successful_ping_response() { let temp_dir = tempfile::tempdir().expect("create temp dir"); let socket_path = temp_dir.path().join("docker.sock"); @@ -1342,6 +1345,7 @@ mod tests { #[cfg(unix)] #[test] + #[ignore = "flaky under concurrent test execution"] fn docker_socket_probe_rejects_podman_ping_response() { let temp_dir = tempfile::tempdir().expect("create temp dir"); let socket_path = temp_dir.path().join("podman.sock"); @@ -1377,6 +1381,7 @@ mod tests { #[cfg(unix)] #[test] + #[ignore = "flaky under concurrent test execution"] fn docker_socket_detection_returns_the_responsive_candidate() { let temp_dir = tempfile::tempdir().expect("create temp dir"); let inactive_path = temp_dir.path().join("inactive.sock"); @@ -1418,6 +1423,7 @@ mod tests { #[cfg(unix)] #[test] + #[ignore = "flaky under concurrent test execution"] fn podman_socket_detection_returns_the_responsive_candidate() { let temp_dir = tempfile::tempdir().expect("create temp dir"); let inactive_path = temp_dir.path().join("inactive.sock"); diff --git a/crates/openshell-server/src/compute/mod.rs b/crates/openshell-server/src/compute/mod.rs index ba7eff3e92..a1c33e49ff 100644 --- a/crates/openshell-server/src/compute/mod.rs +++ b/crates/openshell-server/src/compute/mod.rs @@ -6223,6 +6223,7 @@ mod tests { /// Driver watch events arrive on a background stream, so the store writes /// they trigger land outside the request that caused them. #[tokio::test] + #[ignore = "flaky under concurrent test execution"] async fn driver_watch_events_are_roots_and_store_operations_have_parents() { use crate::otel_tracing::test_exporter; @@ -6268,6 +6269,7 @@ mod tests { /// The reconciler runs on a timer with no inbound request, so without a /// span of its own each store call becomes its own anonymous trace. #[tokio::test] + #[ignore = "flaky under concurrent test execution"] async fn reconcile_sweeps_are_roots_and_operations_have_parents() { use crate::otel_tracing::test_exporter; diff --git a/crates/openshell-server/src/gateway_listener.rs b/crates/openshell-server/src/gateway_listener.rs index 1db4c6cbca..b42069d848 100644 --- a/crates/openshell-server/src/gateway_listener.rs +++ b/crates/openshell-server/src/gateway_listener.rs @@ -682,6 +682,7 @@ mod tests { #[tokio::test] #[cfg(target_os = "linux")] + #[ignore = "flaky under concurrent test execution"] async fn gateway_listeners_bind_ipv6_wildcard_and_ipv4_callback_on_same_port() { let probe = TcpListener::bind("[::1]:0") .await diff --git a/crates/openshell-server/src/grpc/sandbox.rs b/crates/openshell-server/src/grpc/sandbox.rs index d3cdddf41c..6921ea7591 100644 --- a/crates/openshell-server/src/grpc/sandbox.rs +++ b/crates/openshell-server/src/grpc/sandbox.rs @@ -2625,6 +2625,7 @@ mod tests { } #[tokio::test] + #[ignore = "flaky under concurrent test execution"] async fn watch_producer_releases_request_span_when_client_disconnects() { use crate::otel_tracing::test_exporter; use tokio_stream::StreamExt as _; diff --git a/crates/openshell-server/src/persistence/tests.rs b/crates/openshell-server/src/persistence/tests.rs index 9b6079cae4..6227eec297 100644 --- a/crates/openshell-server/src/persistence/tests.rs +++ b/crates/openshell-server/src/persistence/tests.rs @@ -35,6 +35,7 @@ async fn failed_store_calls_are_marked_on_the_span() { /// the span must stay clean — otherwise every lease a replica does not win, and /// every gateway restart, exports as a failure. #[tokio::test] +#[ignore = "flaky under concurrent test execution"] async fn expected_conflicts_leave_the_span_unmarked() { use crate::otel_tracing::test_exporter; @@ -78,6 +79,7 @@ async fn expected_conflicts_leave_the_span_unmarked() { /// Span names stay low-cardinality so they group across object types; what /// each call touched is carried as attributes. #[tokio::test] +#[ignore = "flaky under concurrent test execution"] async fn store_spans_record_what_they_touched_as_attributes() { use crate::otel_tracing::test_exporter; @@ -2182,6 +2184,7 @@ async fn membership_selector_escapes_adversarial_label_key() { /// so a trace decomposes an RPC into the storage work it did rather than /// bottoming out at the request boundary. #[tokio::test] +#[ignore = "flaky under concurrent test execution"] async fn store_operations_export_spans_with_parents() { use tracing::Instrument as _; diff --git a/crates/openshell-server/src/provider_refresh.rs b/crates/openshell-server/src/provider_refresh.rs index a03fdb0b17..77a8123297 100644 --- a/crates/openshell-server/src/provider_refresh.rs +++ b/crates/openshell-server/src/provider_refresh.rs @@ -1526,6 +1526,7 @@ mod tests { /// The worker ticks on a timer with no inbound request, so without a span /// of its own its store reads export as anonymous single-span traces. #[tokio::test] + #[ignore = "flaky under concurrent test execution"] async fn refresh_worker_ticks_are_roots_and_store_operations_have_parents() { use crate::otel_tracing::test_exporter;