[INFO] cloning repository https://github.com/98624017/gemini-worker-rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/98624017/gemini-worker-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F98624017%2Fgemini-worker-rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F98624017%2Fgemini-worker-rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 7629c80a9aca46160763bc1a3b6d0a99559f2092 [INFO] testing 98624017/gemini-worker-rust against 1.97.0-beta.6 for beta-1.98-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F98624017%2Fgemini-worker-rust" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/98624017/gemini-worker-rust [INFO] finished tweaking git repo https://github.com/98624017/gemini-worker-rust [INFO] tweaked toml for git repo https://github.com/98624017/gemini-worker-rust written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/98624017/gemini-worker-rust on toolchain 1.97.0-beta.6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/98624017/gemini-worker-rust 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded matchers v0.2.0 [INFO] [stderr] Downloaded zerofrom v0.1.7 [INFO] [stderr] Downloaded yoke v0.8.2 [INFO] [stderr] Downloaded tracing-log v0.2.0 [INFO] [stderr] Downloaded wasm-bindgen-futures v0.4.67 [INFO] [stderr] Downloaded num-conv v0.2.1 [INFO] [stderr] Downloaded tikv-jemallocator v0.6.1 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.117 [INFO] [stderr] Downloaded time-core v0.1.8 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.117 [INFO] [stderr] Downloaded time-macros v0.2.27 [INFO] [stderr] Downloaded quinn-udp v0.5.14 [INFO] [stderr] Downloaded serde_path_to_error v0.1.20 [INFO] [stderr] Downloaded jpeg-encoder v0.7.0 [INFO] [stderr] Downloaded tracing-subscriber v0.3.23 [INFO] [stderr] Downloaded hyper-rustls v0.27.7 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.117 [INFO] [stderr] Downloaded wasm-bindgen v0.2.117 [INFO] [stderr] Downloaded quinn v0.11.9 [INFO] [stderr] Downloaded cc v1.2.59 [INFO] [stderr] Downloaded rustls-webpki v0.103.10 [INFO] [stderr] Downloaded js-sys v0.3.94 [INFO] [stderr] Downloaded tower-http v0.6.8 [INFO] [stderr] Downloaded iri-string v0.7.12 [INFO] [stderr] Downloaded hyper v1.9.0 [INFO] [stderr] Downloaded axum v0.8.8 [INFO] [stderr] Downloaded quinn-proto v0.11.14 [INFO] [stderr] Downloaded time v0.3.47 [INFO] [stderr] Downloaded webpki-roots v1.0.6 [INFO] [stderr] Downloaded rustls v0.23.37 [INFO] [stderr] Downloaded web-sys v0.3.94 [INFO] [stderr] Downloaded tokio v1.51.0 [INFO] [stderr] Downloaded tikv-jemalloc-sys v0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7 [INFO] [stderr] Downloaded pxfm v0.1.28 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] b75ff0a403a5df324c95739462aaafd328213ce69fa0901fbd17c9729b3f6b96 [INFO] running `Command { std: "docker" "start" "b75ff0a403a5df324c95739462aaafd328213ce69fa0901fbd17c9729b3f6b96", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b75ff0a403a5df324c95739462aaafd328213ce69fa0901fbd17c9729b3f6b96", 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" "b75ff0a403a5df324c95739462aaafd328213ce69fa0901fbd17c9729b3f6b96" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b75ff0a403a5df324c95739462aaafd328213ce69fa0901fbd17c9729b3f6b96", 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" "b75ff0a403a5df324c95739462aaafd328213ce69fa0901fbd17c9729b3f6b96" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling libc v0.2.184 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling pin-project-lite v0.2.17 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Compiling itoa v1.0.18 [INFO] [stderr] Compiling find-msvc-tools v0.1.9 [INFO] [stderr] Compiling bytes v1.11.1 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling cc v1.2.59 [INFO] [stderr] Compiling writeable v0.6.3 [INFO] [stderr] Compiling typenum v1.19.0 [INFO] [stderr] Compiling litemap v0.8.2 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Compiling icu_properties_data v2.2.0 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling subtle v2.6.1 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling icu_normalizer_data v2.2.0 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling tower-service v0.3.3 [INFO] [stderr] Compiling utf8_iter v1.0.4 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling rustls-pki-types v1.14.0 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling try-lock v0.2.5 [INFO] [stderr] Compiling untrusted v0.9.0 [INFO] [stderr] Compiling want v0.3.1 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling zmij v1.0.21 [INFO] [stderr] Compiling rustls v0.23.37 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling simd-adler32 v0.3.9 [INFO] [stderr] Compiling httpdate v1.0.3 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling autocfg v1.5.0 [INFO] [stderr] Compiling atomic-waker v1.1.2 [INFO] [stderr] Compiling zerocopy v0.8.48 [INFO] [stderr] Compiling tower-layer v0.3.3 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling adler2 v2.0.1 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling unicase v2.9.0 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling ipnet v2.12.0 [INFO] [stderr] Compiling mime v0.3.17 [INFO] [stderr] Compiling base64 v0.22.1 [INFO] [stderr] Compiling hashbrown v0.17.0 [INFO] [stderr] Compiling mime_guess v2.0.5 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling indexmap v2.14.0 [INFO] [stderr] Compiling tikv-jemalloc-sys v0.6.1+5.3.0-1-ge13ca993e8ccb9ba9847cc330696e02839f328f7 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling flate2 v1.1.9 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling fdeflate v0.3.7 [INFO] [stderr] Compiling webpki-roots v1.0.6 [INFO] [stderr] Compiling byteorder-lite v0.1.0 [INFO] [stderr] Compiling anyhow v1.0.102 [INFO] [stderr] Compiling quick-error v2.0.1 [INFO] [stderr] Compiling pxfm v0.1.28 [INFO] [stderr] Compiling rustls-webpki v0.103.10 [INFO] [stderr] Compiling zerofrom-derive v0.1.7 [INFO] [stderr] Compiling yoke-derive v0.8.2 [INFO] [stderr] Compiling zerovec-derive v0.11.3 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling zerofrom v0.1.7 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling yoke v0.8.2 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling tokio v1.51.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling iri-string v0.7.12 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling zune-core v0.5.1 [INFO] [stderr] Compiling num-conv v0.2.1 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling foldhash v0.1.5 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling time-core v0.1.8 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling allocator-api2 v0.2.21 [INFO] [stderr] Compiling powerfmt v0.2.0 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Compiling deranged v0.5.8 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling time-macros v0.2.27 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling zune-jpeg v0.5.15 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling axum-core v0.5.6 [INFO] [stderr] Compiling moxcms v0.8.1 [INFO] [stderr] Compiling hyper v1.9.0 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling image-webp v0.2.4 [INFO] [stderr] Compiling png v0.18.1 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling cpufeatures v0.2.17 [INFO] [stderr] Compiling matchit v0.8.4 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling bytemuck v1.25.0 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling axum v0.8.8 [INFO] [stderr] Compiling time v0.3.47 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling lru v0.12.5 [INFO] [stderr] Compiling hmac v0.12.1 [INFO] [stderr] Compiling jpeg-encoder v0.7.0 [INFO] [stderr] Compiling hex v0.4.3 [INFO] [stderr] Compiling image v0.25.10 [INFO] [stderr] Compiling tikv-jemallocator v0.6.1 [INFO] [stderr] Compiling rust-sync-proxy v0.1.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5m 04s [INFO] running `Command { std: "docker" "inspect" "b75ff0a403a5df324c95739462aaafd328213ce69fa0901fbd17c9729b3f6b96", 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" "b75ff0a403a5df324c95739462aaafd328213ce69fa0901fbd17c9729b3f6b96" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling fastrand v2.4.1 [INFO] [stderr] Compiling png v0.18.1 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling image v0.25.10 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling axum v0.8.8 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling rust-sync-proxy v0.1.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 53s [INFO] running `Command { std: "docker" "inspect" "b75ff0a403a5df324c95739462aaafd328213ce69fa0901fbd17c9729b3f6b96", 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" "b75ff0a403a5df324c95739462aaafd328213ce69fa0901fbd17c9729b3f6b96" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.05s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rust_sync_proxy-e28a1330f5cc0224) [INFO] [stdout] [INFO] [stdout] running 57 tests [INFO] [stdout] test cache::tests::fetch_returns_prepublished_result_without_waiting_for_notify ... ok [INFO] [stdout] test http::router::tests::aiapidev_openai_image_poll_interval_is_10_seconds ... ok [INFO] [stdout] test http::router::tests::aiapidev_create_invalid_json_returns_structured_proxy_error ... ok [INFO] [stdout] test http::router::tests::aiapidev_flow_polls_task_and_rewrites_result ... ok [INFO] [stdout] test http::router::tests::aiapidev_openai_image_flow_polls_task_and_returns_openai_response ... ok [INFO] [stdout] test http::router::tests::aiapidev_gemini_poll_blockable_502_is_cached_without_retry ... ok [INFO] [stdout] test cache::tests::total_timeout_covers_optimization_stage ... ok [INFO] [stdout] test http::router::tests::aiapidev_openai_image_poll_blockable_502_is_cached_without_retry ... ok [INFO] [stdout] test http::router::tests::aiapidev_poll_timeout_is_450_seconds ... ok [INFO] [stdout] test http::router::tests::build_openai_image_output_url_keeps_legacy_url_when_standard_proxy_flag_is_disabled ... ok [INFO] [stdout] test http::router::tests::build_openai_image_output_url_keeps_r2_url_without_proxy_prefix_by_default ... ok [INFO] [stdout] test http::router::tests::classify_reqwest_connect_error_detail_detects_common_root_causes ... ok [INFO] [stdout] test http::router::tests::extract_openai_image_items_accepts_data_url_entries ... ok [INFO] [stdout] test http::router::tests::extract_openai_image_items_accepts_url_entries ... ok [INFO] [stdout] test http::router::tests::extract_openai_image_items_prefers_b64_json_over_url ... ok [INFO] [stdout] test http::router::tests::extract_openai_image_items_rejects_entries_without_b64_json_or_url ... ok [INFO] [stdout] test http::router::tests::build_openai_image_output_url_can_proxy_r2_when_standard_proxy_flag_is_disabled ... ok [INFO] [stdout] test http::router::tests::forward_gemini_request_grsai_accepts_sse_final_payload ... ok [INFO] [stdout] test http::router::tests::build_openai_image_output_url_can_proxy_r2_url_when_enabled ... ok [INFO] [stdout] test http::router::tests::forward_gemini_request_grsai_auth_failure_preserves_401_status ... ok [INFO] [stdout] test http::router::tests::forward_gemini_request_grsai_business_error_keeps_rust_error_shape ... ok [INFO] [stdout] test http::router::tests::forward_gemini_request_grsai_failed_status_uses_business_error_kind ... ok [INFO] [stdout] test http::router::tests::aiapidev_poll_invalid_json_returns_structured_proxy_error ... ok [INFO] [stdout] test http::router::tests::forward_gemini_request_grsai_rate_limit_preserves_429_status ... ok [INFO] [stdout] test http::router::tests::forward_gemini_request_uses_grsai_sync_provider_for_output_url ... ok [INFO] [stdout] test http::router::tests::forward_gemini_request_rewrites_aiapidev_base64_inline_data_before_create_call ... ok [INFO] [stdout] test http::router::tests::forward_gemini_request_uses_grsai_sync_provider_for_base64 ... ok [INFO] [stdout] test http::router::tests::forward_openai_image_request_grsai_auth_failure_preserves_401_status ... ok [INFO] [stdout] test http::router::tests::forward_gemini_request_grsai_succeeded_without_results_uses_missing_image_url ... ok [INFO] [stdout] test http::router::tests::forward_openai_image_request_grsai_rate_limit_preserves_429_status ... ok [INFO] [stdout] test http::router::tests::forward_openai_image_request_grsai_missing_image_url_returns_current_proxy_error_shape ... ok [INFO] [stdout] test http::router::tests::forward_openai_image_request_keeps_happyapi_generations_when_images_missing ... ok [INFO] [stdout] test http::router::tests::forward_openai_image_request_rejects_more_than_six_reference_images ... ok [INFO] [stdout] test http::router::tests::forward_openai_image_request_uses_grsai_sync_provider ... ok [INFO] [stdout] test http::router::tests::forward_openai_image_request_uses_aiapidev_async_flow ... ok [INFO] [stdout] test http::router::tests::model_action_admin_success_sanitizes_request_body_once ... ok [INFO] [stdout] test http::router::tests::forward_openai_image_request_reuses_request_image_cache_for_happyapi_edits ... ok [INFO] [stdout] test http::router::tests::forward_openai_image_request_uses_configured_edits_domain_when_images_alias_exists ... ok [INFO] [stdout] test http::router::tests::forward_openai_image_request_uses_happyapi_edits_multipart_when_images_exist ... ok [INFO] [stdout] test http::router::tests::proxy_error_json_contains_structured_fields ... ok [INFO] [stdout] test http::router::tests::request_cache_tracking_records_per_request_cache_hits ... ok [INFO] [stdout] test response_materialize::tests::optimize_inline_data_images_normalizes_mime_without_reencoding_unchanged_data ... ok [INFO] [stdout] test http::router::tests::model_action_failure_preserves_request_cache_hits_in_admin_log ... ok [INFO] [stdout] test upload::tests::put_object_stream_starts_request_before_reader_finishes ... ok [INFO] [stdout] test upload::tests::uploader_r2_base64_path_streams_decoded_bytes ... ok [INFO] [stdout] test upstream_block_cache::tests::cache_evicts_least_recently_used_entry ... ok [INFO] [stdout] test upstream_block_cache::tests::cache_prunes_expired_entries_before_inserting_new_entry ... ok [INFO] [stdout] test image_io::tests::large_png_can_be_reencoded_to_jpeg_when_compression_enabled ... ok [INFO] [stdout] test response_materialize::tests::optimize_inline_data_images_reencodes_large_png_base64_entries ... ok [INFO] [stdout] test upstream_block_cache::tests::key_ignores_object_order_and_preserves_array_order ... ok [INFO] [stdout] test upstream_block_cache::tests::classifier_requires_400_or_502_and_known_keyword ... ok [INFO] [stdout] test image_io::tests::higher_jpeg_quality_produces_larger_reencoded_output ... ok [INFO] [stdout] test upstream_block_cache::tests::cache_returns_hits_until_ttl_expires ... ok [INFO] [stdout] test http::router::tests::aiapidev_poll_retryable_failure_recovers_before_failure_limit ... ok [INFO] [stdout] test cache::tests::fetch_once_keeps_png_optimization_inside_total_timeout ... ok [INFO] [stdout] test http::router::tests::aiapidev_poll_returns_last_retryable_response_after_five_failures ... ok [INFO] [stdout] test http::router::tests::aiapidev_poll_failure_preserves_upstream_status_and_body ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 57 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.10s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rust_sync_proxy-156b1cdd6139e69c) [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stderr] Running tests/admin_test.rs (/opt/rustwide/target/debug/deps/admin_test-5e0da6baef0792f5) [INFO] [stdout] test tests::server_stops_after_shutdown_future_resolves ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 27 tests [INFO] [stdout] test admin_log_buffer_keeps_latest_hundred_entries ... ok [INFO] [stdout] test admin_log_does_not_collect_generic_url_fields_as_images ... ok [INFO] [stdout] test admin_log_omits_base64_payloads ... ok [INFO] [stdout] test admin_log_collects_openai_image_response_urls ... ok [INFO] [stdout] test admin_log_collects_proxy_and_http_image_urls ... ok [INFO] [stdout] test admin_log_collects_typed_image_url_items ... ok [INFO] [stdout] test admin_logs_capture_structured_proxy_error_fields ... ok [INFO] [stdout] test admin_logs_page_contains_chart_collapse_and_view_switch ... ok [INFO] [stdout] test admin_logs_and_stats_include_stage_duration_fields ... ok [INFO] [stdout] test admin_logs_capture_upstream_error_fields ... ok [INFO] [stdout] test admin_logs_page_contains_album_jump_back_logic ... ok [INFO] [stdout] test admin_logs_capture_structured_upstream_connect_failures ... ok [INFO] [stdout] test admin_logs_page_album_previews_safe_images_by_default ... ok [INFO] [stdout] test admin_logs_page_contains_album_rendering_helpers ... ok [INFO] [stdout] test admin_logs_page_contains_chartjs_and_theme_toggle ... ok [INFO] [stdout] test admin_logs_page_preserves_system_theme_without_override ... ok [INFO] [stdout] test admin_rejects_invalid_basic_auth_variants ... ok [INFO] [stdout] test admin_routes_return_not_found_when_admin_is_disabled ... ok [INFO] [stdout] test admin_logs_page_persists_view_mode_and_chart_collapse_state ... ok [INFO] [stdout] test admin_stats_include_spill_metrics ... ok [INFO] [stdout] test extract_finish_reason_returns_first_candidate_reason ... ok [INFO] [stdout] test admin_stats_track_model_requests ... ok [INFO] [stdout] test admin_routes_require_basic_auth_and_return_logs ... ok [INFO] [stdout] test maybe_sanitize_json_for_log_skips_when_admin_is_disabled ... ok [INFO] [stdout] test admin_logs_page_contains_error_detail_section ... ok [INFO] [stdout] test admin_logs_page_lazy_renders_log_details ... ok [INFO] [stdout] test admin_logs_page_uses_shared_filtered_items_for_all_views ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 27 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s [INFO] [stdout] [INFO] [stderr] Running tests/allocator_test.rs (/opt/rustwide/target/debug/deps/allocator_test-02817c1ad3df1b35) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test jemalloc_default_decay_matches_approved_value ... ok [INFO] [stdout] test compiled_allocator_matches_platform_policy ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/blob_runtime_test.rs (/opt/rustwide/target/debug/deps/blob_runtime_test-7e09683168ac68d9) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test blob_runtime_can_store_external_shared_bytes_without_spill ... ok [INFO] [stdout] test blob_runtime_can_store_shared_bytes_without_vec_copy ... ok [INFO] [stdout] test blob_runtime_keeps_small_blob_inline ... ok [INFO] [stdout] test blob_runtime_spills_large_blob_to_disk ... ok [INFO] [stdout] test blob_runtime_records_spill_count_and_bytes ... ok [INFO] [stderr] Running tests/config_budget_test.rs (/opt/rustwide/target/debug/deps/config_budget_test-6179f598b052c456) [INFO] [stdout] test blob_runtime_does_not_record_spill_when_spill_write_fails ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test blob_budget_defaults_match_2gib_profile ... ok [INFO] [stdout] test blob_budget_defaults_match_4gib_profile ... ok [INFO] [stderr] Running tests/config_test.rs (/opt/rustwide/target/debug/deps/config_test-7365706f730a6bcb) [INFO] [stdout] test blob_budget_defaults_match_8gib_profile ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 27 tests [INFO] [stdout] test defaults_match_runtime_expectations ... ok [INFO] [stdout] test invalid_port_falls_back_to_default_like_go ... ok [INFO] [stdout] test disabled_values_follow_go_semantics ... ok [INFO] [stdout] test image_compression_jpeg_quality_can_be_overridden_from_env ... ok [INFO] [stdout] test image_compression_flag_can_be_enabled_from_env ... ok [INFO] [stdout] test background_fetch_wait_timeout_defaults_to_image_fetch_timeout ... ok [INFO] [stdout] test openai_image_b64_json_upstream_domains_can_be_loaded_from_env ... ok [INFO] [stdout] test openai_image_edits_upstream_domains_can_be_loaded_from_env ... ok [INFO] [stdout] test openai_image_edits_upstream_domains_match_exact_and_suffix_hosts ... ok [INFO] [stdout] test openai_image_b64_json_upstream_domains_match_exact_and_suffix_hosts ... ok [INFO] [stdout] test proxy_r2_output_urls_can_be_disabled_from_env ... ok [INFO] [stdout] test proxy_r2_output_urls_can_be_enabled_from_env ... ok [INFO] [stdout] test external_image_proxy_prefix_still_overrides_public_base_url ... ok [INFO] [stdout] test openai_image_upstream_url_proxy_prefix_can_be_loaded_from_env ... ok [INFO] [stdout] test legacy_upload_env_vars_do_not_change_runtime_config ... ok [INFO] [stdout] test proxy_r2_output_urls_defaults_to_disabled_when_standard_proxy_flag_is_disabled ... ok [INFO] [stdout] test public_base_url_can_fallback_to_legacy_proxy_prefix ... ok [INFO] [stdout] test proxy_r2_output_urls_defaults_to_enabled_when_public_base_url_exists ... ok [INFO] [stdout] test invalid_r2_endpoint_is_rejected_during_config_load ... ok [INFO] [stdout] test proxy_r2_output_urls_defaults_to_enabled_when_external_proxy_prefix_exists ... ok [INFO] [stdout] test proxy_r2_output_urls_explicit_zero_overrides_public_base_url_default ... ok [INFO] [stdout] test test_config_uses_runtime_defaults_except_test_api_key ... ok [INFO] [stdout] test upstream_block_cache_can_be_disabled_from_env ... ok [INFO] [stdout] test upstream_http_timeouts_can_be_overridden_from_env ... ok [INFO] [stdout] test request_image_webp_optimization_flag_can_be_enabled_from_env ... ok [INFO] [stdout] test upstream_block_cache_can_be_configured_from_env ... ok [INFO] [stdout] test upstream_block_cache_defaults_to_five_minutes_and_1024_entries ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 27 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/grsai_test.rs (/opt/rustwide/target/debug/deps/grsai_test-c8f51e88c0cb4c21) [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test openai_model_mapping_defaults_only_when_empty ... ok [INFO] [stderr] Running tests/http_forwarding_test.rs (/opt/rustwide/target/debug/deps/http_forwarding_test-9e2c3557c0218fe3) [INFO] [stdout] test gemini_model_mapping_matches_go_provider ... ok [INFO] [stdout] test openai_params_accept_aliases_and_defaults ... ok [INFO] [stdout] test parses_sse_success_response_from_last_data_line ... ok [INFO] [stdout] test gemini_params_extract_user_prompt_urls_and_image_config ... ok [INFO] [stdout] test parses_business_error_as_grsai_error ... ok [INFO] [stdout] test parses_json_success_response ... ok [INFO] [stdout] test parse_error_when_no_data_lines_exist ... ok [INFO] [stdout] test request_body_matches_go_grsai_provider ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 23 tests [INFO] [stdout] test generate_content_invalid_json_is_recorded_once_in_admin_logs ... ok [INFO] [stdout] test image_generations_invalid_json_returns_bad_request ... ok [INFO] [stdout] test image_generations_accepts_upstream_url_payload_without_uploading ... ok [INFO] [stdout] test image_generations_can_wrap_upstream_url_payload_with_dedicated_proxy_prefix ... ok [INFO] [stdout] test dual_upstream_header_routes_4k_requests_to_second_standard_upstream ... ok [INFO] [stdout] test generate_content_reuses_cached_upstream_block_error ... ok [INFO] [stdout] test generate_content_forwards_expected_upstream_request_and_output_url_result ... ok [INFO] [stdout] test image_generations_materializes_upstream_data_url_payload ... ok [INFO] [stdout] test image_generations_reuses_cached_upstream_block_error ... ok [INFO] [stdout] test generate_content_oversized_body_returns_payload_too_large ... ok [INFO] [stdout] test image_generations_returns_bad_gateway_when_upstream_data_is_empty ... ok [INFO] [stdout] test image_generations_preserves_image_alias_and_returns_uploaded_urls ... ok [INFO] [stdout] test malformed_dual_upstream_header_returns_bad_request ... ok [INFO] [stdout] test invalid_request_json_returns_structured_proxy_error ... ok [INFO] [stdout] test upstream_block_cache_hit_is_marked_in_admin_logs ... ok [INFO] [stdout] test upstream_block_cache_does_not_match_different_upstream_base_url ... ok [INFO] [stdout] test generate_content_does_not_cache_large_block_error_body ... ok [INFO] [stdout] test upstream_block_cache_ttl_zero_disables_cache ... ok [INFO] [stdout] test truncated_upstream_body_returns_structured_proxy_error ... ok [INFO] [stdout] test upstream_json_error_preserves_message_and_adds_proxy_metadata ... ok [INFO] [stdout] test upstream_block_cache_does_not_store_non_blockable_400 ... ok [INFO] [stdout] test upstream_block_cache_does_not_match_different_request_body ... ok [INFO] [stdout] test image_generations_oversized_body_returns_payload_too_large ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s [INFO] [stdout] [INFO] [stderr] Running tests/http_smoke.rs (/opt/rustwide/target/debug/deps/http_smoke-d60efd948098536a) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test unknown_route_returns_404 ... ok [INFO] [stdout] test generate_content_output_url_smoke_still_passes_after_blob_runtime_refactor ... ok [INFO] [stderr] Running tests/image_io_test.rs (/opt/rustwide/target/debug/deps/image_io_test-5c8f1e6ecdf7ca0c) [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 9 tests [INFO] [stdout] test compression_result_marks_disabled_optimization_as_unchanged ... ok [INFO] [stdout] test compression_result_marks_non_png_as_unchanged ... ok [INFO] [stdout] test compression_result_marks_small_png_as_unchanged ... ok [INFO] [stdout] test compression_result_marks_png_as_unchanged_when_jpeg_is_not_smaller ... ok [INFO] [stdout] test rejects_images_over_max_size ... ok [INFO] [stdout] test fetch_image_rejects_stream_when_size_exceeds_limit_without_content_length ... ok [INFO] [stdout] test fetch_image_rejects_when_content_length_exceeds_limit ... ok [INFO] [stdout] test png_to_webp_failure_falls_back_to_original_bytes ... ok [INFO] [stdout] test png_to_webp_timeout_falls_back_to_original_bytes ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.94s [INFO] [stdout] [INFO] [stderr] Running tests/openai_image_test.rs (/opt/rustwide/target/debug/deps/openai_image_test-0a30b1963abfa1ea) [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test sniff_image_mime_type_detects_known_formats ... ok [INFO] [stdout] test build_aiapidev_openai_image_response_uses_fixed_usage ... ok [INFO] [stdout] test build_openai_image_response_preserves_upstream_created_timestamp ... ok [INFO] [stdout] test build_openai_image_response_uses_aiapidev_finished_time_when_created_missing ... ok [INFO] [stdout] test build_openai_image_response_falls_back_created_timestamp ... ok [INFO] [stdout] test normalize_openai_image_request_forces_b64_json_when_requested ... ok [INFO] [stdout] test normalize_openai_image_request_supports_all_aliases_without_forcing_b64_json ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/provider_test.rs (/opt/rustwide/target/debug/deps/provider_test-2349bf4217d2cf9c) [INFO] [stdout] [INFO] [stdout] running 5 tests [INFO] [stderr] Running tests/request_cache_test.rs (/opt/rustwide/target/debug/deps/request_cache_test-9956f85a220eb7d7) [INFO] [stdout] test grsai_provider_rejects_suffix_tricks ... ok [INFO] [stdout] test aiapidev_provider_matches_current_host ... ok [INFO] [stdout] test aiapidev_provider_rejects_old_hosts ... ok [INFO] [stdout] test unknown_or_invalid_base_url_uses_transparent_provider ... ok [INFO] [stdout] test grsai_provider_matches_root_and_subdomains ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 11 tests [INFO] [stdout] test request_cache_does_not_retry_non_retryable_status ... ok [INFO] [stdout] test request_cache_reuses_fetched_image_across_calls ... ok [INFO] [stdout] test request_cache_still_populates_cache_when_background_bridge_disabled ... ok [INFO] [stdout] test request_materialize_reuses_fetch_service_cache_between_calls ... ok [INFO] [stdout] test request_materialize_keeps_large_cached_bytes_in_memory_without_spill ... ok [INFO] [stdout] test request_cache_background_bridge_reuses_inflight_download ... ok [INFO] [stdout] test response_cache_reuses_inflight_fetch_concurrently ... ok [INFO] [stdout] test response_cache_cancellation_does_not_finish_or_populate_cache ... ok [INFO] [stdout] test request_cache_retries_once_after_connection_drops_before_headers ... ok [INFO] [stdout] test request_cache_keeps_large_png_when_request_webp_optimization_is_disabled ... ok [INFO] [stdout] test request_cache_stores_large_png_as_lossless_webp_when_enabled ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.34s [INFO] [stdout] [INFO] [stderr] Running tests/request_encode_test.rs (/opt/rustwide/target/debug/deps/request_encode_test-76d715aeed69af3a) [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test request_encoder_writes_inline_data_base64_from_blob_handle ... ok [INFO] [stdout] test request_encoder_reads_large_external_shared_blob_without_spill ... ok [INFO] [stdout] test request_encoder_writes_spilled_blob_as_base64 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s [INFO] [stdout] [INFO] [stderr] Running tests/request_inline_data_flow_test.rs (/opt/rustwide/target/debug/deps/request_inline_data_flow_test-dd1f0197a5ba5dba) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test request_inline_data_urls_are_materialized_to_blob_handles ... ok [INFO] [stdout] test request_inline_data_urls_are_rewritten_to_base64 ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stderr] Running tests/request_materialize_test.rs (/opt/rustwide/target/debug/deps/request_materialize_test-59dc0c7ea3072a6c) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test request_materialize_uses_20mib_request_limit ... ok [INFO] [stdout] test request_materialize_fetches_image_url_into_blob_handle ... ok [INFO] [stdout] test request_materialize_fetches_unique_urls_concurrently ... ok [INFO] [stdout] test request_materialize_rejects_images_over_request_limit ... ok [INFO] [stdout] test request_materialize_keeps_large_png_without_webp_optimization ... ok [INFO] [stdout] test request_materialize_converts_large_png_when_webp_optimization_enabled ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.82s [INFO] [stdout] [INFO] [stderr] Running tests/request_rewrite_test.rs (/opt/rustwide/target/debug/deps/request_rewrite_test-9c3661c2b6107c8e) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test collects_unique_inline_data_urls_and_enforces_limit ... ok [INFO] [stdout] test rewrites_aiapidev_request_body_base64_inline_data_to_snake_case_inline_data ... ok [INFO] [stdout] test rewrites_aiapidev_request_body_keeps_query_for_non_matching_domain ... ok [INFO] [stdout] test scan_inline_data_urls_allows_seven_url_refs ... ok [INFO] [stdout] test scan_inline_data_urls_rejects_eight_url_refs ... ok [INFO] [stdout] test rewrites_aiapidev_request_body_keeps_already_proxied_url_without_double_wrapping ... ok [INFO] [stdout] test rewrites_aiapidev_request_body_to_file_data_and_snake_case ... ok [INFO] [stdout] test rewrites_aiapidev_request_body_strips_query_before_external_proxy_when_domain_matches ... ok [INFO] [stdout] test rewrites_aiapidev_request_body_url_inline_data_to_external_proxy_when_domain_matches ... ok [INFO] [stdout] test rewrites_aiapidev_request_body_uses_public_base_url_compatible_proxy_prefix ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/response_materialize_test.rs (/opt/rustwide/target/debug/deps/response_materialize_test-8388745d4e5482e4) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test output_url_response_can_proxy_r2_public_url_when_enabled ... ok [INFO] [stdout] test output_url_response_can_proxy_r2_even_when_standard_proxy_flag_is_disabled ... ok [INFO] [stdout] test output_url_response_streams_large_base64_without_runtime_spill ... ok [INFO] [stdout] test output_url_response_respects_proxy_standard_output_urls_flag ... ok [INFO] [stdout] test output_url_response_keeps_custom_r2_public_url_without_proxy_prefix ... ok [INFO] [stdout] test output_url_response_rewrites_uploaded_url_with_external_proxy_prefix ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stderr] Running tests/response_rewrite_test.rs (/opt/rustwide/target/debug/deps/response_rewrite_test-0a76d4043c47ba5f) [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test keeps_only_largest_inline_image_per_candidate ... ok [INFO] [stdout] test keep_largest_inline_image_preserves_text_and_url_inline_data ... ok [INFO] [stdout] test aiapidev_task_response_url_mode_falls_back_to_public_base_url_proxy_path ... ok [INFO] [stdout] test aiapidev_task_response_url_mode_reuses_external_proxy_prefix ... ok [INFO] [stdout] test markdown_url_normalization_uses_external_proxy_prefix ... ok [INFO] [stdout] test aiapidev_task_response_base64_mode_downloads_image ... ok [INFO] [stdout] test markdown_base64_normalization_uses_fetch_service_cache ... ok [INFO] [stdout] test aiapidev_task_response_base64_mode_allows_images_over_request_limit ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s [INFO] [stdout] [INFO] [stderr] Running tests/router_test.rs (/opt/rustwide/target/debug/deps/router_test-d8cdcbd758581ad2) [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test proxy_image_route_is_not_exposed ... ok [INFO] [stdout] test image_generations_route_accepts_post_only ... ok [INFO] [stdout] test generate_content_route_accepts_post_only ... ok [INFO] [stdout] test stream_generate_content_route_is_not_exposed ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s [INFO] [stdout] [INFO] [stderr] Running tests/upload_mode_test.rs (/opt/rustwide/target/debug/deps/upload_mode_test-9e7601ed6f13c7cb) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test external_proxy_prefix_wraps_uploaded_url ... ok [INFO] [stdout] test r2_then_legacy_falls_back_to_legacy_on_r2_failure ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s [INFO] [stdout] [INFO] [stderr] Running tests/upstream_auth_test.rs (/opt/rustwide/target/debug/deps/upstream_auth_test-a229a9464167f0f4) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test aiapidev_model_path_is_mapped ... ok [INFO] [stdout] test aiapidev_base_url_is_detected ... ok [INFO] [stdout] test bearer_token_can_override_base_url_and_api_key ... ok [INFO] [stdout] test malformed_dual_upstream_token_returns_error ... ok [INFO] [stdout] test dual_upstream_token_uses_first_group_for_non_4k_requests ... ok [INFO] [stdout] test dual_upstream_token_uses_second_group_for_4k_requests ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Doc-tests rust_sync_proxy [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] running `Command { std: "docker" "inspect" "b75ff0a403a5df324c95739462aaafd328213ce69fa0901fbd17c9729b3f6b96", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b75ff0a403a5df324c95739462aaafd328213ce69fa0901fbd17c9729b3f6b96", kill_on_drop: false }` [INFO] [stdout] b75ff0a403a5df324c95739462aaafd328213ce69fa0901fbd17c9729b3f6b96