[INFO] fetching crate r2e-rate-limit 0.4.0...
[INFO] testing r2e-rate-limit-0.4.0 against 1.99.0-beta.8 for beta-1.100-2
[INFO] extracting crate r2e-rate-limit 0.4.0 into /workspace/builds/worker-6-tc1/source
[INFO] started tweaking crates.io crate r2e-rate-limit 0.4.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate r2e-rate-limit 0.4.0
[INFO] tweaked toml for crates.io crate r2e-rate-limit 0.4.0 written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate r2e-rate-limit 0.4.0 on toolchain 1.99.0-beta.8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate r2e-rate-limit 0.4.0 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" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded cron v0.17.0
[INFO] [stderr]   Downloaded r2e-rt v0.4.0
[INFO] [stderr]   Downloaded garde_derive v0.23.0
[INFO] [stderr]   Downloaded r2e-macros v0.4.0
[INFO] [stderr]   Downloaded r2e-http v0.4.0
[INFO] [stderr]   Downloaded garde v0.23.0
[INFO] [stderr]   Downloaded tower-http v0.7.0
[INFO] [stderr]   Downloaded r2e-core v0.4.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 1b68f9064687e436a1f4c5e44f0ba6fba0251ac771728f97a7e2eb8dca037ec9
[INFO] running `Command { std: "docker" "start" "1b68f9064687e436a1f4c5e44f0ba6fba0251ac771728f97a7e2eb8dca037ec9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1b68f9064687e436a1f4c5e44f0ba6fba0251ac771728f97a7e2eb8dca037ec9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1b68f9064687e436a1f4c5e44f0ba6fba0251ac771728f97a7e2eb8dca037ec9" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1b68f9064687e436a1f4c5e44f0ba6fba0251ac771728f97a7e2eb8dca037ec9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1b68f9064687e436a1f4c5e44f0ba6fba0251ac771728f97a7e2eb8dca037ec9" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling bytes v1.12.0
[INFO] [stderr]    Compiling log v0.4.33
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling siphasher v1.0.3
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling mio v1.2.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling winnow v1.0.3
[INFO] [stderr]    Compiling memchr v2.8.2
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling compact_str v0.9.1
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling nu-ansi-term v0.50.3
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling uuid v1.23.4
[INFO] [stderr]    Compiling dashmap v6.2.1
[INFO] [stderr]    Compiling arc-swap v1.9.2
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling http v1.4.2
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling regex-automata v0.4.14
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling toml_edit v0.25.12+spec-1.1.0
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]    Compiling regex v1.12.4
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]    Compiling garde_derive v0.23.0
[INFO] [stderr]    Compiling tokio v1.52.3
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling garde v0.23.0
[INFO] [stderr]    Compiling cron v0.17.0
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling axum-core v0.5.6
[INFO] [stderr]    Compiling r2e-macros v0.4.0
[INFO] [stderr]    Compiling tower-http v0.7.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling tracing-subscriber v0.3.23
[INFO] [stderr]    Compiling hyper v1.10.1
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling r2e-rt v0.4.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.8.9
[INFO] [stderr]    Compiling r2e-http v0.4.0
[INFO] [stderr]    Compiling r2e-core v0.4.0
[INFO] [stderr]    Compiling r2e-rate-limit v0.4.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 40.15s
[INFO] running `Command { std: "docker" "inspect" "1b68f9064687e436a1f4c5e44f0ba6fba0251ac771728f97a7e2eb8dca037ec9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1b68f9064687e436a1f4c5e44f0ba6fba0251ac771728f97a7e2eb8dca037ec9" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling r2e-rate-limit v0.4.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 3.93s
[INFO] running `Command { std: "docker" "inspect" "1b68f9064687e436a1f4c5e44f0ba6fba0251ac771728f97a7e2eb8dca037ec9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1b68f9064687e436a1f4c5e44f0ba6fba0251ac771728f97a7e2eb8dca037ec9" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.16s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/r2e_rate_limit-b473b20413089308)
[INFO] [stderr]      Running tests/guard.rs (/opt/rustwide/target/debug/deps/guard-9f5eb26520081548)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 35 tests
[INFO] [stdout] test configured_user_guard_reads_budget_from_config ... ok
[INFO] [stdout] test configured_pre_guard_falls_back_to_defaults ... ok
[INFO] [stdout] test empty_forwarded_for_falls_back_to_peer ... ok
[INFO] [stdout] test forwarded_for_with_a_port_shares_the_bare_address_bucket ... ok
[INFO] [stdout] test configured_pre_guard_can_be_disabled ... ok
[INFO] [stdout] test configured_pre_guard_can_distrust_forwarded_for ... ok
[INFO] [stdout] test configured_pre_guard_reads_budget_from_config ... ok
[INFO] [stdout] [2m2026-10-06T17:04:38.764821Z[0m [33m WARN[0m [2mr2e_rate_limit::guard[0m[2m:[0m rate limit: no client IP available (no usable X-Forwarded-For entry — absent or not an IP address — and no ConnectInfo peer address) — every such request shares the `unknown` bucket, so per-IP limiting degrades to a global limit. Put a proxy in front that sets X-Forwarded-For, or serve with connection info (serve_auto does). [3mcontroller[0m[2m=[0m"C" [3mmethod[0m[2m=[0m"list"
[INFO] [stdout] test per_user_guard_allows_then_blocks ... ok
[INFO] [stdout] test peer_ip_only_ignores_forwarded_for ... ok
[INFO] [stdout] test ip_guard_without_any_source_shares_the_unknown_bucket ... ok
[INFO] [stdout] test per_user_guard_keys_per_controller ... ok
[INFO] [stdout] test ipv6_aliases_share_one_bucket ... ok
[INFO] [stdout] [2m2026-10-06T17:04:38.785030Z[0m [33m WARN[0m [2mr2e_rate_limit::guard[0m[2m:[0m rate limit: per-user limit on a request with no identity — rejecting with 401 (a per-user bucket cannot be keyed without a subject) [3mcontroller[0m[2m=[0m"TestController" [3mmethod[0m[2m=[0m"list"
[INFO] [stdout] [2m2026-10-06T17:04:38.785108Z[0m [33m WARN[0m [2mr2e_rate_limit::guard[0m[2m:[0m rate limit: per-user limit on a request with no identity — rejecting with 401 (a per-user bucket cannot be keyed without a subject) [3mcontroller[0m[2m=[0m"TestController" [3mmethod[0m[2m=[0m"list"
[INFO] [stdout] test per_user_guard_builds_with_registry ... ok
[INFO] [stdout] test malformed_forwarded_for_falls_back_to_peer ... ok
[INFO] [stdout] test per_user_guard_keys_per_subject ... ok
[INFO] [stdout] test per_user_guard_rejects_a_request_without_identity ... ok
[INFO] [stdout] test pre_global_guard_shares_one_bucket ... ok
[INFO] [stdout] test pre_guard_keys_per_method_within_a_controller ... ok
[INFO] [stdout] test pre_ip_guard_falls_back_to_peer_address ... ok
[INFO] [stdout] test pre_ip_guard_keys_per_ip ... ok
[INFO] [stdout] test configured_user_defaults_reject_a_zero_window - should panic ... ok
[INFO] [stdout] test pre_ip_guard_prefers_forwarded_for_over_peer ... ok
[INFO] [stdout] test configured_pre_defaults_reject_a_zero_window - should panic ... ok
[INFO] [stdout] test configured_pre_guard_rejects_a_zero_window_from_config - should panic ... ok
[INFO] [stdout] test configured_user_guard_rejects_a_zero_window_from_config - should panic ... ok
[INFO] [stdout] test per_user_rejects_a_zero_window - should panic ... ok
[INFO] [stdout] test pre_global_rejects_a_zero_window - should panic ... ok
[INFO] [stdout] test pre_per_ip_rejects_a_zero_window - should panic ... ok
[INFO] [stdout] test configured_pre_guard_rejects_a_non_numeric_max - should panic ... ok
[INFO] [stdout] test configured_pre_guard_rejects_a_non_boolean_trust_flag - should panic ... ok
[INFO] [stdout] test configured_pre_guard_rejects_a_non_numeric_window - should panic ... ok
[INFO] [stdout] test configured_pre_guard_rejects_a_non_boolean_enabled - should panic ... ok
[INFO] [stdout] test configured_user_guard_rejects_a_non_numeric_max - should panic ... ok
[INFO] [stdout] test per_user_spec_declares_the_identity_requirement ... ok
[INFO] [stdout] test pre_guard_keys_per_controller ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 35 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/rate_limiter.rs (/opt/rustwide/target/debug/deps/rate_limiter-4ca628da0cd08cf7)
[INFO] [stdout] 
[INFO] [stdout] running 10 tests
[INFO] [stdout] test test_rate_limiter_allows_within_limit ... ok
[INFO] [stdout] test test_rate_limiter_independent_keys ... ok
[INFO] [stdout] test in_memory_backend_never_refills_a_zero_window ... ok
[INFO] [stdout] test test_rate_limiter_blocks_over_limit ... ok
[INFO] [stdout] test in_memory_backend_tightens_an_existing_bucket ... ok
[INFO] [stdout] test in_memory_backend_survives_racing_callers_with_different_budgets ... ok
[INFO] [stdout] test test_rate_limiter_rejects_zero_window - should panic ... ok
[INFO] [stdout] test test_rate_limiter_refills ... ok
[INFO] [stdout] test in_memory_backend_widens_an_existing_bucket ... ok
[INFO] [stdout] test in_memory_backend_retunes_the_window ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.10s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests r2e_rate_limit
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test src/guard.rs - guard::ConfiguredPreRateLimit (line 333) ... ignored
[INFO] [stdout] test src/guard.rs - guard::ConfiguredRateLimit (line 417) ... ignored
[INFO] [stdout] test src/guard.rs - guard::PreRateLimit (line 168) ... ignored
[INFO] [stdout] test src/guard.rs - guard::RateLimit (line 109) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "1b68f9064687e436a1f4c5e44f0ba6fba0251ac771728f97a7e2eb8dca037ec9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1b68f9064687e436a1f4c5e44f0ba6fba0251ac771728f97a7e2eb8dca037ec9", kill_on_drop: false }`
[INFO] [stdout] 1b68f9064687e436a1f4c5e44f0ba6fba0251ac771728f97a7e2eb8dca037ec9
