[INFO] fetching crate reinhardt-websockets 0.1.0-rc.15... [INFO] testing reinhardt-websockets-0.1.0-rc.15 against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210-2 [INFO] extracting crate reinhardt-websockets 0.1.0-rc.15 into /workspace/builds/worker-4-tc2/source [INFO] started tweaking crates.io crate reinhardt-websockets 0.1.0-rc.15 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate reinhardt-websockets 0.1.0-rc.15 [INFO] tweaked toml for crates.io crate reinhardt-websockets 0.1.0-rc.15 written to /workspace/builds/worker-4-tc2/source/Cargo.toml [INFO] validating manifest of crates.io crate reinhardt-websockets 0.1.0-rc.15 on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate reinhardt-websockets 0.1.0-rc.15 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] b57595e84ac21d8d9363df155b0fe4e85816b80391a68ed2ce7c0c12b50bab64 [INFO] running `Command { std: "docker" "start" "-a" "b57595e84ac21d8d9363df155b0fe4e85816b80391a68ed2ce7c0c12b50bab64", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b57595e84ac21d8d9363df155b0fe4e85816b80391a68ed2ce7c0c12b50bab64", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b57595e84ac21d8d9363df155b0fe4e85816b80391a68ed2ce7c0c12b50bab64", kill_on_drop: false }` [INFO] [stdout] b57595e84ac21d8d9363df155b0fe4e85816b80391a68ed2ce7c0c12b50bab64 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c9f3fc384ed00167ef364ee7ab47810975f827e0235ff209fa5f22513e4e9719 [INFO] running `Command { std: "docker" "start" "-a" "c9f3fc384ed00167ef364ee7ab47810975f827e0235ff209fa5f22513e4e9719", kill_on_drop: false }` [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling tokio-macros v2.6.1 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling tungstenite v0.28.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling tokio-tungstenite v0.28.0 [INFO] [stderr] Compiling reinhardt-websockets v0.1.0-rc.15 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.67s [INFO] running `Command { std: "docker" "inspect" "c9f3fc384ed00167ef364ee7ab47810975f827e0235ff209fa5f22513e4e9719", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c9f3fc384ed00167ef364ee7ab47810975f827e0235ff209fa5f22513e4e9719", kill_on_drop: false }` [INFO] [stdout] c9f3fc384ed00167ef364ee7ab47810975f827e0235ff209fa5f22513e4e9719 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 1dea05891cdf51a0377e7acbe6f533c2125af142ca61f8ce11708966a9429d71 [INFO] running `Command { std: "docker" "start" "-a" "1dea05891cdf51a0377e7acbe6f533c2125af142ca61f8ce11708966a9429d71", kill_on_drop: false }` [INFO] [stderr] Compiling winnow v1.0.0 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling toml_datetime v1.1.0+spec-1.1.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling rstest_macros v0.26.1 [INFO] [stderr] Compiling tungstenite v0.28.0 [INFO] [stderr] Compiling serde_spanned v1.1.0 [INFO] [stderr] Compiling relative-path v1.9.3 [INFO] [stderr] Compiling glob v0.3.3 [INFO] [stderr] Compiling toml_writer v1.1.0+spec-1.1.0 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling console v0.16.3 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling toml_parser v1.1.0+spec-1.1.0 [INFO] [stderr] Compiling toml_edit v0.25.8+spec-1.1.0 [INFO] [stderr] Compiling proc-macro-crate v3.5.0 [INFO] [stderr] Compiling insta v1.47.1 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling tokio-tungstenite v0.28.0 [INFO] [stderr] Compiling reinhardt-websockets v0.1.0-rc.15 (/opt/rustwide/workdir) [INFO] [stderr] Compiling tokio-test v0.4.5 [INFO] [stderr] Compiling rstest v0.26.1 [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 18.27s [INFO] running `Command { std: "docker" "inspect" "1dea05891cdf51a0377e7acbe6f533c2125af142ca61f8ce11708966a9429d71", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1dea05891cdf51a0377e7acbe6f533c2125af142ca61f8ce11708966a9429d71", kill_on_drop: false }` [INFO] [stdout] 1dea05891cdf51a0377e7acbe6f533c2125af142ca61f8ce11708966a9429d71 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 0336fd81118dfbef8a375f6cff112731d81343ee030e073ffc042240704fb8a0 [INFO] running `Command { std: "docker" "start" "-a" "0336fd81118dfbef8a375f6cff112731d81343ee030e073ffc042240704fb8a0", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.31s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/reinhardt_websockets-9ec8a96f6179bc15) [INFO] [stdout] [INFO] [stdout] running 240 tests [INFO] [stdout] test auth::tests::test_token_authenticator_invalid ... ok [INFO] [stdout] test auth::tests::test_authenticated_connection_send_with_auth ... ok [INFO] [stdout] test channels::tests::test_channel_layer_wrapper ... ok [INFO] [stdout] test auth::tests::test_simple_auth_user ... ok [INFO] [stdout] test channels::tests::test_channel_message_creation ... ok [INFO] [stdout] test auth::tests::test_authenticated_connection_send_with_auth_denied ... ok [INFO] [stdout] test auth::tests::test_permission_based_policy_authorized ... ok [INFO] [stdout] test auth::tests::test_token_authenticator_valid ... ok [INFO] [stdout] test channels::tests::test_channel_message_metadata ... ok [INFO] [stdout] test auth::tests::test_permission_based_policy_denied ... ok [INFO] [stdout] test channels::tests::test_in_memory_channel_layer_group_add ... ok [INFO] [stdout] test channels::tests::test_in_memory_channel_layer_group_discard ... ok [INFO] [stdout] test channels::tests::test_in_memory_channel_layer_send_receive ... ok [INFO] [stdout] test connection::tests::test_close_marks_closed_even_when_channel_dropped ... ok [INFO] [stdout] test connection::tests::test_connection_config_builder ... ok [INFO] [stdout] test connection::tests::test_connection_config_default ... ok [INFO] [stdout] test connection::tests::test_close_with_reason_marks_closed_even_when_channel_dropped ... ok [INFO] [stdout] test connection::tests::test_connection_config_has_default_ping_config ... ok [INFO] [stdout] test connection::tests::test_connection_config_with_custom_ping_config ... ok [INFO] [stdout] test connection::tests::test_connection_send ... ok [INFO] [stdout] test connection::tests::test_connection_with_config ... ok [INFO] [stdout] test connection::tests::test_connection_config_permissive ... ok [INFO] [stdout] test connection::tests::test_force_close_marks_connection_closed ... ok [INFO] [stdout] test connection::tests::test_heartbeat_config_custom ... ok [INFO] [stdout] test connection::tests::test_heartbeat_monitor_initial_state ... ok [INFO] [stdout] test connection::tests::test_connection_config_no_timeout ... ok [INFO] [stdout] test connection::tests::test_connection_config_strict ... ok [INFO] [stdout] test connection::tests::test_heartbeat_config_default ... ok [INFO] [stdout] test connection::tests::test_close_with_reason ... ok [INFO] [stdout] test channels::tests::test_in_memory_channel_layer_clear ... ok [INFO] [stdout] test channels::tests::test_in_memory_channel_layer_group_send ... ok [INFO] [stdout] test connection::tests::test_heartbeat_monitor_send_ping ... ok [INFO] [stdout] test connection::tests::test_message_json ... ok [INFO] [stdout] test connection::tests::test_message_text ... ok [INFO] [stdout] test connection::tests::test_ping_pong_config_default ... ok [INFO] [stdout] test connection::tests::test_strict_config_has_aggressive_ping ... ok [INFO] [stdout] test connection::tests::test_send_after_force_close_returns_error ... ok [INFO] [stdout] test connection::tests::test_permissive_config_has_relaxed_ping ... ok [INFO] [stdout] test connection::tests::test_ping_pong_config_builder ... ok [INFO] [stdout] test connection::tests::test_timeout_monitor_register_and_count ... ok [INFO] [stdout] test connection::tests::test_websocket_error_slow_consumer_variant ... ok [INFO] [stdout] test connection::tests::test_websocket_error_binary_payload_variant ... ok [INFO] [stdout] test consumers::tests::test_broadcast_consumer_disconnect_cleanup ... ok [INFO] [stdout] test connection::tests::test_timeout_monitor_rejects_when_max_connections_reached ... ok [INFO] [stdout] test connection::tests::test_websocket_error_heartbeat_timeout_variant ... ok [INFO] [stdout] test connection::tests::test_timeout_monitor_removes_already_closed_connections ... ok [INFO] [stdout] test consumers::tests::test_consumer_context_cookie_header_missing ... ok [INFO] [stdout] test connection::tests::test_timeout_monitor_unregister ... ok [INFO] [stdout] test consumers::tests::test_consumer_context_creation ... ok [INFO] [stdout] test consumers::tests::test_consumer_context_headers ... ok [INFO] [stdout] test consumers::tests::test_consumer_context_headers_default_empty ... ok [INFO] [stdout] test consumers::tests::test_consumer_context_metadata ... ok [INFO] [stdout] test consumers::tests::test_consumer_context_cookie_header ... ok [INFO] [stdout] test consumers::tests::test_echo_consumer_binary_non_utf8_message ... ok [INFO] [stdout] test consumers::tests::test_consumer_chain ... ok [INFO] [stdout] test consumers::tests::test_echo_consumer_connect ... ok [INFO] [stdout] test consumers::tests::test_echo_consumer_binary_utf8_message ... ok [INFO] [stdout] test consumers::tests::test_broadcast_consumer_disconnect_tolerates_already_removed ... ok [INFO] [stdout] test consumers::tests::test_echo_consumer_handles_close_message ... ok [INFO] [stdout] test consumers::tests::test_json_consumer_binary_invalid_utf8_returns_error ... ok [INFO] [stdout] test consumers::tests::test_json_consumer_binary_valid_json ... ok [INFO] [stdout] test consumers::tests::test_json_consumer_connect ... ok [INFO] [stdout] test consumers::tests::test_json_consumer_binary_invalid_json_returns_error ... ok [INFO] [stdout] test connection::tests::test_ping_pong_config_custom ... ok [INFO] [stdout] test metrics::tests::test_disconnection_does_not_underflow ... ok [INFO] [stdout] test metrics::tests::test_record_bytes ... ok [INFO] [stdout] test consumers::tests::test_echo_consumer_message ... ok [INFO] [stdout] test metrics::tests::test_bytes_sent_saturates_instead_of_wrapping ... ok [INFO] [stdout] test metrics::tests::test_metrics_creation ... ok [INFO] [stdout] test metrics::tests::test_record_error ... ok [INFO] [stdout] test metrics::tests::test_record_messages ... ok [INFO] [stdout] test metrics::tests::test_snapshot_summary ... ok [INFO] [stdout] test metrics::tests::test_record_disconnection ... ok [INFO] [stdout] test middleware::tests::test_ip_filter_blacklist_allowed ... ok [INFO] [stdout] test middleware::tests::test_connection_context ... ok [INFO] [stdout] test middleware::tests::test_ip_filter_whitelist_blocked ... ok [INFO] [stdout] test middleware::tests::test_logging_middleware_connect ... ok [INFO] [stdout] test middleware::tests::test_logging_middleware_message ... ok [INFO] [stdout] test middleware::tests::test_message_size_limit_custom_configuration ... ok [INFO] [stdout] test middleware::tests::test_message_size_limit_binary_messages ... ok [INFO] [stdout] test middleware::tests::test_message_size_limit_control_frames_always_pass ... ok [INFO] [stdout] test middleware::tests::test_message_size_limit_default_is_1mb ... ok [INFO] [stdout] test middleware::tests::test_message_size_limit_default_accepts_normal_messages ... ok [INFO] [stdout] test middleware::tests::test_message_size_limit_exceeds_limit ... ok [INFO] [stdout] test connection::tests::test_heartbeat_monitor_record_pong_resets_timer ... ok [INFO] [stdout] test metrics::tests::test_record_connection ... ok [INFO] [stdout] test metrics::tests::test_reset ... ok [INFO] [stdout] test middleware::tests::test_ip_filter_whitelist_allowed ... ok [INFO] [stdout] test middleware::tests::test_message_size_limit_sends_close_frame_on_rejection ... ok [INFO] [stdout] test middleware::tests::test_middleware_chain_message ... ok [INFO] [stdout] test middleware::tests::test_middleware_chain_connect ... ok [INFO] [stdout] test middleware::tests::test_message_size_limit_within_limit ... ok [INFO] [stdout] test connection::tests::test_heartbeat_monitor_no_timeout_when_pong_received ... ok [INFO] [stdout] test middleware::tests::test_message_size_limit_default_rejects_oversized_messages ... ok [INFO] [stdout] test middleware::tests::test_ip_filter_blacklist_blocked ... ok [INFO] [stdout] test middleware::tests::test_middleware_chain_rejection ... ok [INFO] [stdout] test middleware::tests::test_middleware_chain_with_default_size_limit ... ok [INFO] [stdout] test origin::tests::test_allow_all_policy_accepts_any_origin ... ok [INFO] [stdout] test origin::tests::test_allows_missing_origin_when_configured ... ok [INFO] [stdout] test origin::tests::test_allow_list_rejects_invalid_origin ... ok [INFO] [stdout] test origin::tests::test_multiple_allowed_origins ... ok [INFO] [stdout] test origin::tests::test_on_disconnect_always_succeeds ... ok [INFO] [stdout] test origin::tests::test_rejects_missing_origin_by_default ... ok [INFO] [stdout] test origin::tests::test_empty_origin_header_rejected_when_required ... ok [INFO] [stdout] test origin::tests::test_case_insensitive_origin_comparison ... ok [INFO] [stdout] test origin::tests::test_allow_list_accepts_valid_origin ... ok [INFO] [stdout] test origin::tests::test_empty_allow_list_rejects_all_origins ... ok [INFO] [stdout] test origin::tests::test_validate_origin_function_invalid ... ok [INFO] [stdout] test origin::tests::test_validate_origin_function_missing_allowed ... ok [INFO] [stdout] test protocol::tests::test_custom_limits ... ok [INFO] [stdout] test protocol::tests::test_default_constants ... ok [INFO] [stdout] test protocol::tests::test_default_websocket_config_has_frame_size_limit ... ok [INFO] [stdout] test origin::tests::test_trailing_slash_normalization ... ok [INFO] [stdout] test protocol::tests::test_default_websocket_config_has_message_size_limit ... ok [INFO] [stdout] test protocol::tests::test_no_limits ... ok [INFO] [stdout] test reconnection::tests::test_auto_reconnect_handler_exhausted ... ok [INFO] [stdout] test origin::tests::test_validate_origin_function_valid ... ok [INFO] [stdout] test reconnection::tests::test_auto_reconnect_handler_on_connected_resets ... ok [INFO] [stdout] test reconnection::tests::test_auto_reconnect_handler_disabled ... ok [INFO] [stdout] test reconnection::tests::test_auto_reconnect_handler_exponential_backoff ... ok [INFO] [stdout] test reconnection::tests::test_auto_reconnect_handler_with_callback ... ok [INFO] [stdout] test reconnection::tests::test_config_builder ... ok [INFO] [stdout] test origin::tests::test_validate_origin_function_allow_all ... ok [INFO] [stdout] test reconnection::tests::test_auto_reconnect_handler_disconnect_and_reconnect ... ok [INFO] [stdout] test reconnection::tests::test_backoff_does_not_overflow_at_high_retry_counts ... ok [INFO] [stdout] test reconnection::tests::test_auto_reconnect_handler_new ... ok [INFO] [stdout] test reconnection::tests::test_default_config ... ok [INFO] [stdout] test reconnection::tests::test_exponential_backoff ... ok [INFO] [stdout] test reconnection::tests::test_jitter_applied ... ok [INFO] [stdout] test reconnection::tests::test_max_delay_cap ... ok [INFO] [stdout] test reconnection::tests::test_reconnection_state_variants ... ok [INFO] [stdout] test reconnection::tests::test_reconnection_strategy ... ok [INFO] [stdout] test reconnection::tests::test_reset ... ok [INFO] [stdout] test reconnection::tests::test_unlimited_attempts ... ok [INFO] [stdout] test origin::tests::test_validate_origin_function_missing_rejected ... ok [INFO] [stdout] test room::tests::test_broadcast_empty_room ... ok [INFO] [stdout] test room::tests::test_broadcast_complete_failure ... ok [INFO] [stdout] test room::tests::test_broadcast_partial_failure_removes_dead_connections ... ok [INFO] [stdout] test room::tests::test_broadcast_partial_failure_reports_failed_clients ... ok [INFO] [stdout] test room::tests::test_broadcast_to_all_aggregates_results ... ok [INFO] [stdout] test room::tests::test_broadcast_to_room_returns_broadcast_result ... ok [INFO] [stdout] test room::tests::test_broadcast_with_timeout_empty_room ... ok [INFO] [stdout] test reconnection::tests::test_strategy_config_accessor ... ok [INFO] [stdout] test room::tests::test_broadcast_with_timeout_removes_dead_connections ... ok [INFO] [stdout] test room::tests::test_broadcast_with_timeout_succeeds_for_responsive_clients ... ok [INFO] [stdout] test room::tests::test_room_broadcast ... ok [INFO] [stdout] test room::tests::test_room_client_ids ... ok [INFO] [stdout] test room::tests::test_broadcast_to_room_with_timeout_nonexistent_room ... ok [INFO] [stdout] test room::tests::test_broadcast_to_room_with_timeout ... ok [INFO] [stdout] test room::tests::test_room_join_client ... ok [INFO] [stdout] test room::tests::test_room_leave_nonexistent_client ... ok [INFO] [stdout] test room::tests::test_room_is_empty ... ok [INFO] [stdout] test room::tests::test_room_join_duplicate_client ... ok [INFO] [stdout] test room::tests::test_room_manager_create_room ... ok [INFO] [stdout] test room::tests::test_room_manager_delete_nonexistent_room ... ok [INFO] [stdout] test room::tests::test_room_manager_delete_room ... ok [INFO] [stdout] test room::tests::test_room_manager_get_or_create_room ... ok [INFO] [stdout] test room::tests::test_room_leave_client ... ok [INFO] [stdout] test room::tests::test_room_manager_get_room ... ok [INFO] [stdout] test room::tests::test_room_manager_cleanup_empty_rooms ... ok [INFO] [stdout] test room::tests::test_room_manager_new ... ok [INFO] [stdout] test room::tests::test_room_manager_room_ids ... ok [INFO] [stdout] test room::tests::test_room_manager_has_room ... ok [INFO] [stdout] test room::tests::test_room_metadata_clear ... ok [INFO] [stdout] test room::tests::test_room_metadata_set_and_get ... ok [INFO] [stdout] test room::tests::test_room_send_to_nonexistent_client ... ok [INFO] [stdout] test room::tests::test_room_new ... ok [INFO] [stdout] test room::tests::test_room_metadata_get_nonexistent ... ok [INFO] [stdout] test room::tests::test_room_metadata_remove ... ok [INFO] [stdout] test room::tests::test_room_send_to_specific_client ... ok [INFO] [stdout] test routing::tests::test_reverse_websocket_url ... ok [INFO] [stdout] test routing::tests::test_global_router_registration ... ok [INFO] [stdout] test routing::tests::test_router_all_routes ... ok [INFO] [stdout] test routing::tests::test_router_clear ... ok [INFO] [stdout] test routing::tests::test_router_find_route_by_name ... ok [INFO] [stdout] test routing::tests::test_router_find_route ... ok [INFO] [stdout] test routing::tests::test_router_has_route ... ok [INFO] [stdout] test routing::tests::test_router_register_route ... ok [INFO] [stdout] test routing::tests::test_router_remove_route ... ok [INFO] [stdout] test routing::tests::test_websocket_route_creation ... ok [INFO] [stdout] test routing::tests::test_websocket_route_metadata ... ok [INFO] [stdout] test tests::test_basic_websocket_communication ... ok [INFO] [stdout] test tests::test_broadcast_to_all_rooms ... ok [INFO] [stdout] test tests::test_get_all_rooms ... ok [INFO] [stdout] test tests::test_websocket_dependency_after_yield ... ok [INFO] [stdout] test tests::test_websocket_close_with_reason ... ok [INFO] [stdout] test routing::tests::test_router_register_duplicate_route ... ok [INFO] [stdout] test tests::test_websocket_binary_messages ... ok [INFO] [stdout] test tests::test_websocket_dependency_after_yield_broken ... ok [INFO] [stdout] test tests::test_websocket_invalid_data ... ok [INFO] [stdout] test tests::test_websocket_handle_disconnection ... ok [INFO] [stdout] test tests::test_websocket_multiple_clients_with_room ... ok [INFO] [stdout] test tests::test_websocket_json_messages ... ok [INFO] [stdout] test tests::test_websocket_no_credentials ... ok [INFO] [stdout] test tests::test_websocket_ping_pong ... ok [INFO] [stdout] test connection::tests::test_heartbeat_monitor_timeout_closes_connection ... ok [INFO] [stdout] test tests::test_websocket_with_query_token ... ok [INFO] [stdout] test tests::test_websocket_with_cookie_auth ... ok [INFO] [stdout] test tests::test_websocket_with_token_and_query ... ok [INFO] [stdout] test throttling::tests::test_connection_rate_limiter_accessors ... ok [INFO] [stdout] test throttling::tests::test_combined_throttler ... ok [INFO] [stdout] test throttling::tests::test_connection_rate_limiter_clear_all ... ok [INFO] [stdout] test throttling::tests::test_connection_rate_limiter_exceeds_limit ... ok [INFO] [stdout] test throttling::tests::test_connection_rate_limiter_get_current_count ... ok [INFO] [stdout] test throttling::tests::test_connection_rate_limiter_independent_ips ... ok [INFO] [stdout] test throttling::tests::test_connection_rate_limiter_within_limit ... ok [INFO] [stdout] test throttling::tests::test_connection_throttler_exceeds_limit ... ok [INFO] [stdout] test throttling::tests::test_connection_throttler_independent_ips ... ok [INFO] [stdout] test throttling::tests::test_connection_throttler_get_count ... ok [INFO] [stdout] test connection::tests::test_heartbeat_monitor_early_pong_skips_full_sleep ... ok [INFO] [stdout] test throttling::tests::test_connection_throttler_within_limit ... ok [INFO] [stdout] test throttling::tests::test_connection_throttler_release ... ok [INFO] [stdout] test throttling::tests::test_rate_limit_config_new ... ok [INFO] [stdout] test throttling::tests::test_rate_limit_config_presets ... ok [INFO] [stdout] test throttling::tests::test_rate_limit_middleware_accessors ... ok [INFO] [stdout] test throttling::tests::test_rate_limit_middleware_allows_connection ... ok [INFO] [stdout] test throttling::tests::test_rate_limit_middleware_allows_message_within_limit ... ok [INFO] [stdout] test throttling::tests::test_rate_limit_middleware_in_chain ... ok [INFO] [stdout] test throttling::tests::test_rate_limit_middleware_message_in_chain ... ok [INFO] [stdout] test throttling::tests::test_rate_limit_middleware_rejects_concurrent_exceeded ... ok [INFO] [stdout] test throttling::tests::test_rate_limit_middleware_rejects_message_rate_exceeded ... ok [INFO] [stdout] test throttling::tests::test_rate_limit_middleware_rejects_connection_rate_exceeded ... ok [INFO] [stdout] test throttling::tests::test_rate_limiter_exceeds_limit ... ok [INFO] [stdout] test throttling::tests::test_rate_limiter_get_count ... ok [INFO] [stdout] test throttling::tests::test_rate_limit_middleware_with_defaults ... ok [INFO] [stdout] test connection::tests::test_send_resets_activity ... ok [INFO] [stdout] test throttling::tests::test_rate_limiter_independent_clients ... ok [INFO] [stdout] test throttling::tests::test_rate_limiter_reset ... ok [INFO] [stdout] test throttling::tests::test_rate_limiter_within_limit ... ok [INFO] [stdout] test throttling::tests::test_websocket_rate_limit_config_builder ... ok [INFO] [stdout] test throttling::tests::test_websocket_rate_limit_config_permissive ... ok [INFO] [stdout] test throttling::tests::test_websocket_rate_limit_config_default ... ok [INFO] [stdout] test throttling::tests::test_websocket_rate_limit_config_strict ... ok [INFO] [stdout] test throttling::tests::test_rate_limit_middleware_release_connection ... ok [INFO] [stdout] test throttling::tests::test_rate_limit_middleware_on_disconnect_releases_slot ... ok [INFO] [stdout] test connection::tests::test_connection_record_activity_resets_idle ... ok [INFO] [stdout] test connection::tests::test_connection_becomes_idle_after_timeout ... ok [INFO] [stdout] test connection::tests::test_timeout_monitor_closes_idle_connections ... ok [INFO] [stdout] test throttling::tests::test_connection_rate_limiter_window_expiry ... ok [INFO] [stdout] test connection::tests::test_timeout_monitor_background_task ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 240 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s [INFO] [stdout] [INFO] [stderr] Running tests/auth_integration.rs (/opt/rustwide/target/debug/deps/auth_integration-b61dddc8b825f91b) [INFO] [stdout] [INFO] [stdout] running 15 tests [INFO] [stdout] test test_authenticated_connection_multiple_messages ... ok [INFO] [stdout] test test_authenticated_connection_send_with_auth_denied ... ok [INFO] [stdout] test test_authenticated_connection_send_with_auth_success ... ok [INFO] [stdout] test test_authorization_policy_authorized ... ok [INFO] [stdout] test test_authorization_policy_denied ... ok [INFO] [stdout] test test_authorization_policy_unknown_action ... ok [INFO] [stdout] test test_mock_authenticator_admin_token ... ok [INFO] [stdout] test test_mock_authenticator_invalid_token ... ok [INFO] [stdout] test test_token_authentication_invalid ... ok [INFO] [stdout] test test_multiple_permission_levels ... ok [INFO] [stdout] test test_token_authentication_valid ... ok [INFO] [stdout] test test_token_authentication_multiple_users ... ok [INFO] [stdout] test test_user_permission_checks ... ok [INFO] [stdout] test test_mock_authenticator_valid_token ... ok [INFO] [stderr] Running tests/connection_integration.rs (/opt/rustwide/target/debug/deps/connection_integration-dc8f658932233b2c) [INFO] [stdout] test test_unauthenticated_user ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test test_json_message_serialization ... ok [INFO] [stdout] test test_reinhardt_websocket_connection ... ok [INFO] [stdout] test test_connection_close ... ok [INFO] [stdout] test test_ping_pong_heartbeat ... ok [INFO] [stdout] test test_connection_establishment ... ok [INFO] [stdout] test test_binary_message_transmission ... ok [INFO] [stdout] test test_multiple_concurrent_clients ... ok [INFO] [stdout] test test_large_message_transmission ... ok [INFO] [stdout] test test_reconnection_after_drop ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s [INFO] [stdout] [INFO] [stderr] Doc-tests reinhardt_websockets [INFO] [stdout] [INFO] [stdout] running 141 tests [INFO] [stdout] test src/auth.rs - auth::AuthenticatedConnection (line 281) ... ok [INFO] [stdout] test src/auth.rs - auth::SimpleAuthUser (line 49) ... ok [INFO] [stdout] test src/channels.rs - channels::ChannelMessage (line 43) ... ok [INFO] [stdout] test src/connection.rs - connection::ConnectionConfig::new (line 176) ... ok [INFO] [stdout] test src/auth.rs - auth::TokenAuthenticator (line 126) ... ok [INFO] [stdout] test src/channels.rs - channels::InMemoryChannelLayer (line 116) ... ok [INFO] [stdout] test src/connection.rs - connection::ConnectionConfig::permissive (line 384) ... ok [INFO] [stdout] test src/auth.rs - auth::PermissionBasedPolicy (line 211) ... ok [INFO] [stdout] test src/channels.rs - channels::ChannelLayerWrapper (line 265) ... ok [INFO] [stdout] test src/connection.rs - connection::ConnectionConfig::with_idle_timeout (line 197) ... ok [INFO] [stdout] test src/connection.rs - connection::Message::binary (line 530) ... ok [INFO] [stdout] test src/connection.rs - connection::ConnectionConfig::strict (line 357) ... ok [INFO] [stdout] test src/connection.rs - connection::ConnectionConfig (line 135) ... ok [INFO] [stdout] test src/connection.rs - connection::ConnectionConfig::with_ping_config (line 304) ... ok [INFO] [stdout] test src/connection.rs - connection::Message::parse_json (line 580) ... ok [INFO] [stdout] test src/connection.rs - connection::ConnectionConfig::with_handshake_timeout (line 219) ... ok [INFO] [stdout] test src/connection.rs - connection::HeartbeatMonitor (line 1286) ... ok [INFO] [stdout] test src/connection.rs - connection::ConnectionConfig::with_max_connections (line 278) ... ok [INFO] [stdout] test src/connection.rs - connection::ConnectionTimeoutMonitor (line 1055) ... ok [INFO] [stdout] test src/connection.rs - connection::PingPongConfig::with_ping_interval (line 91) ... ok [INFO] [stdout] test src/connection.rs - connection::PingPongConfig (line 15) ... ok [INFO] [stdout] test src/connection.rs - connection::ConnectionConfig::no_timeout (line 332) ... ok [INFO] [stdout] test src/connection.rs - connection::ConnectionConfig::with_cleanup_interval (line 241) ... ok [INFO] [stdout] test src/connection.rs - connection::Message::json (line 547) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::is_idle (line 798) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::close_with_reason (line 973) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::idle_duration (line 777) ... ok [INFO] [stdout] test src/connection.rs - connection::HeartbeatConfig (line 1229) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::close (line 941) ... ok [INFO] [stdout] test src/connection.rs - connection::Message::text (line 514) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::send (line 820) ... ok [INFO] [stdout] test src/connection.rs - connection::PingPongConfig::with_pong_timeout (line 108) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::new (line 625) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::is_closed (line 1031) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::force_close (line 1011) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::send_binary (line 879) ... ok [INFO] [stdout] test src/connection.rs - connection::PingPongConfig::new (line 59) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::subprotocol (line 712) ... ok [INFO] [stdout] test src/lib.rs - (line 102) ... ignored [INFO] [stdout] test src/lib.rs - (line 121) ... ignored [INFO] [stdout] test src/handler.rs - handler::WebSocketHandler::reconnection_config (line 28) - compile ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::send_json (line 904) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::id (line 732) ... ok [INFO] [stdout] test src/lib.rs - (line 78) ... ok [INFO] [stdout] test src/consumers.rs - consumers::ConsumerContext::new (line 91) ... ok [INFO] [stdout] test src/lib.rs - consumers (line 167) - compile ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::with_config (line 648) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::send_text (line 855) ... ok [INFO] [stdout] test src/consumers.rs - consumers::ConsumerContext (line 61) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::with_subprotocol (line 680) ... ok [INFO] [stdout] test src/consumers.rs - consumers::ConsumerChain (line 605) ... ok [INFO] [stdout] test src/lib.rs - (line 54) ... ok [INFO] [stdout] test src/consumers.rs - consumers::JsonConsumer (line 492) ... ok [INFO] [stdout] test src/lib.rs - metrics (line 172) ... ok [INFO] [stdout] test src/consumers.rs - consumers::EchoConsumer (line 298) ... ok [INFO] [stdout] test src/consumers.rs - consumers::BroadcastConsumer (line 405) ... ok [INFO] [stdout] test src/middleware.rs - middleware::ConnectionContext::new (line 45) ... ok [INFO] [stdout] test src/metrics.rs - metrics::WebSocketMetrics::new (line 139) ... ok [INFO] [stdout] test src/middleware.rs - middleware::IpFilterMiddleware (line 202) ... ok [INFO] [stdout] test src/metrics.rs - metrics::PeriodicReporter::start (line 402) - compile ... ok [INFO] [stdout] test src/metrics.rs - metrics::WebSocketMetrics (line 111) ... ok [INFO] [stdout] test src/protocol.rs - protocol::default_websocket_config (line 19) ... ok [INFO] [stdout] test src/metrics.rs - metrics::MetricsSnapshot::summary (line 55) ... ok [INFO] [stdout] test src/lib.rs - reconnection (line 180) ... ok [INFO] [stdout] test src/middleware.rs - middleware::MessageSizeLimitMiddleware (line 291) ... ok [INFO] [stdout] test src/lib.rs - (line 20) ... ok [INFO] [stdout] test src/middleware.rs - middleware::LoggingMiddleware (line 123) ... ok [INFO] [stdout] test src/metrics.rs - metrics::PeriodicReporter (line 340) ... ok [INFO] [stdout] test src/middleware.rs - middleware::MiddlewareChain (line 375) ... ok [INFO] [stdout] test src/lib.rs - origin (line 177) ... ok [INFO] [stdout] test src/protocol.rs - protocol::websocket_config_with_limits (line 42) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::AutoReconnectHandler (line 408) ... ok [INFO] [stdout] test src/origin.rs - origin::OriginValidationMiddleware (line 82) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::ReconnectionConfig::with_initial_delay (line 162) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::ReconnectionConfig::with_max_delay (line 179) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::AutoReconnectHandler::on_reconnect_success (line 567) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::AutoReconnectHandler::on_disconnect (line 508) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::AutoReconnectHandler::on_connected (line 603) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::ReconnectionStrategy::new (line 237) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::ReconnectionConfig::new (line 103) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::ReconnectionStrategy::reset (line 353) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::ReconnectionStrategy::can_reconnect (line 374) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::ReconnectionConfig::default (line 76) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::ReconnectionConfig::with_unlimited_attempts (line 146) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::ReconnectionConfig::with_backoff_multiplier (line 196) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::ReconnectionConfig::with_max_attempts (line 130) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::AutoReconnectHandler::disabled (line 452) ... ok [INFO] [stdout] test src/metrics.rs - metrics::PeriodicReporter::new (line 376) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::ReconnectionConfig::with_jitter_factor (line 212) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::ReconnectionStrategy::attempt_count (line 257) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::AutoReconnectHandler::new (line 433) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::ReconnectionStrategy::next_delay (line 276) ... ok [INFO] [stdout] test src/room.rs - room::Room (line 83) ... ok [INFO] [stdout] test src/room.rs - room::Room::client_count (line 381) ... ok [INFO] [stdout] test src/room.rs - room::Room::broadcast (line 212) ... ok [INFO] [stdout] test src/reconnection.rs - reconnection::AutoReconnectHandler::state (line 487) ... ok [INFO] [stdout] test src/room.rs - room::Room::client_ids (line 412) ... ok [INFO] [stdout] test src/room.rs - room::Room::clear_metadata (line 556) ... ok [INFO] [stdout] test src/room.rs - room::Room::has_client (line 445) ... ok [INFO] [stdout] test src/room.rs - room::Room::leave (line 176) ... ok [INFO] [stdout] test src/room.rs - room::Room::broadcast_with_timeout (line 276) ... ok [INFO] [stdout] test src/room.rs - room::Room::is_empty (line 581) ... ok [INFO] [stdout] test src/room.rs - room::Room::id (line 128) ... ok [INFO] [stdout] test src/room.rs - room::Room::new (line 110) ... ok [INFO] [stdout] test src/room.rs - room::Room::get_metadata (line 500) ... ok [INFO] [stdout] test src/room.rs - room::Room::join (line 142) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::broadcast_to_all (line 1040) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::broadcast_to_room (line 953) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::broadcast_to_room_with_timeout (line 995) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager (line 608) ... ok [INFO] [stdout] test src/room.rs - room::Room::remove_metadata (line 533) ... ok [INFO] [stdout] test src/room.rs - room::Room::set_metadata (line 472) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::cleanup_empty_rooms (line 813) ... ok [INFO] [stdout] test src/room.rs - room::Room::send_to (line 339) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::create_room (line 646) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::get_room (line 668) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::get_room_size (line 920) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::get_or_create_room (line 692) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::delete_room (line 720) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::get_all_rooms (line 1084) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::join_room (line 856) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::has_room (line 793) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::room_count (line 747) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::leave_room (line 890) ... ok [INFO] [stdout] test src/connection.rs - connection::ConnectionTimeoutMonitor::start (line 1192) ... ok [INFO] [stdout] test src/routing.rs - routing::WebSocketRoute (line 34) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::room_ids (line 769) ... ok [INFO] [stdout] test src/routing.rs - routing::WebSocketRouter (line 93) ... ok [INFO] [stdout] test src/room.rs - room::RoomManager::new (line 628) ... ok [INFO] [stdout] test src/routing.rs - routing::reverse_websocket_url (line 260) ... ok [INFO] [stdout] test src/throttling.rs - throttling::CombinedThrottler (line 319) ... ok [INFO] [stdout] test src/throttling.rs - throttling::RateLimitConfig::permissive (line 94) ... ok [INFO] [stdout] test src/throttling.rs - throttling::RateLimitMiddleware (line 653) ... ok [INFO] [stdout] test src/routing.rs - routing::register_websocket_router (line 231) ... ok [INFO] [stdout] test src/throttling.rs - throttling::RateLimitConfig::strict (line 108) ... ok [INFO] [stdout] test src/throttling.rs - throttling::WebSocketRateLimitConfig (line 501) ... ok [INFO] [stdout] test src/throttling.rs - throttling::RateLimitConfig (line 52) ... ok [INFO] [stdout] test src/throttling.rs - throttling::ConnectionThrottler (line 237) ... ok [INFO] [stdout] test src/throttling.rs - throttling::RateLimiter (line 163) ... ok [INFO] [stdout] test src/throttling.rs - throttling::ConnectionRateLimiter (line 385) ... ok [INFO] [stdout] test src/connection.rs - connection::WebSocketConnection::record_activity (line 757) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 139 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.11s [INFO] [stdout] [INFO] [stdout] all doctests ran in 5.81s; merged doctests compilation took 5.67s [INFO] running `Command { std: "docker" "inspect" "0336fd81118dfbef8a375f6cff112731d81343ee030e073ffc042240704fb8a0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0336fd81118dfbef8a375f6cff112731d81343ee030e073ffc042240704fb8a0", kill_on_drop: false }` [INFO] [stdout] 0336fd81118dfbef8a375f6cff112731d81343ee030e073ffc042240704fb8a0