[INFO] fetching crate unifly-api 0.11.0...
[INFO] testing unifly-api-0.11.0 against 1.99.0-beta.8+cargoflags=--release for beta-release-1.100-2
[INFO] extracting crate unifly-api 0.11.0 into /workspace/builds/worker-2-tc1/source
[INFO] started tweaking crates.io crate unifly-api 0.11.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate unifly-api 0.11.0
[INFO] tweaked toml for crates.io crate unifly-api 0.11.0 written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate unifly-api 0.11.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 unifly-api 0.11.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]  Downloading crates ...
[INFO] [stderr]   Downloaded tokio-test v0.4.6
[INFO] [stderr]   Downloaded syn v3.0.8
[INFO] [stderr]   Downloaded compression-codecs v0.4.45
[INFO] [stderr]   Downloaded async-compression v0.4.50
[INFO] [stderr]   Downloaded publicsuffix v2.3.0
[INFO] [stderr]   Downloaded pest v2.9.3
[INFO] [stderr]   Downloaded pest_meta v2.9.3
[INFO] [stderr]   Downloaded pest_derive v2.9.3
[INFO] [stderr]   Downloaded pest_generator v2.9.3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 53d7d8be21cf03a9eddad02daac3920e65781b0dd72d3057c01441a4920ff318
[INFO] running `Command { std: "docker" "start" "53d7d8be21cf03a9eddad02daac3920e65781b0dd72d3057c01441a4920ff318", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "53d7d8be21cf03a9eddad02daac3920e65781b0dd72d3057c01441a4920ff318", 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" "53d7d8be21cf03a9eddad02daac3920e65781b0dd72d3057c01441a4920ff318" "/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" "53d7d8be21cf03a9eddad02daac3920e65781b0dd72d3057c01441a4920ff318", 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" "53d7d8be21cf03a9eddad02daac3920e65781b0dd72d3057c01441a4920ff318" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling smallvec v1.16.3
[INFO] [stderr]    Compiling rustls-pki-types v1.15.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling rustls v0.23.45
[INFO] [stderr]    Compiling syn v3.0.8
[INFO] [stderr]    Compiling socket2 v0.6.5
[INFO] [stderr]    Compiling mio v1.2.4
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling hybrid-array v0.4.15
[INFO] [stderr]    Compiling simd-adler32 v0.3.10
[INFO] [stderr]    Compiling crc32fast v1.5.2
[INFO] [stderr]    Compiling cpufeatures v0.3.1
[INFO] [stderr]    Compiling cookie v0.18.2
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling brotli v9.0.0
[INFO] [stderr]    Compiling compression-core v0.4.33
[INFO] [stderr]    Compiling chacha20 v0.10.2
[INFO] [stderr]    Compiling time v0.3.55
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling psl-types v2.0.11
[INFO] [stderr]    Compiling miniz_oxide v0.9.1
[INFO] [stderr]    Compiling rand v0.10.3
[INFO] [stderr]    Compiling serde_json v1.0.154
[INFO] [stderr]    Compiling data-encoding v2.11.1
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling dashmap v6.2.1
[INFO] [stderr]    Compiling crypto-common v0.2.2
[INFO] [stderr]    Compiling flate2 v1.1.10
[INFO] [stderr]    Compiling block-buffer v0.12.1
[INFO] [stderr]    Compiling webpki-roots v1.0.9
[INFO] [stderr]    Compiling rustls-native-certs v0.8.4
[INFO] [stderr]    Compiling webpki-roots v0.26.11
[INFO] [stderr]    Compiling directories v6.0.0
[INFO] [stderr]    Compiling uuid v1.28.0
[INFO] [stderr]    Compiling digest v0.11.3
[INFO] [stderr]    Compiling sha1 v0.11.0
[INFO] [stderr]    Compiling synstructure v0.14.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.8
[INFO] [stderr]    Compiling yoke-derive v0.8.4
[INFO] [stderr]    Compiling zerovec-derive v0.11.6
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling futures-macro v0.3.34
[INFO] [stderr]    Compiling thiserror-impl v2.0.21
[INFO] [stderr]    Compiling compression-codecs v0.4.45
[INFO] [stderr]    Compiling tokio v1.53.2
[INFO] [stderr]    Compiling futures-util v0.3.34
[INFO] [stderr]    Compiling zerofrom v0.1.8
[INFO] [stderr]    Compiling thiserror v2.0.21
[INFO] [stderr]    Compiling yoke v0.8.3
[INFO] [stderr]    Compiling zerovec v0.11.8
[INFO] [stderr]    Compiling zerotrie v0.2.5
[INFO] [stderr]    Compiling tinystr v0.8.4
[INFO] [stderr]    Compiling potential_utf v0.1.6
[INFO] [stderr]    Compiling icu_locale_core v2.3.0
[INFO] [stderr]    Compiling icu_collections v2.3.0
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling secrecy v0.10.3
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling icu_provider v2.3.1
[INFO] [stderr]    Compiling icu_properties v2.3.0
[INFO] [stderr]    Compiling icu_normalizer v2.3.0
[INFO] [stderr]    Compiling idna_adapter v1.2.2
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling publicsuffix v2.3.0
[INFO] [stderr]    Compiling hyper v1.12.0
[INFO] [stderr]    Compiling tokio-util v0.7.20
[INFO] [stderr]    Compiling async-compression v0.4.50
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling rustls-webpki v0.103.15
[INFO] [stderr]    Compiling tokio-stream v0.1.19
[INFO] [stderr]    Compiling cookie_store v0.22.1
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling hyper-util v0.1.21
[INFO] [stderr]    Compiling tokio-rustls v0.26.6
[INFO] [stderr]    Compiling rustls-platform-verifier v0.7.1
[INFO] [stderr]    Compiling tungstenite v0.30.0
[INFO] [stderr]    Compiling hyper-rustls v0.27.10
[INFO] [stderr]    Compiling reqwest v0.13.5
[INFO] [stderr]    Compiling tokio-tungstenite v0.30.0
[INFO] [stderr]    Compiling unifly-api v0.11.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 2m 12s
[INFO] running `Command { std: "docker" "inspect" "53d7d8be21cf03a9eddad02daac3920e65781b0dd72d3057c01441a4920ff318", 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" "53d7d8be21cf03a9eddad02daac3920e65781b0dd72d3057c01441a4920ff318" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling psm v0.1.24
[INFO] [stderr]    Compiling stacker v0.1.25
[INFO] [stderr]    Compiling tokio v1.53.2
[INFO] [stderr]    Compiling futures-util v0.3.34
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling rustix v1.1.5
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling assert-json-diff v2.0.2
[INFO] [stderr]    Compiling console v0.16.6
[INFO] [stderr]    Compiling pest v2.9.3
[INFO] [stderr]    Compiling pest_meta v2.9.3
[INFO] [stderr]    Compiling pest_generator v2.9.3
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling pest_derive v2.9.3
[INFO] [stderr]    Compiling insta v1.49.0
[INFO] [stderr]    Compiling futures-executor v0.3.34
[INFO] [stderr]    Compiling futures v0.3.34
[INFO] [stderr]    Compiling tokio-util v0.7.20
[INFO] [stderr]    Compiling tokio-rustls v0.26.6
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling async-compression v0.4.50
[INFO] [stderr]    Compiling deadpool v0.12.3
[INFO] [stderr]    Compiling tokio-tungstenite v0.30.0
[INFO] [stderr]    Compiling h2 v0.4.20
[INFO] [stderr]    Compiling tokio-stream v0.1.19
[INFO] [stderr]    Compiling tower-http v0.6.11
[INFO] [stderr]    Compiling tokio-test v0.4.6
[INFO] [stderr]    Compiling hyper v1.12.0
[INFO] [stderr]    Compiling hyper-util v0.1.21
[INFO] [stderr]    Compiling hyper-rustls v0.27.10
[INFO] [stderr]    Compiling wiremock v0.6.5
[INFO] [stderr]    Compiling reqwest v0.13.5
[INFO] [stderr]    Compiling unifly-api v0.11.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 3m 11s
[INFO] running `Command { std: "docker" "inspect" "53d7d8be21cf03a9eddad02daac3920e65781b0dd72d3057c01441a4920ff318", 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" "53d7d8be21cf03a9eddad02daac3920e65781b0dd72d3057c01441a4920ff318" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.39s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/unifly_api-3e974339f24c2123)
[INFO] [stdout] 
[INFO] [stdout] running 187 tests
[INFO] [stdout] test auth::tests::cloud_uses_unifi_os_integration_prefix ... ok
[INFO] [stdout] test command::requests::policy::tests::create_firewall_group_request_accepts_members_alias ... ok
[INFO] [stdout] test command::requests::policy::tests::create_firewall_policy_full_filter_spec_still_works ... ok
[INFO] [stdout] test command::requests::policy::tests::update_firewall_group_request_accepts_members_alias ... ok
[INFO] [stdout] test command::requests::ports::tests::deserializes_minimal_entry ... ok
[INFO] [stdout] test command::requests::ports::tests::deserializes_full_entry_via_aliases ... ok
[INFO] [stdout] test command::requests::ports::tests::empty_tagged_array_round_trips_as_clear_intent ... ok
[INFO] [stdout] test command::requests::network::tests::create_wifi_broadcast_request_honors_cli_style_aliases ... ok
[INFO] [stdout] test command::requests::policy::tests::destination_filter_accepts_legacy_port_variant_shape ... ok
[INFO] [stdout] test command::requests::policy::tests::create_firewall_group_request_requires_type ... ok
[INFO] [stdout] test command::requests::policy::tests::create_acl_rule_request_defaults_rule_type ... ok
[INFO] [stdout] test command::requests::policy::tests::destination_filter_accepts_ip_address_with_port_matching_list ... ok
[INFO] [stdout] test command::requests::dns::tests::create_dns_policy_request_reads_ttl_alias ... ok
[INFO] [stdout] test command::requests::vpn::tests::vpn_client_profile_request_defaults_purpose_and_enabled ... ok
[INFO] [stdout] test command::requests::vpn::tests::wireguard_peer_request_preserves_empty_preshared_key ... ok
[INFO] [stdout] test command::requests::policy::tests::create_firewall_group_request_kebab_case_type_alias ... ok
[INFO] [stdout] test command::requests::ports::tests::unknown_field_is_rejected ... ok
[INFO] [stdout] test command::requests::network::tests::create_wifi_broadcast_request_honors_alias_fields ... ok
[INFO] [stdout] test command::requests::vpn::tests::remote_access_request_defaults_purpose_and_enabled ... ok
[INFO] [stdout] test command::requests::traffic::tests::create_traffic_matching_list_defaults_type_and_reads_items_alias ... ok
[INFO] [stdout] test command::requests::policy::tests::ip_matching_list_round_trips ... ok
[INFO] [stdout] test command::requests::vpn::tests::site_to_site_request_defaults_purpose_and_enabled ... ok
[INFO] [stdout] test command::requests::policy::tests::port_group_reference_round_trips_via_port_variant ... ok
[INFO] [stdout] test command::requests::policy::tests::update_acl_rule_request_serializes_type_field ... ok
[INFO] [stdout] test command::requests::ports::tests::reset_entry_serializes_compactly ... ok
[INFO] [stdout] test controller::payloads::dns::tests::dns_create_fields_use_type_specific_schema_keys ... ok
[INFO] [stdout] test controller::payloads::network::tests::parse_ipv4_cidr_accepts_valid_input ... ok
[INFO] [stdout] test controller::payloads::dns::tests::dns_policy_type_names_use_wire_record_tokens ... ok
[INFO] [stdout] test controller::payloads::network::tests::parse_ipv4_cidr_rejects_invalid_prefix ... ok
[INFO] [stdout] test controller::payloads::traffic::tests::build_endpoint_json_ip_with_port_matching_list_emits_traffic_matching_list ... ok
[INFO] [stdout] test controller::payloads::traffic::tests::build_endpoint_json_ip_with_port_nests_port_filter ... ok
[INFO] [stdout] test controller::ports::tests::apply_update_access_mode_keeps_block_all_even_with_tagged_list ... ok
[INFO] [stdout] test controller::ports::tests::apply_update_speed_fixed_disables_autoneg ... ok
[INFO] [stdout] test controller::payloads::traffic::tests::build_endpoint_json_ip_without_port_omits_port_filter ... ok
[INFO] [stdout] test controller::ports::tests::apply_update_trunk_with_tagged_list_marks_custom ... ok
[INFO] [stdout] test controller::payloads::traffic::tests::build_endpoint_json_port_matching_list ... ok
[INFO] [stdout] test controller::payloads::traffic::tests::build_port_filter_json_rejects_invalid_port_number ... ok
[INFO] [stdout] test controller::payloads::dns::tests::from_wire_accepts_every_serde_alias ... ok
[INFO] [stdout] test controller::payloads::traffic::tests::build_port_filter_json_rejects_invalid_port_range ... ok
[INFO] [stdout] test controller::ports::tests::apply_update_speed_auto_omits_speed_field ... ok
[INFO] [stdout] test controller::ports::tests::classify_mode_detects_mirror ... ok
[INFO] [stdout] test controller::ports::tests::entry_is_empty_patch_skips_bare_index_entries ... ok
[INFO] [stdout] test controller::payloads::network::tests::parse_ipv4_cidr_rejects_missing_prefix ... ok
[INFO] [stdout] test controller::ports::tests::entry_to_update_rejects_tagged_all_with_non_empty_list ... ok
[INFO] [stdout] test controller::payloads::network::tests::wifi_create_payload_uses_integration_field_names ... ok
[INFO] [stdout] test controller::ports::tests::build_profile_uses_overrides_before_live_state ... ok
[INFO] [stdout] test controller::ports::tests::apply_update_tagged_list_alone_marks_custom ... ok
[INFO] [stdout] test controller::ports::tests::override_to_entry_access_mode_from_block_all ... ok
[INFO] [stdout] test controller::ports::tests::override_to_entry_pinned_speed_emits_value ... ok
[INFO] [stdout] test controller::ports::tests::apply_update_access_mode_clears_tagged_list ... ok
[INFO] [stdout] test controller::payloads::traffic::tests::full_roundtrip_ip_address_with_port_matching_list ... ok
[INFO] [stdout] test controller::payloads::traffic::tests::traffic_matching_list_items_prefer_raw_payloads ... ok
[INFO] [stdout] test controller::payloads::network::tests::wifi_frequency_values_avoid_f32_precision_artifacts ... ok
[INFO] [stdout] test controller::query::reference::tests::field_string_list_accepts_scalar_and_array_values ... ok
[INFO] [stdout] test controller::ports::tests::parse_speed_autoneg_beats_explicit ... ok
[INFO] [stdout] test controller::ports::tests::entry_to_update_rejects_invalid_strings ... ok
[INFO] [stdout] test controller::ports::tests::override_to_entry_round_trips_basic_fields ... ok
[INFO] [stdout] test controller::ports::tests::override_to_entry_drops_empty_list_for_auto_trunks ... ok
[INFO] [stdout] test controller::payloads::traffic::tests::build_endpoint_json_ip_matching_list ... ok
[INFO] [stdout] test controller::refresh::carry::tests::failed_session_clients_fetch_carries_merged_fields ... ok
[INFO] [stdout] test controller::refresh::carry::tests::failed_session_users_fetch_carries_reservation ... ok
[INFO] [stdout] test controller::query::reference::tests::parse_vpn_tunnel_combines_subnet_aliases ... ok
[INFO] [stdout] test controller::session_queries::common::tests::redact_sensitive_value_masks_nested_vpn_secrets ... ok
[INFO] [stdout] test controller::refresh::optional::tests::errors_keep_last_known_data ... ok
[INFO] [stdout] test controller::session_queries::vpn::tests::get_vpn_health_reads_cached_store_snapshot ... ok
[INFO] [stdout] test controller::ports::tests::override_to_entry_preserves_empty_custom_trunk_tagged_list ... ok
[INFO] [stdout] test controller::ports::tests::classify_mode_detects_access_and_trunk ... ok
[INFO] [stdout] test controller::query::reference::tests::parse_integration_entity_id_falls_back_to_legacy_unknown ... ok
[INFO] [stdout] test controller::query::reference::tests::parse_integration_entity_id_prefers_valid_uuid ... ok
[INFO] [stdout] test controller::refresh::optional::tests::not_found_keeps_last_known_data ... ok
[INFO] [stdout] test controller::query::reference::tests::parse_vpn_server_uses_fallback_fields ... ok
[INFO] [stdout] test controller::refresh::carry::tests::failed_session_devices_fetch_carries_merged_fields ... ok
[INFO] [stdout] test controller::refresh::optional::tests::success_is_authoritative_even_when_empty ... ok
[INFO] [stdout] test controller::refresh::carry::tests::connection_type_change_drops_link_fields ... ok
[INFO] [stdout] test controller::session_queries::settings::tests::vpn_setting_from_raw_filters_to_known_keys ... ok
[INFO] [stdout] test controller::refresh::merge::tests::hybrid_clients_take_the_session_network_name ... ok
[INFO] [stdout] test controller::session_queries::vpn::tests::magic_site_to_site_vpn_config_from_raw_maps_v2_record ... ok
[INFO] [stdout] test controller::refresh::carry::tests::fresh_values_win_and_successful_fetches_carry_nothing ... ok
[INFO] [stdout] test controller::session_queries::vpn::tests::remote_access_vpn_server_from_raw_maps_legacy_networkconf_record ... ok
[INFO] [stdout] test controller::session_queries::vpn::tests::site_to_site_vpn_from_raw_maps_legacy_networkconf_record ... ok
[INFO] [stdout] test controller::session_queries::vpn::tests::vpn_client_connection_from_raw_maps_v2_record ... ok
[INFO] [stdout] test controller::session_queries::vpn::tests::vpn_client_profile_from_raw_maps_legacy_networkconf_record ... ok
[INFO] [stdout] test controller::support::tests::case_insensitive_name_match_against_single_site_succeeds ... ok
[INFO] [stdout] test controller::session_queries::vpn::tests::wireguard_peer_from_raw_maps_legacy_v2_record ... ok
[INFO] [stdout] test controller::support::tests::matches_known_uuid_returns_canonical_slug ... ok
[INFO] [stdout] test controller::support::tests::no_match_returns_not_found_with_full_candidate_list ... ok
[INFO] [stdout] test controller::support::tests::unmatched_uuid_falls_through_to_not_found ... ok
[INFO] [stdout] test convert::client::tests::channel_frequency_bands ... ok
[INFO] [stdout] test convert::client::tests::session_client_carries_its_network_name ... ok
[INFO] [stdout] test convert::client::tests::wired_session_client_carries_switch_port ... ok
[INFO] [stdout] test controller::support::tests::duplicate_display_names_return_ambiguous ... ok
[INFO] [stdout] test controller::support::tests::exact_slug_match_wins_over_case_insensitive_name_collision ... ok
[INFO] [stdout] test convert::device::tests::session_device_carries_a_wireless_uplink_medium ... ok
[INFO] [stdout] test convert::device::tests::session_device_carries_wired_uplink_mac_and_remote_port ... ok
[INFO] [stdout] test convert::client::tests::wireless_session_client_drops_switch_port ... ok
[INFO] [stdout] test convert::event::tests::event_category_mapping ... ok
[INFO] [stdout] test convert::dns::tests::integration_dns_policy_extracts_value_for_every_record_type ... ok
[INFO] [stdout] test convert::device::tests::device_type_from_legacy_type_field ... ok
[INFO] [stdout] test convert::device::tests::session_device_with_no_uplink_block_has_none ... ok
[INFO] [stdout] test convert::device::tests::device_state_mapping ... ok
[INFO] [stdout] test convert::firewall::tests::acl_rule_keeps_its_evaluation_index ... ok
[INFO] [stdout] test convert::dns::tests::integration_dns_policy_skips_unknown_record_types ... ok
[INFO] [stdout] test convert::device::tests::device_type_from_model_fallback ... ok
[INFO] [stdout] test convert::device::tests::legacy_device_falls_back_to_mac_when_id_missing ... ok
[INFO] [stdout] test convert::dns::tests::integration_dns_policy_accepts_legacy_short_type_names ... ok
[INFO] [stdout] test convert::dns::tests::integration_dns_policy_uses_type_specific_fields ... ok
[INFO] [stdout] test convert::firewall::tests::firewall_group_from_session_parses_address_group ... ok
[INFO] [stdout] test convert::firewall::tests::firewall_group_from_session_defaults_to_port_group ... ok
[INFO] [stdout] test convert::firewall::tests::firewall_group_from_session_handles_empty_members ... ok
[INFO] [stdout] test convert::device::tests::integration_device_type_gateway_by_model ... ok
[INFO] [stdout] test convert::firewall::tests::firewall_group_from_session_parses_port_group ... ok
[INFO] [stdout] test convert::firewall::tests::firewall_group_from_session_returns_none_without_id ... ok
[INFO] [stdout] test convert::firewall::tests::firewall_group_from_session_returns_none_without_name ... ok
[INFO] [stdout] test convert::nat::tests::v2_nat_rule_keeps_its_rule_index ... ok
[INFO] [stdout] test convert::firewall::tests::firewall_policy_without_id_synthesizes_legacy_id ... ok
[INFO] [stdout] test convert::wifi::tests::integration_wifi_broadcast_preserves_standard_fields ... ok
[INFO] [stdout] test core_error::tests::site_ambiguous_lists_matches_and_recommends_slug ... ok
[INFO] [stdout] test core_error::tests::site_not_found_renders_with_no_candidates ... ok
[INFO] [stdout] test error::tests::session_api_http_404_counts_as_not_found ... ok
[INFO] [stdout] test integration::types::policy::tests::port_filter_accepts_value_alias_and_numeric_ports ... ok
[INFO] [stdout] test integration::types::policy::tests::port_item_range_deserializes_from_spec_start_stop_fields ... ok
[INFO] [stdout] test integration::types::policy::tests::ip_address_item_tolerates_unknown_type ... ok
[INFO] [stdout] test model::entity_id::tests::entity_id_display ... ok
[INFO] [stdout] test core_error::tests::site_not_found_lists_available_sites ... ok
[INFO] [stdout] test model::entity_id::tests::entity_id_from_uuid_string ... ok
[INFO] [stdout] test model::entity_id::tests::entity_id_from_str ... ok
[INFO] [stdout] test model::entity_id::tests::mac_address_from_str ... ok
[INFO] [stdout] test convert::site::tests::legacy_site_falls_back_to_name_when_desc_empty ... ok
[INFO] [stdout] test model::entity_id::tests::mac_address_normalizes_case ... ok
[INFO] [stdout] test convert::site::tests::legacy_site_uses_desc_as_display_name ... ok
[INFO] [stdout] test convert::supporting::tests::integration_traffic_matching_list_formats_structured_items ... ok
[INFO] [stdout] test model::entity_id::tests::mac_address_normalizes_bare_hex ... ok
[INFO] [stdout] test integration::types::policy::tests::port_item_range_deserializes_from_port_range_alias ... ok
[INFO] [stdout] test error::tests::session_api_not_found_code_counts_as_not_found ... ok
[INFO] [stdout] test integration::types::policy::tests::port_item_range_serializes_as_port_number_range ... ok
[INFO] [stdout] test integration::types::policy::tests::ip_address_filter_accepts_specific_alias ... ok
[INFO] [stdout] test model::entity_id::tests::entity_id_from_legacy_string ... ok
[INFO] [stdout] test model::entity_id::tests::mac_address_normalizes_dashes ... ok
[INFO] [stdout] test model::entity_id::tests::mac_address_normalizes_dotted_groups ... ok
[INFO] [stdout] test model::entity_id::tests::mac_address_parse_rejects_invalid_input ... ok
[INFO] [stdout] test session::models::tests::session_device_treats_null_tables_as_empty ... ok
[INFO] [stdout] test session::session_cache::tests::expired_session_returns_none ... ok
[INFO] [stdout] test session::models::tests::session_device_tolerates_auto_channel_and_string_numbers ... ok
[INFO] [stdout] test session::client::tests::cookieless_relogin_does_not_advance_the_generation ... ok
[INFO] [stdout] test session::session_cache::tests::jwt_expiry_returns_none_for_garbage ... ok
[INFO] [stdout] test session::session_cache::tests::session_cache_round_trips ... ok
[INFO] [stdout] test session::session_cache::tests::simple_hash_is_deterministic ... ok
[INFO] [stdout] test session::session_cache::tests::jwt_expiry_parses_valid_token ... ok
[INFO] [stdout] test session::totp::tests::debug_output_never_shows_a_code ... ok
[INFO] [stdout] test session::totp::tests::only_six_ascii_digits_pass_as_a_code ... ok
[INFO] [stdout] test store::collection::tests::snapshot_reflects_current_state ... ok
[INFO] [stdout] test store::collection::tests::remove_cleans_up_indexes ... ok
[INFO] [stdout] test store::collection::tests::clear_empties_everything ... ok
[INFO] [stdout] test store::collection::tests::batch_defers_snapshot_broadcast_until_outer_guard_drops ... ok
[INFO] [stdout] test store::collection::tests::get_by_key_and_id ... ok
[INFO] [stdout] test store::collection::tests::upsert_returns_true_for_new_key ... ok
[INFO] [stdout] test store::collection::tests::upsert_with_changed_id_cleans_old_mapping ... ok
[INFO] [stdout] test store::refresh::tests::event_snapshot_keeps_distinct_id_less_events_with_same_timestamp ... ok
[INFO] [stdout] test store::refresh::tests::sync_collection_skips_failed_fetch_and_prunes_authoritative_empty ... ok
[INFO] [stdout] test store::refresh::tests::upsert_and_prune_batches_snapshot_updates ... ok
[INFO] [stdout] test store::collection::tests::upsert_returns_false_for_existing_key ... ok
[INFO] [stdout] test store::refresh::tests::failed_optional_fetches_keep_last_known_entries ... ok
[INFO] [stdout] test websocket::parser::tests::deserialize_unifi_event ... ok
[INFO] [stdout] test session::client::tests::stale_expiry_after_a_renewal_reuses_the_new_session ... ok
[INFO] [stdout] test websocket::parser::tests::deserialize_unifi_event_msg_alias ... ok
[INFO] [stdout] test websocket::parser::tests::device_sync_extracts_stats_and_tolerates_string_numbers ... ok
[INFO] [stdout] test websocket::parser::tests::device_sync_merge_keeps_fields_a_partial_frame_omits ... ok
[INFO] [stdout] test websocket::parser::tests::device_sync_merge_lets_a_newer_spelling_replace_an_older_one ... ok
[INFO] [stdout] test websocket::parser::tests::parse_and_broadcast_malformed_json ... ok
[INFO] [stdout] test websocket::parser::tests::parse_event_from_raw_json ... ok
[INFO] [stdout] test websocket::parser::tests::parse_and_broadcast_sync_message ... ok
[INFO] [stdout] test store::collection::tests::update_existing_rewrites_present_keys_and_skips_absent_ones ... ok
[INFO] [stdout] test websocket::parser::tests::parse_sync_event_from_raw_json ... ok
[INFO] [stdout] test websocket::runtime::tests::default_reconnect_config ... ok
[INFO] [stdout] test websocket::runtime::tests::backoff_caps_at_max_delay ... ok
[INFO] [stdout] test websocket::runtime::tests::backoff_increases_exponentially ... ok
[INFO] [stdout] test websocket::parser::tests::parse_and_broadcast_events_message ... ok
[INFO] [stdout] test session::totp::tests::a_panicking_provider_is_reported_without_its_payload ... ok
[INFO] [stdout] test session::client::tests::unauthorized_cookie_client_reports_session_expired ... ok
[INFO] [stdout] test session::client::tests::unauthorized_api_key_client_reports_invalid_api_key ... ok
[INFO] [stdout] test controller::subscriptions::tests::api_key_session_client_has_session_access_but_not_live_event_access ... ok
[INFO] [stdout] test session::client::tests::successful_relogin_does_not_arm_the_failure_cooldown ... ok
[INFO] [stdout] test session::client::tests::provider_without_a_code_sends_no_login_and_arms_the_cooldown ... ok
[INFO] [stdout] test controller::subscriptions::tests::cookie_session_client_has_live_event_access ... ok
[INFO] [stdout] test session::client::tests::expired_mutation_reauthenticates_without_replaying ... ok
[INFO] [stdout] test session::client::tests::mfa_challenge_without_a_provider_drops_the_credentials ... ok
[INFO] [stdout] test session::client::tests::failed_relogin_cooldown_starts_after_the_login_completes ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 187 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/controller_runtime_test.rs (/opt/rustwide/target/release/deps/controller_runtime_test-a1b2e4885bea13bc)
[INFO] [stdout] 
[INFO] [stdout] running 18 tests
[INFO] [stdout] test legacy_401_without_cookie_jar_reports_invalid_api_key ... ok
[INFO] [stdout] test legacy_401_with_cookie_jar_reports_session_expired ... ok
[INFO] [stdout] test static_totp_session_does_not_relogin ... ok
[INFO] [stdout] test api_key_legacy_raw_mutations_skip_csrf_header ... ok
[INFO] [stdout] test provider_backed_mfa_session_renews_with_a_fresh_code ... ok
[INFO] [stdout] test api_key_mode_reports_unsupported_when_integration_api_missing ... ok
[INFO] [stdout] test websocket_enabled_for_events_watch_path ... ok
[INFO] [stdout] test legacy_only_site_listing_remains_available ... ok
[INFO] [stdout] test session_only_refresh_keeps_nat_and_groups_when_fetch_fails ... ok
[INFO] [stdout] test failed_network_detail_fetch_keeps_the_network ... ok
[INFO] [stdout] test legacy_mode_rejects_integration_only_surfaces_clearly ... ok
[INFO] [stdout] test api_key_mode_treats_missing_event_endpoint_as_empty ... ok
[INFO] [stdout] test create_dns_policy_returns_created_entity ... ok
[INFO] [stdout] test api_key_mode_has_legacy_and_integration_access ... ok
[INFO] [stdout] test failed_session_merge_fetches_keep_merged_fields ... ok
[INFO] [stdout] test failed_optional_fetches_keep_last_known_collections ... ok
[INFO] [stdout] test totp_provider_is_not_run_without_an_mfa_challenge ... ok
[INFO] [stdout] test full_refresh_does_not_rebroadcast_duplicate_legacy_events ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.30s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/integration_client_test.rs (/opt/rustwide/target/release/deps/integration_client_test-e5581a9b8c127f69)
[INFO] [stdout] 
[INFO] [stdout] running 23 tests
[INFO] [stdout] test test_list_firewall_policies_accepts_legacy_policy_without_id ... ok
[INFO] [stdout] test test_get_device ... ok
[INFO] [stdout] test test_cloud_error_403_maps_access_denied ... ok
[INFO] [stdout] test test_cloud_error_408_maps_console_offline ... ok
[INFO] [stdout] test test_error_500_server_error ... ok
[INFO] [stdout] test test_get_firewall_policy_ordering_uses_zone_pair_query_params ... ok
[INFO] [stdout] test test_error_404_not_found ... ok
[INFO] [stdout] test test_list_firewall_policies_survives_spec_port_range_and_bad_items ... ok
[INFO] [stdout] test test_error_422_validation ... ok
[INFO] [stdout] test test_pagination_empty_page ... ok
[INFO] [stdout] test test_cloud_connector_routes_integration_requests_through_proxy_path ... ok
[INFO] [stdout] test test_cloud_error_429_uses_retry_after_header ... ok
[INFO] [stdout] test test_list_pending_devices_uses_spec_path ... ok
[INFO] [stdout] test test_set_firewall_policy_ordering_uses_zone_pair_query_params ... ok
[INFO] [stdout] test test_error_401_unauthorized ... ok
[INFO] [stdout] test test_list_dpi_categories_uses_global_path ... ok
[INFO] [stdout] test test_list_dpi_applications_uses_global_path ... ok
[INFO] [stdout] test test_list_device_tags_uses_spec_path ... ok
[INFO] [stdout] test test_list_sites_pagination ... ok
[INFO] [stdout] test test_delete_firewall_policy ... ok
[INFO] [stdout] test test_paginate_all_advances_past_dropped_items ... ok
[INFO] [stdout] test test_create_network ... ok
[INFO] [stdout] test test_list_vpn_tunnels_uses_spec_path ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/session_client_test.rs (/opt/rustwide/target/release/deps/session_client_test-05dff1768ca836f4)
[INFO] [stdout] 
[INFO] [stdout] running 41 tests
[INFO] [stdout] test detect_platform_treats_dual_401_login_probes_as_unifi_os ... ok
[INFO] [stdout] test detect_platform_prefers_classic_login_probe ... ok
[INFO] [stdout] test detect_platform_falls_back_to_unifi_os_when_classic_path_missing ... ok
[INFO] [stdout] test provider_repeating_the_spent_code_sends_no_login ... ok
[INFO] [stdout] test relogin_with_cookie_jar_replaces_stale_cookie_and_retries ... ok
[INFO] [stdout] test relogin_that_returns_no_cookie_is_treated_as_failure ... ok
[INFO] [stdout] test expired_cookie_session_without_credentials_surfaces_error ... ok
[INFO] [stdout] test test_list_devices ... ok
[INFO] [stdout] test test_delete_wireguard_peers ... ok
[INFO] [stdout] test test_list_all_wireguard_peers ... ok
[INFO] [stdout] test provider_backed_relogin_completes_the_mfa_challenge_with_a_fresh_code ... ok
[INFO] [stdout] test test_get_openvpn_port_suggestions ... ok
[INFO] [stdout] test test_get_client_wifi_experience ... ok
[INFO] [stdout] test failed_relogin_is_rate_limited ... ok
[INFO] [stdout] test test_list_nat_rules_rejects_non_array_body ... ok
[INFO] [stdout] test test_download_openvpn_configuration ... ok
[INFO] [stdout] test test_list_vpn_client_connections ... ok
[INFO] [stdout] test test_list_rogue_aps_with_within_param ... ok
[INFO] [stdout] test test_list_rogue_aps ... ok
[INFO] [stdout] test test_mfa_challenge_without_totp_returns_two_factor_required ... ok
[INFO] [stdout] test test_create_wireguard_peers ... ok
[INFO] [stdout] test test_mfa_rejects_invalid_totp_format ... ok
[INFO] [stdout] test test_list_events ... ok
[INFO] [stdout] test test_list_channels ... ok
[INFO] [stdout] test test_legacy_api_error ... ok
[INFO] [stdout] test expired_cookie_session_relogs_in_and_retries_once ... ok
[INFO] [stdout] test test_unauthorized_with_cookie_jar_reports_session_expired ... ok
[INFO] [stdout] test test_list_magic_site_to_site_vpn_configs ... ok
[INFO] [stdout] test test_mfa_login_with_valid_totp_succeeds ... ok
[INFO] [stdout] test test_login_success ... ok
[INFO] [stdout] test test_get_client_roams ... ok
[INFO] [stdout] test test_list_ipsec_sa ... ok
[INFO] [stdout] test test_unauthorized_without_cookie_jar_reports_invalid_api_key ... ok
[INFO] [stdout] test test_update_wireguard_peers ... ok
[INFO] [stdout] test test_get_wireguard_peer_existing_subnets ... ok
[INFO] [stdout] test test_list_events_with_limit ... ok
[INFO] [stdout] test test_list_ipsec_sa_404_returns_empty ... ok
[INFO] [stdout] test test_list_nat_rules ... ok
[INFO] [stdout] test test_login_failure ... ok
[INFO] [stdout] test test_list_wireguard_peers ... ok
[INFO] [stdout] test test_restart_vpn_client_connection ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 41 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.35s
[INFO] [stdout] 
[INFO] [stderr]      Running tests/site_manager_client_test.rs (/opt/rustwide/target/release/deps/site_manager_client_test-21459c4b150a3ffe)
[INFO] [stdout] 
[INFO] [stdout] running 5 tests
[INFO] [stdout] test test_get_host_accepts_single_object_payload ... ok
[INFO] [stdout] test test_list_devices_passes_host_filter ... ok
[INFO] [stdout] test test_query_isp_metrics_posts_site_ids_and_status ... ok
[INFO] [stdout] test test_rate_limit_maps_retry_after_header ... ok
[INFO] [stdout] test test_list_hosts_paginates_with_next_token ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests unifly_api
[INFO] [stdout] 
[INFO] [stdout] running 1 test
[INFO] [stdout] test src/websocket.rs - websocket (line 9) ... ignored
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.33s; merged doctests compilation took 0.33s
[INFO] running `Command { std: "docker" "inspect" "53d7d8be21cf03a9eddad02daac3920e65781b0dd72d3057c01441a4920ff318", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "53d7d8be21cf03a9eddad02daac3920e65781b0dd72d3057c01441a4920ff318", kill_on_drop: false }`
[INFO] [stdout] 53d7d8be21cf03a9eddad02daac3920e65781b0dd72d3057c01441a4920ff318
