[INFO] cloning repository https://github.com/anhtran81/openrouter [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/anhtran81/openrouter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fanhtran81%2Fopenrouter", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fanhtran81%2Fopenrouter'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b1837a69b209f6a0006a2de6ca7003227df705ab [INFO] testing anhtran81/openrouter against beta-2026-04-21 for beta-1.96-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fanhtran81%2Fopenrouter" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/anhtran81/openrouter [INFO] finished tweaking git repo https://github.com/anhtran81/openrouter [INFO] tweaked toml for git repo https://github.com/anhtran81/openrouter written to /workspace/builds/worker-7-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/anhtran81/openrouter on toolchain beta-2026-04-21 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/anhtran81/openrouter 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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 5c77dc75680c5c12412e9c0756d51f7cf3d4ec875de778309ae001d7ffd260fb [INFO] running `Command { std: "docker" "start" "-a" "5c77dc75680c5c12412e9c0756d51f7cf3d4ec875de778309ae001d7ffd260fb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5c77dc75680c5c12412e9c0756d51f7cf3d4ec875de778309ae001d7ffd260fb", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5c77dc75680c5c12412e9c0756d51f7cf3d4ec875de778309ae001d7ffd260fb", kill_on_drop: false }` [INFO] [stdout] 5c77dc75680c5c12412e9c0756d51f7cf3d4ec875de778309ae001d7ffd260fb [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] d5ca765f9f138d2a07bfc12c3a48a81312ad49f922e390f187d6b0b87e94791d [INFO] running `Command { std: "docker" "start" "-a" "d5ca765f9f138d2a07bfc12c3a48a81312ad49f922e390f187d6b0b87e94791d", kill_on_drop: false }` [INFO] [stderr] Compiling unicode-ident v1.0.24 [INFO] [stderr] Compiling libc v0.2.183 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling pin-project-lite v0.2.17 [INFO] [stderr] Compiling bytes v1.11.1 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling scopeguard v1.2.0 [INFO] [stderr] Compiling lock_api v0.4.14 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling futures-io v0.3.32 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling anyhow v1.0.102 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling itoa v1.0.17 [INFO] [stderr] Compiling itertools v0.14.0 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling tower-service v0.3.3 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling prettyplease v0.2.37 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling atomic-waker v1.1.2 [INFO] [stderr] Compiling try-lock v0.2.5 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling pulldown-cmark v0.13.1 [INFO] [stderr] Compiling unicase v2.9.0 [INFO] [stderr] Compiling want v0.3.1 [INFO] [stderr] Compiling foldhash v0.1.5 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling httpdate v1.0.3 [INFO] [stderr] Compiling pin-utils v0.1.0 [INFO] [stderr] Compiling paste v1.0.15 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling tower-layer v0.3.3 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling unicode-segmentation v1.12.0 [INFO] [stderr] Compiling fixedbitset v0.5.7 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling mime v0.3.17 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling autocfg v1.5.0 [INFO] [stderr] Compiling axum-core v0.5.6 [INFO] [stderr] Compiling pulldown-cmark-to-cmark v22.0.0 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling petgraph v0.8.3 [INFO] [stderr] Compiling convert_case v0.10.0 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling matchit v0.8.4 [INFO] [stderr] Compiling cfg_aliases v0.2.1 [INFO] [stderr] Compiling rustversion v1.0.22 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling multimap v0.10.1 [INFO] [stderr] Compiling nix v0.30.1 [INFO] [stderr] Compiling netlink-packet-core v0.8.1 [INFO] [stderr] Compiling tonic-build v0.14.5 [INFO] [stderr] Compiling tokio-macros v2.6.1 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling prost-derive v0.14.3 [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling prost v0.14.3 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling pin-project-internal v1.1.11 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling prost-types v0.14.3 [INFO] [stderr] Compiling derive_more-impl v2.1.1 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling pin-project v1.1.11 [INFO] [stderr] Compiling base64 v0.22.1 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling prost-build v0.14.3 [INFO] [stderr] Compiling litrs v1.0.0 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling derive_more v2.1.1 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling document-features v0.2.12 [INFO] [stderr] Compiling tonic-prost-build v0.14.5 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling vte v0.14.1 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Compiling openrouter v1.0.0 (/opt/rustwide/workdir) [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling crossterm v0.29.0 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling strip-ansi-escapes v0.2.1 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling netlink-sys v0.8.8 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling netlink-proto v0.12.0 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling fd-lock v4.0.4 [INFO] [stderr] Compiling netlink-packet-route v0.28.0 [INFO] [stderr] Compiling axum v0.8.8 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling itertools v0.13.0 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling unicode-width v0.2.2 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling minimal-lexical v0.2.1 [INFO] [stderr] Compiling strum v0.26.3 [INFO] [stderr] Compiling ipnet v2.12.0 [INFO] [stderr] Compiling iptrie v0.11.1 [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling tracing-subscriber v0.3.23 [INFO] [stderr] Compiling reedline v0.46.0 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling ipnetwork v0.20.0 [INFO] [stderr] Compiling similar v2.7.0 [INFO] [stderr] Compiling hyper-timeout v0.5.2 [INFO] [stderr] Compiling tonic v0.14.5 [INFO] [stderr] Compiling rtnetlink v0.20.0 [INFO] [stderr] Compiling tonic-prost v0.14.5 [INFO] [stderr] Compiling tonic-reflection v0.14.5 [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 32s [INFO] running `Command { std: "docker" "inspect" "d5ca765f9f138d2a07bfc12c3a48a81312ad49f922e390f187d6b0b87e94791d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d5ca765f9f138d2a07bfc12c3a48a81312ad49f922e390f187d6b0b87e94791d", kill_on_drop: false }` [INFO] [stdout] d5ca765f9f138d2a07bfc12c3a48a81312ad49f922e390f187d6b0b87e94791d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4ae688aa24b5218be4b45d1b153c4197f2c5514b1812c92ce8423cf57dded8c3 [INFO] running `Command { std: "docker" "start" "-a" "4ae688aa24b5218be4b45d1b153c4197f2c5514b1812c92ce8423cf57dded8c3", kill_on_drop: false }` [INFO] [stderr] Compiling tokio v1.50.0 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling predicates-core v1.0.10 [INFO] [stderr] Compiling termtree v0.5.1 [INFO] [stderr] Compiling mockall_derive v0.12.1 [INFO] [stderr] Compiling fragile v2.0.1 [INFO] [stderr] Compiling predicates-tree v1.0.13 [INFO] [stderr] Compiling predicates v3.1.4 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling downcast v0.11.0 [INFO] [stderr] Compiling prost-build v0.14.3 [INFO] [stderr] Compiling tonic-prost-build v0.14.5 [INFO] [stderr] Compiling openrouter v1.0.0 (/opt/rustwide/workdir) [INFO] [stderr] Compiling mockall v0.12.1 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling tokio-stream v0.1.18 [INFO] [stderr] Compiling netlink-sys v0.8.8 [INFO] [stderr] Compiling netlink-proto v0.12.0 [INFO] [stderr] Compiling rtnetlink v0.20.0 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling axum v0.8.8 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling hyper-timeout v0.5.2 [INFO] [stderr] Compiling tonic v0.14.5 [INFO] [stderr] Compiling tonic-prost v0.14.5 [INFO] [stderr] Compiling tonic-reflection v0.14.5 [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 55s [INFO] running `Command { std: "docker" "inspect" "4ae688aa24b5218be4b45d1b153c4197f2c5514b1812c92ce8423cf57dded8c3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4ae688aa24b5218be4b45d1b153c4197f2c5514b1812c92ce8423cf57dded8c3", kill_on_drop: false }` [INFO] [stdout] 4ae688aa24b5218be4b45d1b153c4197f2c5514b1812c92ce8423cf57dded8c3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 48be7b1e4c659982945abf1a72b8b5923b5603c93368c97744447404b6343e0a [INFO] running `Command { std: "docker" "start" "-a" "48be7b1e4c659982945abf1a72b8b5923b5603c93368c97744447404b6343e0a", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.37s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/openrouter-5cd0f07fbd5150c7) [INFO] [stdout] [INFO] [stdout] running 685 tests [INFO] [stdout] test bfd::packet::tests::test_decode_length_field_validation ... ok [INFO] [stdout] test bfd::manager::tests::test_bfd_event_variants_compile ... ok [INFO] [stdout] test bfd::manager::tests::test_bfd_jitter_range ... ok [INFO] [stdout] test bfd::packet::tests::test_decode_rejects_short_buffer ... ok [INFO] [stdout] test bfd::manager::tests::test_bfd_jitter_zero_seed ... ok [INFO] [stdout] test bfd::manager::tests::test_bfd_jitter_varies ... ok [INFO] [stdout] test bfd::packet::tests::test_encode_decode_roundtrip ... ok [INFO] [stdout] test bfd::packet::tests::test_decode_rejects_wrong_version ... ok [INFO] [stdout] test bfd::packet::tests::test_encode_poll_final_bits ... ok [INFO] [stdout] test bfd::packet::tests::test_encode_state_bits ... ok [INFO] [stdout] test bfd::session::tests::test_agreed_tx_interval ... ok [INFO] [stdout] test bfd::session::tests::test_make_control_packet_reflects_state ... ok [INFO] [stdout] test bfd::session::tests::test_detection_time ... ok [INFO] [stdout] test bfd::session::tests::test_state_machine_admin_down_no_transition ... ok [INFO] [stdout] test bfd::session::tests::test_bfd_state_wire_roundtrip ... ok [INFO] [stdout] test bfd::manager::tests::test_bfd_command_variants_compile ... ok [INFO] [stdout] test bfd::session::tests::test_state_machine_down_down_goes_init ... ok [INFO] [stdout] test bfd::session::tests::test_state_machine_init_init_goes_up ... ok [INFO] [stdout] test bfd::manager::tests::test_bfd_peer_info_collection ... ok [INFO] [stdout] test bfd::session::tests::test_state_machine_init_up_goes_up ... ok [INFO] [stdout] test bfd::session::tests::test_state_machine_up_down_goes_down ... ok [INFO] [stdout] test bgp::attributes::tests::attr_flags_bitflags ... ok [INFO] [stdout] test bgp::attributes::tests::cluster_list_type_code_is_10 ... ok [INFO] [stdout] test bgp::attributes::tests::originator_id_type_code_is_9 ... ok [INFO] [stdout] test bgp::attributes::tests::origin_ordering ... ok [INFO] [stdout] test bgp::capabilities::tests::add_path_code69_non_divisible_by_4_is_skipped ... ok [INFO] [stdout] test bgp::capabilities::tests::add_path_single_entry_round_trips ... ok [INFO] [stdout] test bgp::capabilities::tests::add_path_encode_ipv4_send_only ... ok [INFO] [stdout] test bgp::capabilities::tests::add_path_two_entries_round_trip ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_customer_encodes_to_3 ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_all_values_round_trip ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_peer_encodes_to_4 ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_provider_encodes_to_0 ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_rs_client_encodes_to_2 ... ok [INFO] [stdout] test bgp::capabilities::tests::gr_two_afi_tuples_encode_decode ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_unknown_value_is_skipped ... ok [INFO] [stdout] test bgp::attributes::tests::community_constants_are_correct ... ok [INFO] [stdout] test bgp::attributes::tests::as_path_length_set_only ... ok [INFO] [stdout] test bgp::capabilities::tests::test_enhanced_route_refresh_parsed ... ok [INFO] [stdout] test bgp::attributes::tests::as_path_length_mixed ... ok [INFO] [stdout] test bgp::capabilities::tests::test_enhanced_route_refresh_encoded ... ok [INFO] [stdout] test bgp::capabilities::tests::test_four_octet_asn_parsed ... ok [INFO] [stdout] test bgp::attributes::tests::as_path_length_sequence_only ... ok [INFO] [stdout] test bgp::capabilities::tests::test_gr_capability_with_n_bit ... ok [INFO] [stdout] test bgp::capabilities::tests::test_gr_capability_with_restart_bit ... ok [INFO] [stdout] test bgp::capabilities::tests::test_gr_capability_encoded ... ok [INFO] [stdout] test bgp::capabilities::tests::test_gr_capability_encoded_with_n_bit ... ok [INFO] [stdout] test bgp::capabilities::tests::test_encode_four_octet_asn ... ok [INFO] [stdout] test bgp::capabilities::tests::test_gr_with_r_and_n_bits ... ok [INFO] [stdout] test bgp::capabilities::tests::test_gr_capability_parsed ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_rs_encodes_to_1 ... ok [INFO] [stdout] test bgp::capabilities::tests::test_route_refresh_parsed ... ok [INFO] [stdout] test bgp::capabilities::tests::test_unknown_cap_silently_ignored ... ok [INFO] [stdout] test bgp::codec::tests::test_decode_invalid_marker ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_ipv4_only_gr_no_ipv6_afi ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_ipv4_only_no_ipv6_cap ... ok [INFO] [stdout] test bgp::codec::tests::test_decode_too_short ... ok [INFO] [stdout] test bgp::codec::tests::test_decode_invalid_length_too_large ... ok [INFO] [stdout] test bgp::codec::tests::test_decode_invalid_length_too_small ... ok [INFO] [stdout] test bgp::codec::tests::test_decode_keepalive ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_ipv6_capability_order ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_includes_bgp_role_when_configured ... ok [INFO] [stdout] test bgp::codec::tests::test_encode_keepalive ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_ipv6_always_includes_ipv4_mp ... ok [INFO] [stdout] test bgp::codec::tests::test_decode_partial_message ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_ipv6_gr_includes_ipv6_afi ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_ipv6_includes_mp_ext ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_omits_bgp_role_when_not_configured ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_with_add_path_both_includes_dir3 ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_without_add_path_has_no_capability ... ok [INFO] [stdout] test bgp::fsm::tests::compatible_role_rs_rs_client ... ok [INFO] [stdout] test bgp::fsm::tests::compatible_role_provider_customer ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_connect_retry_on_tcp_fail ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_connect_tcp_established ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_with_add_path_send_only_includes_capability ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_with_add_path_and_ipv6_includes_both_afis ... ok [INFO] [stdout] test bgp::fsm::tests::compatible_role_peer_peer ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_established_keepalive_resets_hold ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_established_unexpected_open ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_hold_time_negotiation_min ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_hold_time_negotiation_local_lower ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_idle_manual_start ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_invalid_open_hold_time ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_manual_stop_from_idle ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_keepalive_timer_expired ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_openconfirm_keepalive ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_manual_stop_from_established ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_openconfirm_unexpected_update ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_opensent_valid_open ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_send_hold_timer_duration_8min_floor ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_send_hold_timer_duration_double_hold ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_hold_time_zero_disables_keepalive ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_notify_msg_any_state ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_send_hold_timer_expired ... ok [INFO] [stdout] test bgp::fsm::tests::gr_normal_startup_no_r_bit ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_opensent_unexpected_keepalive ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_hold_timer_expired_established ... ok [INFO] [stdout] test bgp::fsm::tests::gr_restarting_r_bit_set_when_is_restarting_true ... ok [INFO] [stdout] test bgp::fsm::tests::incompatible_role_customer_customer ... ok [INFO] [stdout] test bgp::fsm::tests::incompatible_role_provider_provider ... ok [INFO] [stdout] test bgp::fsm::tests::peer_supports_ipv6_absent_from_open ... ok [INFO] [stdout] test bgp::fsm::tests::incompatible_role_provider_peer ... ok [INFO] [stdout] test bgp::fsm::tests::peer_supports_ipv6_set_from_open ... ok [INFO] [stdout] test bgp::fsm::tests::test_peer_info_gr_fields ... ok [INFO] [stdout] test bgp::fsm::tests::test_gr_and_err_in_open ... ok [INFO] [stdout] test bgp::messages::tests::bgp_decode_type_5_produces_route_refresh_variant ... ok [INFO] [stdout] test bgp::messages::tests::as_trans_used_for_large_as ... ok [INFO] [stdout] test bgp::fsm::tests::validate_open_no_local_role_skips_role_check ... ok [INFO] [stdout] test bgp::fsm::tests::test_build_open_includes_hard_reset_via_n_bit ... ok [INFO] [stdout] test bgp::fsm::tests::validate_open_compatible_role_returns_ok ... ok [INFO] [stdout] test bgp::fsm::tests::validate_open_role_mismatch_returns_err ... ok [INFO] [stdout] test bgp::fsm::tests::validate_open_opportunistic_no_role_returns_ok ... ok [INFO] [stdout] test bgp::messages::tests::bgp_route_refresh_encodes_with_type_5 ... ok [INFO] [stdout] test bgp::messages::tests::keepalive_encodes_to_19_bytes ... ok [INFO] [stdout] test bgp::messages::tests::keepalive_header_is_correct ... ok [INFO] [stdout] test bgp::messages::tests::notification_is_hard_reset_checks_both_code_and_subcode ... ok [INFO] [stdout] test bgp::messages::tests::notification_roundtrip ... ok [INFO] [stdout] test bgp::messages::tests::role_mismatch_has_error_code_2_subcode_11 ... ok [INFO] [stdout] test bgp::messages::tests::open_roundtrip ... ok [INFO] [stdout] test bgp::messages::tests::route_refresh_borr_encodes_correctly ... ok [INFO] [stdout] test bgp::messages::tests::route_refresh_eorr_encodes_correctly ... ok [INFO] [stdout] test bgp::messages::tests::route_refresh_decode_ipv4_unicast ... ok [INFO] [stdout] test bgp::messages::tests::route_refresh_decode_truncated_returns_err ... ok [INFO] [stdout] test bgp::messages::tests::route_refresh_ipv4_unicast_encodes_correctly ... ok [INFO] [stdout] test bgp::messages::tests::test_notification_hard_reset ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_reason_empty_data ... ok [INFO] [stdout] test bgp::messages::tests::test_administrative_reset_with_reason ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_reason_invalid_utf8 ... ok [INFO] [stdout] test bgp::fsm::tests::validate_open_strict_mode_no_role_returns_err ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_with_reason_encode_decode ... ok [INFO] [stdout] test bgp::messages::tests::role_mismatch_round_trips_through_encode_decode ... ok [INFO] [stdout] test bgp::update::tests::add_path_nlri_single_entry_ipv4 ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_reason_truncation ... ok [INFO] [stdout] test bgp::update::tests::add_path_nlri_v6_single_entry ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_reason_utf8_truncation ... ok [INFO] [stdout] test bgp::update::tests::add_path_nlri_multiple_entries ... ok [INFO] [stdout] test bgp::update::tests::as4_aggregator_reconstruction_replaces_aggregator_asn ... ok [INFO] [stdout] test bgp::update::tests::as4_path_reconstruction_noop_when_no_as4 ... ok [INFO] [stdout] test bgp::update::tests::add_path_nlri_truncated_returns_treat_as_withdraw ... ok [INFO] [stdout] test bgp::update::tests::add_path_parse_update_add_path_populates_nlri_add_path ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_reason_malformed ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_reason_non_cease ... ok [INFO] [stdout] test bgp::update::tests::as4_path_reconstruction_merges_as4_into_as_path ... ok [INFO] [stdout] test bgp::update::tests::as4_reconstruction_partial_replacement ... ok [INFO] [stdout] test bgp::update::tests::as4_aggregator_round_trip ... ok [INFO] [stdout] test bgp::update::tests::add_path_parse_update_non_add_path_has_empty_add_path_fields ... ok [INFO] [stdout] test bgp::update::tests::as4_path_round_trip ... ok [INFO] [stdout] test bgp::update::tests::encode_cluster_list_round_trips ... ok [INFO] [stdout] test bgp::update::tests::encode_mp_reach_nlri_16byte_nexthop ... ok [INFO] [stdout] test bgp::update::tests::encode_mp_reach_nlri_32byte_nexthop ... ok [INFO] [stdout] test bgp::update::tests::encode_mp_unreach_nlri ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_v6_with_path_id_basic ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_with_path_id_host_route ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_with_path_id_multiple_round_trips ... ok [INFO] [stdout] test bgp::update::tests::encode_update_add_path_withdrawn ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_with_path_id_default_route ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_with_path_id_basic ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_with_path_id_round_trips_with_decoder ... ok [INFO] [stdout] test bgp::update::tests::encode_update_add_path_single_nlri ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_v6_with_path_id_round_trips ... ok [INFO] [stdout] test bgp::update::tests::encode_update_round_trip ... ok [INFO] [stdout] test bgp::update::tests::encode_originator_id_round_trips ... ok [INFO] [stdout] test bgp::update::tests::mp_reach_nlri_round_trip ... ok [INFO] [stdout] test bgp::update::tests::next_hop_and_mp_reach_nlri_rejected ... ok [INFO] [stdout] test bgp::update::tests::mp_unreach_nlri_round_trip ... ok [INFO] [stdout] test bgp::update::tests::ext_community_round_trip ... ok [INFO] [stdout] test bgp::update::tests::no_type3_nexthop_in_ipv6_update ... ok [INFO] [stdout] test bgp::update::tests::large_community_round_trip ... ok [INFO] [stdout] test bgp::update::tests::otc_parse_does_not_produce_unknown ... ok [INFO] [stdout] test bgp::update::tests::otc_parse_produces_only_to_customer ... ok [INFO] [stdout] test bgp::update::tests::parse_as4_aggregator_parses_correctly ... ok [INFO] [stdout] test bgp::update::tests::otc_round_trip_preserves_asn ... ok [INFO] [stdout] test bgp::update::tests::otc_encode_produces_correct_tlv ... ok [INFO] [stdout] test bgp::update::tests::parse_cluster_list_two_ids ... ok [INFO] [stdout] test bgp::update::tests::otc_wrong_length_returns_attribute_discard ... ok [INFO] [stdout] test bgp::update::tests::parse_ext_community_empty ... ok [INFO] [stdout] test bgp::update::tests::parse_ext_community_multiple ... ok [INFO] [stdout] test bgp::update::tests::parse_as4_path_parses_correctly ... ok [INFO] [stdout] test bgp::update::tests::parse_ext_community_malformed ... ok [INFO] [stdout] test bgp::update::tests::parse_large_community_single ... ok [INFO] [stdout] test bgp::update::tests::parse_large_community_multiple ... ok [INFO] [stdout] test bgp::update::tests::parse_local_pref_and_atomic_aggregate ... ok [INFO] [stdout] test bgp::update::tests::parse_ipv6_eor_marker ... ok [INFO] [stdout] test bgp::update::tests::parse_as_path_with_4byte_asns ... ok [INFO] [stdout] test bgp::update::tests::parse_cluster_list_not_multiple_of_4_discards ... ok [INFO] [stdout] test bgp::update::tests::parse_large_community_malformed ... ok [INFO] [stdout] test bgp::update::tests::parse_malformed_as_path_returns_session_reset ... ok [INFO] [stdout] test bgp::update::tests::parse_ext_community_single ... ok [INFO] [stdout] test bgp::update::tests::parse_malformed_community_returns_attribute_discard ... ok [INFO] [stdout] test bgp::update::tests::parse_malformed_origin_returns_session_reset ... ok [INFO] [stdout] test bgp::update::tests::parse_mp_reach_nlri_prefix_len_gt_128 ... ok [INFO] [stdout] test bgp::update::tests::parse_mp_reach_nlri_32byte_nexthop ... ok [INFO] [stdout] test bgp::update::tests::parse_mp_reach_nlri_ll_only_pattern ... ok [INFO] [stdout] test bgp::update::tests::parse_mp_unreach_nlri_with_prefixes ... ok [INFO] [stdout] test bgp::update::tests::parse_mp_reach_nlri_bad_nhlen ... ok [INFO] [stdout] test bgp::update::tests::parse_med_community_aggregator ... ok [INFO] [stdout] test bgp::update::tests::parse_mp_reach_nlri_16byte_nexthop ... ok [INFO] [stdout] test bgp::update::tests::parse_no_export_community ... ok [INFO] [stdout] test bgp::update::tests::parse_originator_id_type9 ... ok [INFO] [stdout] test bgp::update::tests::parse_originator_id_wrong_length_discards ... ok [INFO] [stdout] test bgp::update::tests::parse_well_formed_update_mandatory_attrs ... ok [INFO] [stdout] test bgp::update::tests::parse_zero_length_origin_returns_err ... ok [INFO] [stdout] test bgp::update::tests::unknown_optional_transitive_round_trip ... ok [INFO] [stdout] test bgp::update::tests::unknown_optional_non_transitive_silently_skipped ... ok [INFO] [stdout] test bgp::update::tests::parse_truncated_bytes_returns_err_no_panic ... ok [INFO] [stdout] test bgp::update::tests::partial_bit_set_on_forwarded ... ok [INFO] [stdout] test bgp::update::tests::unknown_well_known_returns_treat_as_withdraw ... ok [INFO] [stdout] test bgp::update::tests::unknown_optional_transitive_forwarded ... ok [INFO] [stdout] test config::persistence::tests::config_diff_returns_empty_for_identical_configs ... ok [INFO] [stdout] test config::persistence::tests::config_diff_shows_hold_time_change ... ok [INFO] [stdout] test config::persistence::tests::config_diff_shows_added_peer ... ok [INFO] [stdout] test config::persistence::tests::load_config_returns_default_for_missing_file ... ok [INFO] [stdout] test config::types::tests::always_compare_med_defaults_to_false ... ok [INFO] [stdout] test config::types::tests::always_compare_med_deserializes_true ... ok [INFO] [stdout] test config::persistence::tests::load_config_reads_valid_toml_file ... ok [INFO] [stdout] test config::persistence::tests::save_config_writes_atomically ... ok [INFO] [stdout] test config::types::tests::bgp_role_rs_client_deserializes ... ok [INFO] [stdout] test config::types::tests::bgp_role_provider_deserializes ... ok [INFO] [stdout] test config::types::tests::bgp_role_customer_deserializes ... ok [INFO] [stdout] test config::persistence::tests::save_config_round_trips_with_load_config ... ok [INFO] [stdout] test config::types::tests::cluster_id_defaults_to_none ... ok [INFO] [stdout] test config::types::tests::bgp_role_defaults_to_none ... ok [INFO] [stdout] test config::types::tests::ext_community_hex_wrong_length_returns_error ... ok [INFO] [stdout] test config::types::tests::cluster_id_deserializes ... ok [INFO] [stdout] test config::types::tests::is_restarting_not_in_serialized_output ... ok [INFO] [stdout] test config::types::tests::connect_retry_interval_defaults_to_30 ... ok [INFO] [stdout] test config::types::tests::ext_community_hex_parses_16_char_hex ... ok [INFO] [stdout] test config::persistence::tests::load_config_returns_err_for_invalid_toml ... ok [INFO] [stdout] test config::types::tests::ext_community_hex_serialize_produces_hex_string ... ok [INFO] [stdout] test config::types::tests::match_clause_ext_community_deserializes ... ok [INFO] [stdout] test config::types::tests::local_address_absent_deserializes_to_none ... ok [INFO] [stdout] test config::types::tests::match_clause_large_community_deserializes_with_optional_fields ... ok [INFO] [stdout] test config::types::tests::management_addr_absent_deserializes_to_none ... ok [INFO] [stdout] test config::types::tests::management_addr_deserializes ... ok [INFO] [stdout] test config::types::tests::connect_retry_interval_deserializes_custom ... ok [INFO] [stdout] test config::types::tests::local_address_field_deserializes_from_toml ... ok [INFO] [stdout] test config::types::tests::password_validation_rejects_oversized ... ok [INFO] [stdout] test config::types::tests::mrai_interval_absent_deserializes_to_none ... ok [INFO] [stdout] test config::types::tests::peer_config_deserializes_with_all_fields ... ok [INFO] [stdout] test config::types::tests::peer_config_inbound_route_map_deserializes ... ok [INFO] [stdout] test config::types::tests::peer_config_outbound_route_map_deserializes ... ok [INFO] [stdout] test config::types::tests::mrai_interval_deserializes_custom_value ... ok [INFO] [stdout] test config::types::tests::peer_config_with_optional_fields_round_trips ... ok [INFO] [stdout] test config::types::tests::password_validation_rejects_empty ... ok [INFO] [stdout] test config::types::tests::password_validation_accepts_max_length ... ok [INFO] [stdout] test config::types::tests::router_config_deserializes_from_toml ... ok [INFO] [stdout] test config::types::tests::peer_password_absent_is_none ... ok [INFO] [stdout] test config::types::tests::peer_password_field_deserializes ... ok [INFO] [stdout] test config::types::tests::policy_action_permit_deserializes ... ok [INFO] [stdout] test config::types::tests::peer_config_without_policy_fields_deserializes_backward_compat ... ok [INFO] [stdout] test config::types::tests::policy_action_deny_deserializes ... ok [INFO] [stdout] test config::types::tests::prefix_list_v6_deserializes_from_toml ... ok [INFO] [stdout] test config::types::tests::route_map_with_ext_community_round_trips ... ok [INFO] [stdout] test config::types::tests::router_config_prefix_lists_deserialize ... ok [INFO] [stdout] test config::types::tests::router_config_prefix_lists_v6_default_empty ... ok [INFO] [stdout] test config::types::tests::set_action_ext_community_add_deserializes ... ok [INFO] [stdout] test config::types::tests::rr_client_deserializes_true ... ok [INFO] [stdout] test config::types::tests::router_config_prefix_lists_v6_deserializes ... ok [INFO] [stdout] test config::types::tests::set_action_large_community_add_deserializes ... ok [INFO] [stdout] test config::types::tests::router_config_round_trips_through_toml ... ok [INFO] [stdout] test config::types::tests::router_config_route_maps_deserialize ... ok [INFO] [stdout] test config::types::tests::router_config_without_policy_fields_deserializes_backward_compat ... ok [INFO] [stdout] test config::types::tests::rr_client_defaults_to_false ... ok [INFO] [stdout] test config::types::tests::test_peer_config_ipv6_address ... ok [INFO] [stdout] test config::types::tests::set_action_next_hop_v6_deserializes ... ok [INFO] [stdout] test config::types::tests::test_selection_deferral_time_absent_defaults_to_none ... ok [INFO] [stdout] test config::types::tests::strict_mode_defaults_to_false ... ok [INFO] [stdout] test config::types::tests::strict_mode_true_deserializes ... ok [INFO] [stdout] test config::types::tests::test_peer_config_ipv4_backward_compat ... ok [INFO] [stdout] test config::types::tests::test_restart_time_absent_defaults_to_none ... ok [INFO] [stdout] test config::types::tests::test_restart_time_config ... ok [INFO] [stdout] test config::types::tests::ttl_security_defaults_to_false ... ok [INFO] [stdout] test config::types::tests::test_selection_deferral_time_config ... ok [INFO] [stdout] test config::types::tests::test_stalepath_time_absent_defaults_to_none ... ok [INFO] [stdout] test config::types::tests::test_stalepath_time_config ... ok [INFO] [stdout] test config::types::tests::ttl_security_deserializes_true ... ok [INFO] [stdout] test decision::select::tests::always_compare_med_lower_med_wins_across_different_as ... ok [INFO] [stdout] test decision::select::tests::select_best_empty_returns_none ... ok [INFO] [stdout] test config::types::tests::ttl_security_round_trips_through_toml ... ok [INFO] [stdout] test decision::select::tests::select_best_single_route ... ok [INFO] [stdout] test decision::select::tests::select_best_v6_ebgp_beats_ibgp ... ok [INFO] [stdout] test decision::select::tests::select_best_v6_shorter_as_path_wins ... ok [INFO] [stdout] test decision::select::tests::select_best_equal_routes_returns_deterministic ... ok [INFO] [stdout] test decision::select::tests::select_best_three_routes_picks_highest_local_pref ... ok [INFO] [stdout] test decision::select::tests::select_best_v6_empty_returns_none ... ok [INFO] [stdout] test decision::select::tests::select_best_v6_higher_local_pref_wins ... ok [INFO] [stdout] test decision::select::tests::step1_ebgp_treated_as_100_falls_through ... ok [INFO] [stdout] test decision::select::tests::step1_higher_local_pref_wins ... ok [INFO] [stdout] test decision::select::tests::step2_as_set_counts_as_1 ... ok [INFO] [stdout] test decision::select::tests::step2_mixed_sequence_and_set_length ... ok [INFO] [stdout] test decision::select::tests::step2_shorter_as_path_wins ... ok [INFO] [stdout] test decision::select::tests::step3_egp_beats_incomplete ... ok [INFO] [stdout] test decision::select::tests::step3_igp_beats_egp ... ok [INFO] [stdout] test decision::select::tests::step4_lower_med_wins_same_as ... ok [INFO] [stdout] test decision::select::tests::step4_med_skipped_different_as ... ok [INFO] [stdout] test decision::select::tests::step4_missing_med_treated_as_zero ... ok [INFO] [stdout] test decision::select::tests::step5_ebgp_beats_ibgp ... ok [INFO] [stdout] test decision::select::tests::step7_older_route_wins ... ok [INFO] [stdout] test decision::select::tests::step8_bgp_id_used_when_no_originator_id ... ok [INFO] [stdout] test decision::select::tests::step_rpki_valid_beats_not_found ... ok [INFO] [stdout] test decision::select::tests::step8_lower_bgp_id_wins ... ok [INFO] [stdout] test decision::select::tests::step8_originator_id_used_when_present ... ok [INFO] [stdout] test decision::select::tests::step9_lower_peer_ip_wins ... ok [INFO] [stdout] test decision::select::tests::step_rpki_equal_validity_falls_through ... ok [INFO] [stdout] test decision::select::tests::step_rpki_not_found_beats_invalid ... ok [INFO] [stdout] test decision::select::tests::step_rpki_valid_beats_invalid ... ok [INFO] [stdout] test fib::task::tests::reconcile_updates_gateway_on_change ... ok [INFO] [stdout] test fib::task::tests::reconcile_deletes_removed_route ... ok [INFO] [stdout] test fib::task::tests::reconcile_no_op_when_unchanged ... ok [INFO] [stdout] test fib::task::tests::reconcile_adds_new_route ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_deletes_removed_route ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_adds_new_route ... ok [INFO] [stdout] test fib::task::tests::reconcile_continues_on_del_failure ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_global_gateway_passes_oif_none ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_link_local_gateway_passes_oif ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_continues_on_del_failure ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_no_op_when_unchanged ... ok [INFO] [stdout] test fib::task::tests::reconcile_continues_on_add_failure ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_updates_gateway_on_change ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_continues_on_add_failure ... ok [INFO] [stdout] test gtsm::tests::set_gtsm_options_v4_on_socket ... ignored [INFO] [stdout] test gtsm::tests::set_gtsm_options_v6_on_socket ... ignored [INFO] [stdout] test gtsm::tests::gtsm_constants_have_correct_values ... ok [INFO] [stdout] test management::server::tests::management_server_constructs_without_panic ... ok [INFO] [stdout] test peer_manager::tests::test_collision_local_higher_incoming ... ok [INFO] [stdout] test gr_state::tests::detect_restart_returns_false_when_file_absent ... ok [INFO] [stdout] test peer_manager::tests::test_collision_local_higher_outgoing ... ok [INFO] [stdout] test gr_state::tests::detect_restart_returns_true_when_file_exists ... ok [INFO] [stdout] test management::server::tests::neighbor_state_bgp_role_round_trips_through_proto ... ok [INFO] [stdout] test management::server::tests::neighbor_state_no_role_shows_empty_strings_in_proto ... ok [INFO] [stdout] test peer_manager::tests::test_collision_peer_higher_incoming ... ok [INFO] [stdout] test peer_manager::tests::test_collision_peer_higher_outgoing ... ok [INFO] [stdout] test policy::prefix_list::tests::evaluate_first_deny_entry_before_permit_denies ... ok [INFO] [stdout] test policy::prefix_list::tests::evaluate_no_matching_entries_returns_none ... ok [INFO] [stdout] test policy::prefix_list::tests::evaluate_entries_in_seq_order_regardless_of_insertion_order ... ok [INFO] [stdout] test policy::prefix_list::tests::ge_le_candidate_too_short_does_not_match ... ok [INFO] [stdout] test policy::prefix_list::tests::ge_le_candidate_wrong_network_does_not_match ... ok [INFO] [stdout] test policy::prefix_list::tests::exact_match_same_prefix_length ... ok [INFO] [stdout] test policy::prefix_list::tests::ge_le_candidate_too_long_does_not_match ... ok [INFO] [stdout] test peer_manager::tests::test_ttl_security_triggers_gtsm_branch ... ok [INFO] [stdout] test policy::prefix_list::tests::match_any_with_le32_matches_any_prefix ... ok [INFO] [stdout] test policy::prefix_list::tests::ge_le_candidate_within_range_matches ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_candidate_prefix_length_outside_ge_le_does_not_match ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_evaluate_no_match_returns_none ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_exact_match_same_prefix_length ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_ge_le_candidate_within_range_matches ... ok [INFO] [stdout] test policy::prefix_list::tests::no_ge_le_subnet_does_not_match ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_evaluate_returns_first_matching_entry_by_seq ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_candidate_outside_network_does_not_match ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_match_any_le128_matches_any_ipv6_prefix ... ok [INFO] [stdout] test policy::route_map::tests::deny_entry_no_clauses_returns_none ... ok [INFO] [stdout] test policy::route_map::tests::full_evaluate_ext_community_match_large_community_set ... ok [INFO] [stdout] test policy::route_map::tests::ext_community_match_no_attr_returns_none ... ok [INFO] [stdout] test policy::route_map::tests::ext_community_match_wrong_subtype_no_match ... ok [INFO] [stdout] test policy::route_map::tests::ext_community_match_type_subtype_matches ... ok [INFO] [stdout] test policy::route_map::tests::empty_route_map_returns_none ... ok [INFO] [stdout] test policy::route_map::tests::large_community_match_exact_triple ... ok [INFO] [stdout] test policy::route_map::tests::large_community_match_global_admin_only ... ok [INFO] [stdout] test policy::route_map::tests::large_community_match_wrong_local_data_no_match ... ok [INFO] [stdout] test policy::route_map::tests::match_clause_prefix_list_matches ... ok [INFO] [stdout] test policy::route_map::tests::match_clause_as_path_contains_matches ... ok [INFO] [stdout] test policy::route_map::tests::match_clause_community_matches ... ok [INFO] [stdout] test policy::route_map::tests::permit_entry_no_clauses_returns_route_clone ... ok [INFO] [stdout] test policy::route_map::tests::multiple_match_clauses_and_logic_one_failing_skips_entry ... ok [INFO] [stdout] test policy::route_map::tests::match_clause_prefix_list_not_matching_skips_entry ... ok [INFO] [stdout] test policy::route_map::tests::seq_order_deny_fires_before_permit ... ok [INFO] [stdout] test policy::route_map::tests::set_action_community_add_no_duplicates ... ok [INFO] [stdout] test policy::route_map::tests::set_action_community_remove ... ok [INFO] [stdout] test policy::route_map::tests::set_action_ext_community_add_appends_no_duplicates ... ok [INFO] [stdout] test policy::route_map::tests::set_action_ext_community_add_creates_if_absent ... ok [INFO] [stdout] test policy::route_map::tests::set_action_large_community_add_creates_if_absent ... ok [INFO] [stdout] test policy::route_map::tests::set_action_large_community_add_appends_no_duplicates ... ok [INFO] [stdout] test policy::route_map::tests::set_action_large_community_remove ... ok [INFO] [stdout] test policy::route_map::tests::set_action_med_applied_to_clone ... ok [INFO] [stdout] test policy::route_map::tests::set_action_large_community_replace ... ok [INFO] [stdout] test policy::route_map::tests::set_action_local_pref_applied_to_clone ... ok [INFO] [stdout] test policy::route_map::tests::set_action_next_hop_applied_to_clone ... ok [INFO] [stdout] test policy::route_map::tests::set_actions_apply_to_clone_original_unchanged ... ok [INFO] [stdout] test policy::route_map::tests::v6_deny_entry_no_clauses_returns_none ... ok [INFO] [stdout] test policy::route_map::tests::v6_af_guard_ipv4_only_prefix_list_name_returns_false ... ok [INFO] [stdout] test policy::route_map::tests::v6_empty_route_map_returns_none ... ok [INFO] [stdout] test policy::route_map::tests::v6_permit_entry_no_clauses_returns_route_clone ... ok [INFO] [stdout] test policy::route_map::tests::v6_prefix_list_in_v6_map_matches ... ok [INFO] [stdout] test policy::route_map::tests::v6_set_action_local_pref_and_med_work ... ok [INFO] [stdout] test policy::route_map::tests::v6_set_action_ipv4_next_hop_is_noop ... ok [INFO] [stdout] test policy::tests::apply_inbound_ebgp_no_policy_rejected ... ok [INFO] [stdout] test policy::route_map::tests::v6_set_action_next_hop_v6_rewrites_mp_reach_nlri ... ok [INFO] [stdout] test policy::tests::apply_inbound_ebgp_with_permit_all_passes ... ok [INFO] [stdout] test policy::route_map::tests::set_action_ext_community_replace ... ok [INFO] [stdout] test policy::tests::apply_inbound_v6_ibgp_no_policy_passes_through ... ok [INFO] [stdout] test policy::tests::apply_inbound_v6_ebgp_no_policy_rejected ... ok [INFO] [stdout] test policy::route_map::tests::set_action_community_replace ... ok [INFO] [stdout] test policy::tests::apply_inbound_v6_ebgp_with_permit_all_passes ... ok [INFO] [stdout] test policy::tests::apply_outbound_ebgp_no_policy_rejected ... ok [INFO] [stdout] test policy::tests::apply_inbound_ibgp_no_policy_passes_through ... ok [INFO] [stdout] test policy::tests::apply_outbound_ebgp_with_deny_all_rejected ... ok [INFO] [stdout] test policy::tests::apply_outbound_v6_ebgp_no_policy_rejected ... ok [INFO] [stdout] test policy::tests::apply_outbound_ibgp_no_policy_passes_through ... ok [INFO] [stdout] test policy::tests::apply_outbound_v6_ibgp_no_policy_passes_through ... ok [INFO] [stdout] test policy::tests::policy_db_from_config_indexes_prefix_lists_v6 ... ok [INFO] [stdout] test policy::tests::policy_db_from_config_indexes_route_maps ... ok [INFO] [stdout] test policy::tests::policy_db_from_config_indexes_prefix_lists ... ok [INFO] [stdout] test rib::adj_rib_in::tests::all_routes_cloned_empty_rib_returns_empty ... ok [INFO] [stdout] test rib::adj_rib_in::tests::all_routes_cloned_single_peer_two_routes ... ok [INFO] [stdout] test rib::adj_rib_in::tests::all_routes_cloned_two_peers_returns_both ... ok [INFO] [stdout] test rib::adj_rib_in::tests::insert_wrapper_uses_path_id_zero ... ok [INFO] [stdout] test rib::adj_rib_in::tests::insert_or_replace_same_peer_prefix ... ok [INFO] [stdout] test rib::adj_rib_in::tests::insert_with_path_id_stores_two_paths_for_same_prefix ... ok [INFO] [stdout] test rib::adj_rib_in::tests::insert_single_route_shows_in_routes_for_prefix ... ok [INFO] [stdout] test rib::adj_rib_in::tests::peer_routes_returns_only_own_routes ... ok [INFO] [stdout] test rib::adj_rib_in::tests::peer_routes_returns_path_id_tuples ... ok [INFO] [stdout] test rib::adj_rib_in::tests::remove_peer_clears_all_its_routes ... ok [INFO] [stdout] test rib::adj_rib_in::tests::test_mark_peer_stale_nonexistent_peer ... ok [INFO] [stdout] test rib::adj_rib_in::tests::routes_for_prefix_returns_all_path_id_variants_across_peers ... ok [INFO] [stdout] test rib::adj_rib_in::tests::test_clear_peer_stale ... ok [INFO] [stdout] test rib::adj_rib_in::tests::test_mark_peer_stale ... ok [INFO] [stdout] test rib::adj_rib_in::tests::test_route_is_stale_defaults_false ... ok [INFO] [stdout] test rib::adj_rib_in::tests::test_stale_count_for_peer ... ok [INFO] [stdout] test rib::adj_rib_in::tests::two_peers_same_prefix_returns_two_routes ... ok [INFO] [stdout] test rib::adj_rib_in::tests::withdraw_all_paths_removes_all_path_ids_for_prefix ... ok [INFO] [stdout] test rib::adj_rib_in::tests::withdraw_all_paths_does_not_affect_other_prefixes ... ok [INFO] [stdout] test rib::adj_rib_in::tests::withdraw_path_removes_only_specific_path_id ... ok [INFO] [stdout] test rib::adj_rib_in::tests::withdraw_peer_a_leaves_only_peer_b ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::all_routes_cloned_empty_rib_returns_empty ... ok [INFO] [stdout] test rib::adj_rib_in::tests::withdraw_removes_complete_entry ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::all_routes_cloned_single_peer_two_routes ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::insert_single_route_shows_in_routes_for_prefix ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::insert_wrapper_uses_path_id_zero ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::insert_with_path_id_stores_two_paths_for_same_prefix ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::mark_peer_stale_marks_all_routes ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::mark_peer_stale_nonexistent_peer_does_not_panic ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::peer_routes_returns_only_own_routes ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::peer_routes_returns_path_id_tuples ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::routes_for_prefix_returns_all_path_id_variants_across_peers ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::all_routes_cloned_two_peers_returns_both ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::stale_count_for_peer_counts_only_stale ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::clear_peer_stale_clears_all_routes ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::withdraw_all_paths_removes_all_path_ids_for_prefix ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::two_peers_same_prefix_returns_two_routes ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::withdraw_peer_a_leaves_only_peer_b ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::withdraw_removes_complete_entry ... ok [INFO] [stdout] test rib::adj_rib_out::tests::get_routes_add_path_none_when_never_set ... ok [INFO] [stdout] test rib::adj_rib_out::tests::get_routes_none_when_never_set ... ok [INFO] [stdout] test rib::adj_rib_out::tests::normal_routes_unaffected_by_add_path_storage ... ok [INFO] [stdout] test fib::task::tests_v6::fib_sync_task_v6_processes_sync_command ... ok [INFO] [stdout] test rib::adj_rib_out::tests::remove_peer_returns_none_on_get ... ok [INFO] [stdout] test rib::adj_rib_out::tests::set_routes_add_path_replaces_previous ... ok [INFO] [stdout] test rib::adj_rib_out::tests::set_routes_add_path_stores_vec_with_path_ids ... ok [INFO] [stdout] test rib::adj_rib_out::tests::set_routes_replaces_previous ... ok [INFO] [stdout] test rib::adj_rib_out::tests::set_routes_then_get_routes_returns_same ... ok [INFO] [stdout] test rib::adj_rib_out::tests::set_routes_with_empty_vec ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::get_routes_add_path_v6_none_when_never_set ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::get_routes_none_when_never_set ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::remove_peer_v6_clears_both_normal_and_add_path_tables ... ok [INFO] [stdout] test fib::task::tests::fib_sync_task_processes_sync_command ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::remove_peer_returns_none_on_get ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::set_routes_add_path_v6_stores_vec_with_path_ids ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::set_routes_replaces_previous ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::withdraw_path_removes_only_specific_path_id ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::route_is_stale_defaults_false ... ok [INFO] [stdout] test rib::adj_rib_out::tests::remove_peer_clears_both_normal_and_add_path_tables ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::insert_or_replace_same_peer_prefix ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::remove_peer_clears_all_its_routes ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::set_routes_with_empty_vec ... ok [INFO] [stdout] test rib::loc_rib::tests::insert_best_returns_route_for_prefix ... ok [INFO] [stdout] test rib::loc_rib::tests::all_routes_returns_all_prefixes ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::set_routes_then_get_routes_returns_same ... ok [INFO] [stdout] test rib::loc_rib::tests::best_for_prefix_returns_none_when_absent ... ok [INFO] [stdout] test rib::loc_rib::tests::insert_best_replaces_existing ... ok [INFO] [stdout] test rib::loc_rib_v6::tests::best_for_prefix_returns_none_when_absent ... ok [INFO] [stdout] test rib::loc_rib::tests::remove_clears_prefix ... ok [INFO] [stdout] test rib::loc_rib_v6::tests::remove_clears_prefix ... ok [INFO] [stdout] test rib::loc_rib_v6::tests::clear_empties_table ... ok [INFO] [stdout] test rib::loc_rib_v6::tests::insert_best_replaces_existing ... ok [INFO] [stdout] test rib::loc_rib_v6::tests::insert_best_returns_route_for_prefix ... ok [INFO] [stdout] test rib::manager::get_gr_state_tests::test_get_gr_state_converged ... ok [INFO] [stdout] test rib::manager::add_path_tests::populate_adj_rib_out_non_add_path_peer_gets_single_best_path ... ok [INFO] [stdout] test rib::manager::add_path_tests::populate_adj_rib_out_add_path_peer_gets_all_paths_via_add_path_table ... ok [INFO] [stdout] test rib::manager::add_path_tests::path_ids_locally_allocated_starting_at_one ... ok [INFO] [stdout] test rib::manager::get_gr_state_tests::test_get_gr_state_stale_retention ... ok [INFO] [stdout] test rib::manager::gr_tests::encode_ipv6_eor_is_valid_mp_unreach_nlri ... ok [INFO] [stdout] test rib::manager::get_gr_state_tests::test_get_gr_state_not_capable ... ok [INFO] [stdout] test rib::manager::add_path_tests::populate_adj_rib_out_add_path_peer_always_includes_best_path ... ok [INFO] [stdout] test rib::loc_rib_v6::tests::all_routes_returns_all_prefixes ... ok [INFO] [stdout] test rib::manager::gr_tests::test_eor_received_cancels_stalepath_timer ... ok [INFO] [stdout] test rib::manager::gr_tests::test_eor_received_ipv4_clears_ipv4_stale ... ok [INFO] [stdout] test rib::manager::gr_tests::ipv6_eor_not_sent_to_ipv4_only_peer_on_deferral_end ... ok [INFO] [stdout] test rib::manager::gr_tests::test_enhanced_route_refresh_flag_stored ... ok [INFO] [stdout] test rib::manager::gr_tests::test_eor_received_when_not_stale_is_noop ... ok [INFO] [stdout] test rib::manager::gr_tests::test_eor_received_clears_stale ... ok [INFO] [stdout] test rib::manager::gr_tests::test_eor_sent_to_all_peers_on_deferral_end ... ok [INFO] [stdout] test rib::manager::gr_tests::test_eor_received_ipv6_clears_v6_stale ... ok [INFO] [stdout] test rib::manager::gr_tests::ipv6_eor_sent_to_v6_capable_peer_on_deferral_end ... ok [INFO] [stdout] test rib::manager::gr_tests::test_gr_afi_mismatch_on_reconnect_flushes ... ok [INFO] [stdout] test rib::manager::gr_tests::test_non_gr_peer_down_removes_routes ... ok [INFO] [stdout] test rib::manager::gr_tests::test_gr_state_transitions_to_stale_retention_on_peer_down ... ok [INFO] [stdout] test rib::manager::gr_tests::test_gr_peer_down_does_not_send_withdrawals ... ok [INFO] [stdout] test rib::manager::gr_tests::test_notification_non_gr_peer_flushes ... ok [INFO] [stdout] test rib::manager::gr_tests::test_selection_deferral_active_on_restarting_mgr ... ok [INFO] [stdout] test rib::manager::gr_tests::test_hard_reset_notification_flushes_routes ... ok [INFO] [stdout] test rib::manager::gr_tests::test_notification_gr_peer_retains_stale ... ok [INFO] [stdout] test rib::manager::gr_tests::test_peer_up_during_stale_retention_cancels_timer ... ok [INFO] [stdout] test rib::manager::gr_tests::test_gr_peer_down_retains_routes ... ok [INFO] [stdout] test rib::manager::gr_tests::test_stalepath_timer_started_on_gr_peer_down ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_ipv6_best_path_selection_in_handle_update ... ok [INFO] [stdout] test rib::manager::gr_tests::test_stalepath_expiry_flushes_routes ... ok [INFO] [stdout] test rib::manager::gr_tests::test_selection_deferral_timer_fires ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_handle_update_ipv6_nlri_inserts_into_v6_rib ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_ipv6_outbound_gating_only_ipv6_peers ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_ipv6_routes_do_not_contaminate_ipv4_rib ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_v6_inbound_policy_filters_route ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::v6_ebgp_outbound_does_not_add_ipv4_next_hop ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_v6_outbound_next_hop_rewritten_to_local_address ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::v6_ebgp_outbound_strips_local_pref ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::v6_populate_adj_rib_out_applies_ebgp_attrs_for_ebgp_peer ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::v6_ebgp_outbound_strips_rr_attributes ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::v6_ebgp_outbound_creates_as_path_when_absent ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::v6_ebgp_outbound_prepends_own_as_to_existing_as_path ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_announcements_deferred_when_timer_not_elapsed ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_effective_mrai_ebgp_default_is_30s ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_effective_mrai_ibgp_default_is_5s ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_added_when_sending_to_customer ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_flush_mrai_pending_sends_updates_when_timer_elapsed ... ok [INFO] [stdout] test rib::manager::gr_tests::test_selection_deferral_withholds_non_gr ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_effective_mrai_returns_configured_value ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_withdrawals_bypass_mrai_and_sent_immediately ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_effective_mrai_ibgp_with_configured_value ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_handle_update_ipv6_withdraw_removes_from_v6_rib ... ok [INFO] [stdout] test rib::manager::gr_tests::test_selection_deferral_ends_on_all_eor ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_added_when_sending_to_rs_client ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_not_added_when_no_role ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_not_added_when_sending_to_rs ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_ingress_accepted_from_peer_local_peer ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_added_when_sending_to_peer ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_ingress_accepted_from_provider_local_customer ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_ingress_rejected_from_customer_local_provider ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_not_added_when_sending_to_provider ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_ingress_not_triggered_when_no_role_configured ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_not_duplicated_when_already_present ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_ingress_rejected_from_rs_client_local_rs ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_ingress_not_triggered_without_otc ... ok [INFO] [stdout] test rib::manager::otc_tests::rpki_prefer_valid_does_not_drop_invalid_route ... ok [INFO] [stdout] test rib::manager::otc_tests::rpki_route_gets_valid_on_insertion_when_vrp_matches ... ok [INFO] [stdout] test rib::manager::otc_tests::rpki_reject_invalid_drops_route_with_invalid_state ... ok [INFO] [stdout] test rib::manager::otc_tests::rpki_route_without_as_path_gets_not_found ... ok [INFO] [stdout] test rib::manager::soft_reconfig_tests::soft_reconfig_permit_to_deny_removes_route_from_loc_rib ... ok [INFO] [stdout] test rib::manager::soft_reconfig_tests::soft_reconfig_deny_to_permit_adds_route_to_loc_rib ... ok [INFO] [stdout] test rib::manager::route_refresh_tests::route_refresh_received_with_routes_sends_borr_updates_eorr_end_of_rib ... ok [INFO] [stdout] test rib::manager::otc_tests::rpki_vrp_update_re_validates_existing_routes ... ok [INFO] [stdout] test rib::manager::soft_reconfig_tests::soft_reconfig_rebuilds_policy_db_before_replay ... ok [INFO] [stdout] test rib::manager::route_refresh_tests::soft_reconfig_in_capable_peer_sends_route_refresh ... ok [INFO] [stdout] test rib::manager::route_refresh_tests::soft_reconfig_in_non_capable_peer_returns_err ... ok [INFO] [stdout] test rib::manager::tests::aggregator_passes_through ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_does_not_mutate_other_attrs ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_creates_as_path_when_absent ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_adds_next_hop_when_absent ... ok [INFO] [stdout] test rib::manager::tests::aggregator_passes_through_ibgp ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_prepends_own_as_to_existing_sequence ... ok [INFO] [stdout] test rib::manager::tests::apply_ibgp_outbound_attrs_adds_next_hop_when_absent ... ok [INFO] [stdout] test rib::manager::route_refresh_tests::route_refresh_received_empty_adj_rib_out_sends_borr_eorr_end_of_rib ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_rewrites_next_hop ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_strips_originator_id ... ok [INFO] [stdout] test rib::manager::route_refresh_tests::soft_reconfig_in_unknown_peer_returns_err ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_strips_cluster_list ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_strips_local_pref ... ok [INFO] [stdout] test rib::manager::tests::apply_ibgp_outbound_attrs_preserves_as_path ... ok [INFO] [stdout] test rib::manager::tests::apply_ibgp_outbound_attrs_rewrites_next_hop ... ok [INFO] [stdout] test rib::manager::tests::atomic_aggregate_passes_through ... ok [INFO] [stdout] test rib::manager::tests::apply_ibgp_outbound_attrs_preserves_local_pref ... ok [INFO] [stdout] test rib::manager::tests::atomic_aggregate_passes_through_ibgp ... ok [INFO] [stdout] test rib::manager::tests::fib_sync_excludes_route_without_next_hop ... ok [INFO] [stdout] test rib::manager::tests::fib_sync_excludes_unreachable_next_hop ... ok [INFO] [stdout] test rib::manager::tests::fib_sync_includes_reachable_next_hop ... ok [INFO] [stdout] test rib::manager::tests::fib_sync_triggered_after_peer_down ... ok [INFO] [stdout] test rib::manager::tests::handle_peer_down_clears_adj_rib_in_for_downed_peer ... ok [INFO] [stdout] test rib::manager::tests::handle_update_ebgp_no_policy_rejected ... ok [INFO] [stdout] test rib::manager::tests::fib_sync_triggered_after_handle_update ... ok [INFO] [stdout] test rib::manager::tests::handle_peer_down_with_two_peers_keeps_remaining_peer_route ... ok [INFO] [stdout] test rib::manager::tests::handle_update_ebgp_with_permit_all_inbound_accepted ... ok [INFO] [stdout] test rib::manager::tests::handle_update_ebgp_with_deny_all_inbound_rejected ... ok [INFO] [stdout] test rib::manager::tests::handle_update_inserts_into_adj_rib_in_and_loc_rib ... ok [INFO] [stdout] test rib::manager::tests::fib_sync_not_sent_when_no_fib_tx ... ok [INFO] [stdout] test rib::manager::tests::ibgp_learned_route_readvertised_to_ebgp_peer ... ok [INFO] [stdout] test rib::manager::tests::handle_update_ibgp_no_policy_passes_through ... ok [INFO] [stdout] test rib::manager::tests::normalize_local_pref_ebgp_removes_existing_local_pref ... ok [INFO] [stdout] test rib::manager::tests::ibgp_split_horizon_not_readvertised_to_ibgp_peer ... ok [INFO] [stdout] test rib::manager::tests::keep_as4_for_2byte_peer ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_inserts_sequence_before_leading_set ... ok [INFO] [stdout] test rib::manager::tests::loop_prevention_cluster_list_drops_own_cluster_id ... ok [INFO] [stdout] test rib::manager::tests::loop_prevention_originator_id_drops_own_bgp_id ... ok [INFO] [stdout] test rib::manager::tests::normalize_local_pref_ebgp_adds_100 ... ok [INFO] [stdout] test rib::manager::tests::pack_updates_empty_routes_returns_empty ... ok [INFO] [stdout] test rib::manager::tests::ibgp_outbound_includes_local_pref_attribute ... ok [INFO] [stdout] test rib::manager::tests::pack_updates_three_routes_identical_attrs_produces_one_update ... ok [INFO] [stdout] test rib::manager::tests::populate_adj_rib_out_ebgp_with_permit_all_outbound_included ... ok [INFO] [stdout] test rib::manager::tests::peer_up_triggers_populate_and_send ... ok [INFO] [stdout] test rib::manager::tests::populate_adj_rib_out_ebgp_no_policy_excluded ... ok [INFO] [stdout] test rib::manager::tests::populate_adj_rib_out_ibgp_no_policy_included ... ok [INFO] [stdout] test rib::manager::tests::reflection_client_source_reflected_to_nonclient ... ok [INFO] [stdout] test rib::manager::tests::reflection_nonclient_source_only_to_clients ... ok [INFO] [stdout] test rib::manager::tests::rr_outbound_creates_cluster_list_when_absent ... ok [INFO] [stdout] test rib::manager::tests::rr_outbound_does_not_overwrite_existing_originator_id ... ok [INFO] [stdout] test rib::manager::tests::rr_outbound_prepends_cluster_id_to_existing_list ... ok [INFO] [stdout] test rib::manager::tests::reflection_ebgp_source_always_reflected ... ok [INFO] [stdout] test rib::manager::tests::rr_outbound_adds_originator_id_when_absent ... ok [INFO] [stdout] test rib::manager::tests::normalize_local_pref_ibgp_no_addition_when_absent ... ok [INFO] [stdout] test rib::manager::tests::normalize_local_pref_ibgp_preserves_value ... ok [INFO] [stdout] test rib::manager::v6_fib_tests::fib_v6_link_local_excluded_without_interface_index ... ok [INFO] [stdout] test rib::manager::v6_fib_tests::fib_v6_not_sent_when_no_fib_tx_v6 ... ok [INFO] [stdout] test rib::manager::tests::send_outbound_updates_skips_peers_with_empty_adj_rib_out ... ok [INFO] [stdout] test rib::manager::tests::pack_updates_different_next_hop_produces_two_updates ... ok [INFO] [stdout] test rib::manager::v6_fib_tests::fib_v6_link_local_with_interface_index ... ok [INFO] [stdout] test rib::manager::tests::send_outbound_updates_sends_to_all_connected_peers ... ok [INFO] [stdout] test rib::manager::v6_fib_tests::fib_v6_snapshot_excludes_no_nexthop ... ok [INFO] [stdout] test rib::manager::v6_fib_tests::fib_v6_sync_on_peer_down ... ok [INFO] [stdout] test rib::path_id::tests::different_afi_safi_have_independent_counters ... ok [INFO] [stdout] test rib::manager::v6_fib_tests::fib_v6_sync_sends_snapshot_on_update ... ok [INFO] [stdout] test rib::manager::tests::strip_as4_for_4byte_peer ... ok [INFO] [stdout] test rib::path_id::tests::different_peers_have_independent_counters ... ok [INFO] [stdout] test rib::path_id::tests::reset_peer_nonexistent_does_not_panic ... ok [INFO] [stdout] test rib::path_id::tests::reset_peer_removes_all_counters_for_that_peer ... ok [INFO] [stdout] test rib::types::tests::local_pref_ibgp_defaults_to_100_when_absent ... ok [INFO] [stdout] test rib::types::tests::local_pref_ibgp_uses_attribute ... ok [INFO] [stdout] test rib::types::tests::med_returns_none_when_absent ... ok [INFO] [stdout] test rib::types::tests::med_returns_attribute_value ... ok [INFO] [stdout] test rib::types::tests::neighboring_as_none_when_no_as_path ... ok [INFO] [stdout] test rib::path_id::tests::ids_increment_monotonically ... ok [INFO] [stdout] test rib::types::tests::neighboring_as_returns_first_sequence_entry ... ok [INFO] [stdout] test rib::types::tests::local_pref_ebgp_ignores_attribute ... ok [INFO] [stdout] test rib::types::tests::neighboring_as_none_when_starts_with_set ... ok [INFO] [stdout] test rib::path_id::tests::first_id_is_one ... ok [INFO] [stdout] test rib::types::tests::next_hop_returns_attribute_value ... ok [INFO] [stdout] test rib::types::tests::origin_returns_attribute_value ... ok [INFO] [stdout] test rib::types::tests::route_source_is_ebgp ... ok [INFO] [stdout] test rib::types::tests::v6_local_pref_ebgp_returns_100 ... ok [INFO] [stdout] test rib::types::tests::v6_local_pref_ibgp_defaults_to_100 ... ok [INFO] [stdout] test rib::types::tests::v6_local_pref_ibgp_uses_attribute ... ok [INFO] [stdout] test rib::types::tests::v6_med_returns_none_when_absent ... ok [INFO] [stdout] test rib::types::tests::v6_is_stale_defaults_false ... ok [INFO] [stdout] test rib::types::tests::v6_med_returns_attribute_value ... ok [INFO] [stdout] test rib::types::tests::v6_neighboring_as_returns_first_sequence_entry ... ok [INFO] [stdout] test rib::types::tests::v6_next_hop_v6_returns_from_mp_reach ... ok [INFO] [stdout] test rib::types::tests::v6_next_hop_v6_returns_none_when_absent ... ok [INFO] [stdout] test rib::types::tests::v6_origin_returns_attribute_value ... ok [INFO] [stdout] test rpki::codec::tests::decode_cache_reset ... ok [INFO] [stdout] test rpki::codec::tests::decode_cache_response_correct_session_id ... ok [INFO] [stdout] test rpki::codec::tests::decode_end_of_data_v0_defaults ... ok [INFO] [stdout] test rpki::codec::tests::decode_end_of_data_v1_correct_fields ... ok [INFO] [stdout] test rpki::codec::tests::decode_ipv6_prefix_correct_fields ... ok [INFO] [stdout] test rpki::codec::tests::decode_returns_none_when_insufficient_bytes ... ok [INFO] [stdout] test rpki::codec::tests::decode_ipv4_prefix_correct_fields ... ok [INFO] [stdout] test rpki::codec::tests::decode_returns_none_when_partial_pdu_body ... ok [INFO] [stdout] test rpki::codec::tests::encode_reset_query_is_8_bytes_with_type_2 ... ok [INFO] [stdout] test rpki::codec::tests::encode_serial_query_correct_session_id_and_serial ... ok [INFO] [stdout] test rpki::types::tests::origin_as_returns_last_sequence_segment ... ok [INFO] [stdout] test rpki::types::tests::origin_as_returns_last_asn_in_last_sequence ... ok [INFO] [stdout] test rpki::types::tests::origin_as_returns_none_for_empty_as_path ... ok [INFO] [stdout] test rpki::manager::tests::test_reset_query_flow_populates_vrp_table ... ok [INFO] [stdout] test rpki::types::tests::origin_as_ignores_set_finds_last_sequence ... ok [INFO] [stdout] test rpki::types::tests::origin_as_returns_none_for_no_as_path_attribute ... ok [INFO] [stdout] test rpki::types::tests::rpki_policy_serde_roundtrip_reject_invalid ... ok [INFO] [stdout] test rpki::types::tests::origin_as_returns_none_for_set_only_path ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv4_invalid_when_route_exceeds_vrp_max_length ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv4_invalid_when_vrp_covers_but_asn_does_not_match ... ok [INFO] [stdout] test rpki::types::tests::rpki_policy_serde_roundtrip_prefer_valid ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv4_not_found_when_no_vrp_covers_prefix ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv4_covering_vrp_at_slash16_validates_slash24_with_max_length_24 ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv4_valid_when_vrp_covers_and_asn_matches ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv6_covering_prefix_valid ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv6_invalid_when_asn_mismatch ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv6_not_found_when_no_vrp ... ok [INFO] [stdout] test rpki::types::tests::validation_state_default_is_not_found ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv6_valid_when_vrp_covers_and_asn_matches ... ok [INFO] [stdout] test rpki::types::tests::validation_state_display ... ok [INFO] [stdout] test rpki::types::tests::validation_state_preference_values ... ok [INFO] [stdout] test tcp_md5::tests::build_listener_with_md5_binds_with_key ... ignored [INFO] [stdout] test tcp_md5::tests::connect_with_md5_creates_socket ... ignored [INFO] [stdout] test tcp_md5::tests::set_tcp_md5sig_on_loopback ... ignored [INFO] [stdout] test rpki::types::tests::vrp_table_insert_v4_and_count ... ok [INFO] [stdout] test rpki::types::tests::vrp_table_clear_resets_everything ... ok [INFO] [stdout] test tcp_md5::tests::tcp_md5sig_struct_size ... ok [INFO] [stdout] test rib::manager::tests::peer_up_triggers_outbound_send_to_new_peer ... ok [INFO] [stdout] test rpki::manager::tests::test_reconnect_with_same_session_id_sends_serial_query ... ok [INFO] [stdout] test rpki::manager::tests::test_withdrawal_removes_vrp_from_table ... ok [INFO] [stdout] test rpki::manager::tests::test_stale_retention_on_disconnect ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 680 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 0.18s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/openrouter-04f36c644baf1892) [INFO] [stdout] [INFO] [stdout] running 685 tests [INFO] [stdout] test bfd::manager::tests::test_bfd_event_variants_compile ... ok [INFO] [stdout] test bfd::manager::tests::test_bfd_jitter_varies ... ok [INFO] [stdout] test bfd::manager::tests::test_bfd_jitter_zero_seed ... ok [INFO] [stdout] test bfd::packet::tests::test_decode_length_field_validation ... ok [INFO] [stdout] test bfd::packet::tests::test_decode_rejects_short_buffer ... ok [INFO] [stdout] test bfd::packet::tests::test_decode_rejects_wrong_version ... ok [INFO] [stdout] test bfd::packet::tests::test_encode_state_bits ... ok [INFO] [stdout] test bfd::manager::tests::test_bfd_peer_info_collection ... ok [INFO] [stdout] test bfd::packet::tests::test_encode_decode_roundtrip ... ok [INFO] [stdout] test bfd::packet::tests::test_encode_poll_final_bits ... ok [INFO] [stdout] test bfd::session::tests::test_agreed_tx_interval ... ok [INFO] [stdout] test bfd::session::tests::test_bfd_state_wire_roundtrip ... ok [INFO] [stdout] test bfd::session::tests::test_detection_time ... ok [INFO] [stdout] test bfd::session::tests::test_state_machine_down_down_goes_init ... ok [INFO] [stdout] test bfd::session::tests::test_state_machine_admin_down_no_transition ... ok [INFO] [stdout] test bfd::session::tests::test_state_machine_init_init_goes_up ... ok [INFO] [stdout] test bfd::session::tests::test_state_machine_up_down_goes_down ... ok [INFO] [stdout] test bgp::attributes::tests::as_path_length_mixed ... ok [INFO] [stdout] test bgp::attributes::tests::as_path_length_sequence_only ... ok [INFO] [stdout] test bfd::session::tests::test_make_control_packet_reflects_state ... ok [INFO] [stdout] test bgp::attributes::tests::community_constants_are_correct ... ok [INFO] [stdout] test bfd::session::tests::test_state_machine_init_up_goes_up ... ok [INFO] [stdout] test bfd::manager::tests::test_bfd_jitter_range ... ok [INFO] [stdout] test bgp::attributes::tests::cluster_list_type_code_is_10 ... ok [INFO] [stdout] test bgp::attributes::tests::origin_ordering ... ok [INFO] [stdout] test bgp::attributes::tests::attr_flags_bitflags ... ok [INFO] [stdout] test bgp::attributes::tests::as_path_length_set_only ... ok [INFO] [stdout] test bgp::attributes::tests::originator_id_type_code_is_9 ... ok [INFO] [stdout] test bgp::capabilities::tests::add_path_encode_ipv4_send_only ... ok [INFO] [stdout] test bgp::capabilities::tests::add_path_two_entries_round_trip ... ok [INFO] [stdout] test bgp::capabilities::tests::add_path_single_entry_round_trips ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_all_values_round_trip ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_rs_client_encodes_to_2 ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_provider_encodes_to_0 ... ok [INFO] [stdout] test bgp::capabilities::tests::add_path_code69_non_divisible_by_4_is_skipped ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_rs_encodes_to_1 ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_unknown_value_is_skipped ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_customer_encodes_to_3 ... ok [INFO] [stdout] test bgp::capabilities::tests::bgp_role_peer_encodes_to_4 ... ok [INFO] [stdout] test bgp::capabilities::tests::gr_two_afi_tuples_encode_decode ... ok [INFO] [stdout] test bgp::capabilities::tests::test_encode_four_octet_asn ... ok [INFO] [stdout] test bgp::capabilities::tests::test_enhanced_route_refresh_encoded ... ok [INFO] [stdout] test bgp::capabilities::tests::test_four_octet_asn_parsed ... ok [INFO] [stdout] test bgp::capabilities::tests::test_enhanced_route_refresh_parsed ... ok [INFO] [stdout] test bgp::capabilities::tests::test_gr_capability_encoded ... ok [INFO] [stdout] test bgp::capabilities::tests::test_gr_capability_with_n_bit ... ok [INFO] [stdout] test bgp::capabilities::tests::test_gr_capability_parsed ... ok [INFO] [stdout] test bgp::capabilities::tests::test_route_refresh_parsed ... ok [INFO] [stdout] test bgp::capabilities::tests::test_gr_with_r_and_n_bits ... ok [INFO] [stdout] test bgp::capabilities::tests::test_unknown_cap_silently_ignored ... ok [INFO] [stdout] test bgp::codec::tests::test_decode_invalid_length_too_large ... ok [INFO] [stdout] test bgp::codec::tests::test_decode_invalid_marker ... ok [INFO] [stdout] test bgp::capabilities::tests::test_gr_capability_encoded_with_n_bit ... ok [INFO] [stdout] test bgp::codec::tests::test_decode_invalid_length_too_small ... ok [INFO] [stdout] test bgp::codec::tests::test_decode_partial_message ... ok [INFO] [stdout] test bgp::codec::tests::test_decode_keepalive ... ok [INFO] [stdout] test bgp::codec::tests::test_decode_too_short ... ok [INFO] [stdout] test bgp::capabilities::tests::test_gr_capability_with_restart_bit ... ok [INFO] [stdout] test bgp::codec::tests::test_encode_keepalive ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_includes_bgp_role_when_configured ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_ipv4_only_gr_no_ipv6_afi ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_ipv4_only_no_ipv6_cap ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_ipv6_always_includes_ipv4_mp ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_ipv6_gr_includes_ipv6_afi ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_ipv6_capability_order ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_ipv6_includes_mp_ext ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_omits_bgp_role_when_not_configured ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_with_add_path_and_ipv6_includes_both_afis ... ok [INFO] [stdout] test bgp::fsm::tests::compatible_role_peer_peer ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_with_add_path_send_only_includes_capability ... ok [INFO] [stdout] test bgp::fsm::tests::compatible_role_rs_rs_client ... ok [INFO] [stdout] test bgp::fsm::tests::compatible_role_provider_customer ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_without_add_path_has_no_capability ... ok [INFO] [stdout] test bfd::manager::tests::test_bfd_command_variants_compile ... ok [INFO] [stdout] test bgp::fsm::tests::build_open_with_add_path_both_includes_dir3 ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_established_keepalive_resets_hold ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_established_unexpected_open ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_connect_retry_on_tcp_fail ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_hold_time_negotiation_local_lower ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_hold_time_zero_disables_keepalive ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_hold_timer_expired_established ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_hold_time_negotiation_min ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_idle_manual_start ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_manual_stop_from_idle ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_openconfirm_unexpected_update ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_connect_tcp_established ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_invalid_open_hold_time ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_opensent_unexpected_keepalive ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_manual_stop_from_established ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_notify_msg_any_state ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_openconfirm_keepalive ... ok [INFO] [stdout] test bgp::fsm::tests::gr_restarting_r_bit_set_when_is_restarting_true ... ok [INFO] [stdout] test bgp::fsm::tests::incompatible_role_customer_customer ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_keepalive_timer_expired ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_opensent_valid_open ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_send_hold_timer_duration_8min_floor ... ok [INFO] [stdout] test bgp::fsm::tests::incompatible_role_provider_provider ... ok [INFO] [stdout] test bgp::fsm::tests::incompatible_role_provider_peer ... ok [INFO] [stdout] test bgp::fsm::tests::peer_supports_ipv6_set_from_open ... ok [INFO] [stdout] test bgp::fsm::tests::test_build_open_includes_hard_reset_via_n_bit ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_send_hold_timer_duration_double_hold ... ok [INFO] [stdout] test bgp::fsm::tests::peer_supports_ipv6_absent_from_open ... ok [INFO] [stdout] test bgp::fsm::tests::validate_open_no_local_role_skips_role_check ... ok [INFO] [stdout] test bgp::fsm::tests::test_gr_and_err_in_open ... ok [INFO] [stdout] test bgp::fsm::tests::test_peer_info_gr_fields ... ok [INFO] [stdout] test bgp::fsm::tests::validate_open_opportunistic_no_role_returns_ok ... ok [INFO] [stdout] test bgp::fsm::tests::validate_open_compatible_role_returns_ok ... ok [INFO] [stdout] test bgp::messages::tests::bgp_decode_type_5_produces_route_refresh_variant ... ok [INFO] [stdout] test bgp::messages::tests::bgp_route_refresh_encodes_with_type_5 ... ok [INFO] [stdout] test bgp::fsm::tests::fsm_send_hold_timer_expired ... ok [INFO] [stdout] test bgp::messages::tests::keepalive_header_is_correct ... ok [INFO] [stdout] test bgp::fsm::tests::gr_normal_startup_no_r_bit ... ok [INFO] [stdout] test bgp::messages::tests::notification_is_hard_reset_checks_both_code_and_subcode ... ok [INFO] [stdout] test bgp::messages::tests::notification_roundtrip ... ok [INFO] [stdout] test bgp::messages::tests::role_mismatch_has_error_code_2_subcode_11 ... ok [INFO] [stdout] test bgp::messages::tests::open_roundtrip ... ok [INFO] [stdout] test bgp::messages::tests::keepalive_encodes_to_19_bytes ... ok [INFO] [stdout] test bgp::messages::tests::role_mismatch_round_trips_through_encode_decode ... ok [INFO] [stdout] test bgp::messages::tests::route_refresh_borr_encodes_correctly ... ok [INFO] [stdout] test bgp::messages::tests::route_refresh_eorr_encodes_correctly ... ok [INFO] [stdout] test bgp::messages::tests::route_refresh_ipv4_unicast_encodes_correctly ... ok [INFO] [stdout] test bgp::messages::tests::test_administrative_reset_with_reason ... ok [INFO] [stdout] test bgp::messages::tests::test_notification_hard_reset ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_reason_empty_data ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_reason_invalid_utf8 ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_reason_non_cease ... ok [INFO] [stdout] test bgp::messages::tests::route_refresh_decode_ipv4_unicast ... ok [INFO] [stdout] test bgp::messages::tests::route_refresh_decode_truncated_returns_err ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_reason_malformed ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_reason_truncation ... ok [INFO] [stdout] test bgp::fsm::tests::validate_open_role_mismatch_returns_err ... ok [INFO] [stdout] test bgp::fsm::tests::validate_open_strict_mode_no_role_returns_err ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_reason_utf8_truncation ... ok [INFO] [stdout] test bgp::messages::tests::test_shutdown_with_reason_encode_decode ... ok [INFO] [stdout] test bgp::messages::tests::as_trans_used_for_large_as ... ok [INFO] [stdout] test bgp::update::tests::add_path_nlri_multiple_entries ... ok [INFO] [stdout] test bgp::update::tests::add_path_nlri_single_entry_ipv4 ... ok [INFO] [stdout] test bgp::update::tests::add_path_nlri_truncated_returns_treat_as_withdraw ... ok [INFO] [stdout] test bgp::update::tests::as4_aggregator_reconstruction_replaces_aggregator_asn ... ok [INFO] [stdout] test bgp::update::tests::add_path_parse_update_add_path_populates_nlri_add_path ... ok [INFO] [stdout] test bgp::update::tests::as4_aggregator_round_trip ... ok [INFO] [stdout] test bgp::update::tests::add_path_parse_update_non_add_path_has_empty_add_path_fields ... ok [INFO] [stdout] test bgp::update::tests::add_path_nlri_v6_single_entry ... ok [INFO] [stdout] test bgp::update::tests::as4_path_reconstruction_merges_as4_into_as_path ... ok [INFO] [stdout] test bgp::update::tests::encode_mp_unreach_nlri ... ok [INFO] [stdout] test bgp::update::tests::as4_path_round_trip ... ok [INFO] [stdout] test bgp::update::tests::as4_reconstruction_partial_replacement ... ok [INFO] [stdout] test bgp::update::tests::encode_cluster_list_round_trips ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_v6_with_path_id_basic ... ok [INFO] [stdout] test bgp::update::tests::as4_path_reconstruction_noop_when_no_as4 ... ok [INFO] [stdout] test bgp::update::tests::encode_mp_reach_nlri_16byte_nexthop ... ok [INFO] [stdout] test bgp::update::tests::encode_mp_reach_nlri_32byte_nexthop ... ok [INFO] [stdout] test bgp::update::tests::encode_originator_id_round_trips ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_v6_with_path_id_round_trips ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_with_path_id_basic ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_with_path_id_default_route ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_with_path_id_host_route ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_with_path_id_multiple_round_trips ... ok [INFO] [stdout] test bgp::update::tests::encode_update_round_trip ... ok [INFO] [stdout] test bgp::update::tests::encode_update_add_path_single_nlri ... ok [INFO] [stdout] test bgp::update::tests::encode_nlri_with_path_id_round_trips_with_decoder ... ok [INFO] [stdout] test bgp::update::tests::encode_update_add_path_withdrawn ... ok [INFO] [stdout] test bgp::update::tests::mp_reach_nlri_round_trip ... ok [INFO] [stdout] test bgp::update::tests::large_community_round_trip ... ok [INFO] [stdout] test bgp::update::tests::ext_community_round_trip ... ok [INFO] [stdout] test bgp::update::tests::otc_encode_produces_correct_tlv ... ok [INFO] [stdout] test bgp::update::tests::otc_parse_does_not_produce_unknown ... ok [INFO] [stdout] test bgp::update::tests::otc_parse_produces_only_to_customer ... ok [INFO] [stdout] test bgp::update::tests::parse_as4_aggregator_parses_correctly ... ok [INFO] [stdout] test bgp::update::tests::parse_as4_path_parses_correctly ... ok [INFO] [stdout] test bgp::update::tests::parse_as_path_with_4byte_asns ... ok [INFO] [stdout] test bgp::update::tests::parse_cluster_list_not_multiple_of_4_discards ... ok [INFO] [stdout] test bgp::update::tests::parse_cluster_list_two_ids ... ok [INFO] [stdout] test bgp::update::tests::parse_ext_community_empty ... ok [INFO] [stdout] test bgp::update::tests::parse_ext_community_malformed ... ok [INFO] [stdout] test bgp::update::tests::parse_ext_community_multiple ... ok [INFO] [stdout] test bgp::update::tests::parse_ext_community_single ... ok [INFO] [stdout] test bgp::update::tests::parse_large_community_malformed ... ok [INFO] [stdout] test bgp::update::tests::parse_ipv6_eor_marker ... ok [INFO] [stdout] test bgp::update::tests::parse_large_community_multiple ... ok [INFO] [stdout] test bgp::update::tests::parse_large_community_single ... ok [INFO] [stdout] test bgp::update::tests::parse_malformed_as_path_returns_session_reset ... ok [INFO] [stdout] test bgp::update::tests::parse_malformed_community_returns_attribute_discard ... ok [INFO] [stdout] test bgp::update::tests::parse_malformed_origin_returns_session_reset ... ok [INFO] [stdout] test bgp::update::tests::parse_med_community_aggregator ... ok [INFO] [stdout] test bgp::update::tests::parse_mp_reach_nlri_16byte_nexthop ... ok [INFO] [stdout] test bgp::update::tests::parse_mp_reach_nlri_32byte_nexthop ... ok [INFO] [stdout] test bgp::update::tests::parse_mp_reach_nlri_bad_nhlen ... ok [INFO] [stdout] test bgp::update::tests::parse_mp_reach_nlri_ll_only_pattern ... ok [INFO] [stdout] test bgp::update::tests::parse_mp_reach_nlri_prefix_len_gt_128 ... ok [INFO] [stdout] test bgp::update::tests::parse_mp_unreach_nlri_with_prefixes ... ok [INFO] [stdout] test bgp::update::tests::parse_local_pref_and_atomic_aggregate ... ok [INFO] [stdout] test bgp::update::tests::otc_wrong_length_returns_attribute_discard ... ok [INFO] [stdout] test bgp::update::tests::parse_originator_id_type9 ... ok [INFO] [stdout] test bgp::update::tests::mp_unreach_nlri_round_trip ... ok [INFO] [stdout] test bgp::update::tests::next_hop_and_mp_reach_nlri_rejected ... ok [INFO] [stdout] test bgp::update::tests::no_type3_nexthop_in_ipv6_update ... ok [INFO] [stdout] test bgp::update::tests::otc_round_trip_preserves_asn ... ok [INFO] [stdout] test bgp::update::tests::parse_no_export_community ... ok [INFO] [stdout] test bgp::update::tests::parse_originator_id_wrong_length_discards ... ok [INFO] [stdout] test bgp::update::tests::partial_bit_set_on_forwarded ... ok [INFO] [stdout] test bgp::update::tests::unknown_optional_non_transitive_silently_skipped ... ok [INFO] [stdout] test bgp::update::tests::unknown_optional_transitive_round_trip ... ok [INFO] [stdout] test bgp::update::tests::unknown_well_known_returns_treat_as_withdraw ... ok [INFO] [stdout] test config::persistence::tests::config_diff_shows_added_peer ... ok [INFO] [stdout] test config::persistence::tests::config_diff_returns_empty_for_identical_configs ... ok [INFO] [stdout] test config::persistence::tests::config_diff_shows_hold_time_change ... ok [INFO] [stdout] test config::persistence::tests::load_config_reads_valid_toml_file ... ok [INFO] [stdout] test config::persistence::tests::load_config_returns_default_for_missing_file ... ok [INFO] [stdout] test config::persistence::tests::load_config_returns_err_for_invalid_toml ... ok [INFO] [stdout] test config::types::tests::always_compare_med_defaults_to_false ... ok [INFO] [stdout] test config::types::tests::always_compare_med_deserializes_true ... ok [INFO] [stdout] test config::types::tests::bgp_role_customer_deserializes ... ok [INFO] [stdout] test config::types::tests::bgp_role_defaults_to_none ... ok [INFO] [stdout] test config::types::tests::bgp_role_provider_deserializes ... ok [INFO] [stdout] test config::types::tests::bgp_role_rs_client_deserializes ... ok [INFO] [stdout] test config::persistence::tests::save_config_writes_atomically ... ok [INFO] [stdout] test config::persistence::tests::save_config_round_trips_with_load_config ... ok [INFO] [stdout] test config::types::tests::cluster_id_defaults_to_none ... ok [INFO] [stdout] test config::types::tests::connect_retry_interval_deserializes_custom ... ok [INFO] [stdout] test config::types::tests::cluster_id_deserializes ... ok [INFO] [stdout] test config::types::tests::connect_retry_interval_defaults_to_30 ... ok [INFO] [stdout] test config::types::tests::ext_community_hex_parses_16_char_hex ... ok [INFO] [stdout] test config::types::tests::ext_community_hex_serialize_produces_hex_string ... ok [INFO] [stdout] test config::types::tests::ext_community_hex_wrong_length_returns_error ... ok [INFO] [stdout] test config::types::tests::local_address_field_deserializes_from_toml ... ok [INFO] [stdout] test config::types::tests::management_addr_absent_deserializes_to_none ... ok [INFO] [stdout] test bgp::update::tests::parse_truncated_bytes_returns_err_no_panic ... ok [INFO] [stdout] test bgp::update::tests::parse_well_formed_update_mandatory_attrs ... ok [INFO] [stdout] test bgp::update::tests::parse_zero_length_origin_returns_err ... ok [INFO] [stdout] test bgp::update::tests::unknown_optional_transitive_forwarded ... ok [INFO] [stdout] test config::types::tests::match_clause_large_community_deserializes_with_optional_fields ... ok [INFO] [stdout] test config::types::tests::mrai_interval_absent_deserializes_to_none ... ok [INFO] [stdout] test config::types::tests::is_restarting_not_in_serialized_output ... ok [INFO] [stdout] test config::types::tests::local_address_absent_deserializes_to_none ... ok [INFO] [stdout] test config::types::tests::management_addr_deserializes ... ok [INFO] [stdout] test config::types::tests::match_clause_ext_community_deserializes ... ok [INFO] [stdout] test config::types::tests::peer_config_outbound_route_map_deserializes ... ok [INFO] [stdout] test config::types::tests::mrai_interval_deserializes_custom_value ... ok [INFO] [stdout] test config::types::tests::peer_password_absent_is_none ... ok [INFO] [stdout] test config::types::tests::peer_config_without_policy_fields_deserializes_backward_compat ... ok [INFO] [stdout] test config::types::tests::password_validation_accepts_max_length ... ok [INFO] [stdout] test config::types::tests::peer_config_inbound_route_map_deserializes ... ok [INFO] [stdout] test config::types::tests::password_validation_rejects_empty ... ok [INFO] [stdout] test config::types::tests::password_validation_rejects_oversized ... ok [INFO] [stdout] test config::types::tests::peer_config_deserializes_with_all_fields ... ok [INFO] [stdout] test config::types::tests::peer_config_with_optional_fields_round_trips ... ok [INFO] [stdout] test config::types::tests::prefix_list_v6_deserializes_from_toml ... ok [INFO] [stdout] test config::types::tests::router_config_prefix_lists_v6_default_empty ... ok [INFO] [stdout] test config::types::tests::policy_action_permit_deserializes ... ok [INFO] [stdout] test config::types::tests::peer_password_field_deserializes ... ok [INFO] [stdout] test config::types::tests::policy_action_deny_deserializes ... ok [INFO] [stdout] test config::types::tests::router_config_prefix_lists_deserialize ... ok [INFO] [stdout] test config::types::tests::route_map_with_ext_community_round_trips ... ok [INFO] [stdout] test config::types::tests::router_config_without_policy_fields_deserializes_backward_compat ... ok [INFO] [stdout] test config::types::tests::router_config_route_maps_deserialize ... ok [INFO] [stdout] test config::types::tests::router_config_deserializes_from_toml ... ok [INFO] [stdout] test config::types::tests::rr_client_deserializes_true ... ok [INFO] [stdout] test config::types::tests::rr_client_defaults_to_false ... ok [INFO] [stdout] test config::types::tests::set_action_ext_community_add_deserializes ... ok [INFO] [stdout] test config::types::tests::strict_mode_defaults_to_false ... ok [INFO] [stdout] test config::types::tests::router_config_prefix_lists_v6_deserializes ... ok [INFO] [stdout] test config::types::tests::test_peer_config_ipv4_backward_compat ... ok [INFO] [stdout] test config::types::tests::set_action_large_community_add_deserializes ... ok [INFO] [stdout] test config::types::tests::test_restart_time_absent_defaults_to_none ... ok [INFO] [stdout] test config::types::tests::strict_mode_true_deserializes ... ok [INFO] [stdout] test config::types::tests::test_peer_config_ipv6_address ... ok [INFO] [stdout] test config::types::tests::set_action_next_hop_v6_deserializes ... ok [INFO] [stdout] test config::types::tests::test_restart_time_config ... ok [INFO] [stdout] test config::types::tests::test_selection_deferral_time_absent_defaults_to_none ... ok [INFO] [stdout] test config::types::tests::test_stalepath_time_config ... ok [INFO] [stdout] test config::types::tests::test_stalepath_time_absent_defaults_to_none ... ok [INFO] [stdout] test config::types::tests::ttl_security_round_trips_through_toml ... ok [INFO] [stdout] test config::types::tests::ttl_security_deserializes_true ... ok [INFO] [stdout] test config::types::tests::ttl_security_defaults_to_false ... ok [INFO] [stdout] test config::types::tests::test_selection_deferral_time_config ... ok [INFO] [stdout] test decision::select::tests::always_compare_med_lower_med_wins_across_different_as ... ok [INFO] [stdout] test decision::select::tests::select_best_empty_returns_none ... ok [INFO] [stdout] test decision::select::tests::select_best_equal_routes_returns_deterministic ... ok [INFO] [stdout] test decision::select::tests::select_best_v6_ebgp_beats_ibgp ... ok [INFO] [stdout] test decision::select::tests::select_best_v6_empty_returns_none ... ok [INFO] [stdout] test decision::select::tests::select_best_v6_higher_local_pref_wins ... ok [INFO] [stdout] test decision::select::tests::step2_as_set_counts_as_1 ... ok [INFO] [stdout] test decision::select::tests::select_best_v6_shorter_as_path_wins ... ok [INFO] [stdout] test decision::select::tests::step2_mixed_sequence_and_set_length ... ok [INFO] [stdout] test decision::select::tests::select_best_single_route ... ok [INFO] [stdout] test decision::select::tests::step1_ebgp_treated_as_100_falls_through ... ok [INFO] [stdout] test decision::select::tests::select_best_three_routes_picks_highest_local_pref ... ok [INFO] [stdout] test decision::select::tests::step1_higher_local_pref_wins ... ok [INFO] [stdout] test decision::select::tests::step3_egp_beats_incomplete ... ok [INFO] [stdout] test decision::select::tests::step4_lower_med_wins_same_as ... ok [INFO] [stdout] test decision::select::tests::step2_shorter_as_path_wins ... ok [INFO] [stdout] test config::types::tests::router_config_round_trips_through_toml ... ok [INFO] [stdout] test decision::select::tests::step5_ebgp_beats_ibgp ... ok [INFO] [stdout] test decision::select::tests::step3_igp_beats_egp ... ok [INFO] [stdout] test decision::select::tests::step8_lower_bgp_id_wins ... ok [INFO] [stdout] test decision::select::tests::step8_bgp_id_used_when_no_originator_id ... ok [INFO] [stdout] test decision::select::tests::step_rpki_equal_validity_falls_through ... ok [INFO] [stdout] test decision::select::tests::step8_originator_id_used_when_present ... ok [INFO] [stdout] test decision::select::tests::step9_lower_peer_ip_wins ... ok [INFO] [stdout] test decision::select::tests::step4_med_skipped_different_as ... ok [INFO] [stdout] test decision::select::tests::step7_older_route_wins ... ok [INFO] [stdout] test decision::select::tests::step4_missing_med_treated_as_zero ... ok [INFO] [stdout] test decision::select::tests::step_rpki_valid_beats_not_found ... ok [INFO] [stdout] test decision::select::tests::step_rpki_not_found_beats_invalid ... ok [INFO] [stdout] test decision::select::tests::step_rpki_valid_beats_invalid ... ok [INFO] [stdout] test fib::task::tests::reconcile_adds_new_route ... ok [INFO] [stdout] test fib::task::tests::reconcile_continues_on_add_failure ... ok [INFO] [stdout] test fib::task::tests::reconcile_continues_on_del_failure ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_adds_new_route ... ok [INFO] [stdout] test fib::task::tests::reconcile_deletes_removed_route ... ok [INFO] [stdout] test fib::task::tests::reconcile_no_op_when_unchanged ... ok [INFO] [stdout] test fib::task::tests::reconcile_updates_gateway_on_change ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_no_op_when_unchanged ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_global_gateway_passes_oif_none ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_continues_on_del_failure ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_link_local_gateway_passes_oif ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_updates_gateway_on_change ... ok [INFO] [stdout] test gr_state::tests::detect_restart_returns_false_when_file_absent ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_deletes_removed_route ... ok [INFO] [stdout] test gr_state::tests::detect_restart_returns_true_when_file_exists ... ok [INFO] [stdout] test gtsm::tests::set_gtsm_options_v4_on_socket ... ignored [INFO] [stdout] test gtsm::tests::set_gtsm_options_v6_on_socket ... ignored [INFO] [stdout] test management::server::tests::management_server_constructs_without_panic ... ok [INFO] [stdout] test management::server::tests::neighbor_state_bgp_role_round_trips_through_proto ... ok [INFO] [stdout] test peer_manager::tests::test_collision_local_higher_incoming ... ok [INFO] [stdout] test management::server::tests::neighbor_state_no_role_shows_empty_strings_in_proto ... ok [INFO] [stdout] test peer_manager::tests::test_collision_local_higher_outgoing ... ok [INFO] [stdout] test gtsm::tests::gtsm_constants_have_correct_values ... ok [INFO] [stdout] test peer_manager::tests::test_collision_peer_higher_outgoing ... ok [INFO] [stdout] test policy::prefix_list::tests::evaluate_no_matching_entries_returns_none ... ok [INFO] [stdout] test policy::prefix_list::tests::evaluate_entries_in_seq_order_regardless_of_insertion_order ... ok [INFO] [stdout] test policy::prefix_list::tests::evaluate_first_deny_entry_before_permit_denies ... ok [INFO] [stdout] test policy::prefix_list::tests::exact_match_same_prefix_length ... ok [INFO] [stdout] test policy::prefix_list::tests::ge_le_candidate_too_long_does_not_match ... ok [INFO] [stdout] test peer_manager::tests::test_ttl_security_triggers_gtsm_branch ... ok [INFO] [stdout] test peer_manager::tests::test_collision_peer_higher_incoming ... ok [INFO] [stdout] test policy::prefix_list::tests::ge_le_candidate_within_range_matches ... ok [INFO] [stdout] test policy::prefix_list::tests::match_any_with_le32_matches_any_prefix ... ok [INFO] [stdout] test policy::prefix_list::tests::no_ge_le_subnet_does_not_match ... ok [INFO] [stdout] test policy::prefix_list::tests::ge_le_candidate_wrong_network_does_not_match ... ok [INFO] [stdout] test policy::prefix_list::tests::ge_le_candidate_too_short_does_not_match ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_candidate_outside_network_does_not_match ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_evaluate_returns_first_matching_entry_by_seq ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_exact_match_same_prefix_length ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_ge_le_candidate_within_range_matches ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_evaluate_no_match_returns_none ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_candidate_prefix_length_outside_ge_le_does_not_match ... ok [INFO] [stdout] test policy::prefix_list::tests::v6_match_any_le128_matches_any_ipv6_prefix ... ok [INFO] [stdout] test policy::route_map::tests::deny_entry_no_clauses_returns_none ... ok [INFO] [stdout] test policy::route_map::tests::ext_community_match_type_subtype_matches ... ok [INFO] [stdout] test policy::route_map::tests::empty_route_map_returns_none ... ok [INFO] [stdout] test policy::route_map::tests::ext_community_match_wrong_subtype_no_match ... ok [INFO] [stdout] test policy::route_map::tests::ext_community_match_no_attr_returns_none ... ok [INFO] [stdout] test policy::route_map::tests::large_community_match_wrong_local_data_no_match ... ok [INFO] [stdout] test policy::route_map::tests::full_evaluate_ext_community_match_large_community_set ... ok [INFO] [stdout] test policy::route_map::tests::large_community_match_exact_triple ... ok [INFO] [stdout] test policy::route_map::tests::match_clause_as_path_contains_matches ... ok [INFO] [stdout] test policy::route_map::tests::match_clause_community_matches ... ok [INFO] [stdout] test policy::route_map::tests::large_community_match_global_admin_only ... ok [INFO] [stdout] test policy::route_map::tests::permit_entry_no_clauses_returns_route_clone ... ok [INFO] [stdout] test policy::route_map::tests::match_clause_prefix_list_matches ... ok [INFO] [stdout] test policy::route_map::tests::match_clause_prefix_list_not_matching_skips_entry ... ok [INFO] [stdout] test policy::route_map::tests::multiple_match_clauses_and_logic_one_failing_skips_entry ... ok [INFO] [stdout] test policy::route_map::tests::seq_order_deny_fires_before_permit ... ok [INFO] [stdout] test policy::route_map::tests::set_action_community_add_no_duplicates ... ok [INFO] [stdout] test policy::route_map::tests::set_action_community_remove ... ok [INFO] [stdout] test policy::route_map::tests::set_action_community_replace ... ok [INFO] [stdout] test policy::route_map::tests::set_action_ext_community_add_creates_if_absent ... ok [INFO] [stdout] test policy::route_map::tests::set_action_large_community_add_creates_if_absent ... ok [INFO] [stdout] test policy::route_map::tests::set_action_ext_community_add_appends_no_duplicates ... ok [INFO] [stdout] test policy::route_map::tests::set_action_ext_community_replace ... ok [INFO] [stdout] test policy::route_map::tests::set_action_large_community_remove ... ok [INFO] [stdout] test policy::route_map::tests::set_action_med_applied_to_clone ... ok [INFO] [stdout] test policy::route_map::tests::set_action_large_community_replace ... ok [INFO] [stdout] test policy::route_map::tests::v6_af_guard_ipv4_only_prefix_list_name_returns_false ... ok [INFO] [stdout] test policy::route_map::tests::set_action_local_pref_applied_to_clone ... ok [INFO] [stdout] test policy::route_map::tests::v6_deny_entry_no_clauses_returns_none ... ok [INFO] [stdout] test policy::route_map::tests::set_action_large_community_add_appends_no_duplicates ... ok [INFO] [stdout] test policy::route_map::tests::set_actions_apply_to_clone_original_unchanged ... ok [INFO] [stdout] test policy::route_map::tests::v6_empty_route_map_returns_none ... ok [INFO] [stdout] test policy::route_map::tests::v6_permit_entry_no_clauses_returns_route_clone ... ok [INFO] [stdout] test policy::route_map::tests::set_action_next_hop_applied_to_clone ... ok [INFO] [stdout] test policy::route_map::tests::v6_prefix_list_in_v6_map_matches ... ok [INFO] [stdout] test policy::route_map::tests::v6_set_action_ipv4_next_hop_is_noop ... ok [INFO] [stdout] test policy::route_map::tests::v6_set_action_local_pref_and_med_work ... ok [INFO] [stdout] test policy::route_map::tests::v6_set_action_next_hop_v6_rewrites_mp_reach_nlri ... ok [INFO] [stdout] test policy::tests::apply_inbound_ebgp_no_policy_rejected ... ok [INFO] [stdout] test policy::tests::apply_inbound_ibgp_no_policy_passes_through ... ok [INFO] [stdout] test policy::tests::apply_inbound_ebgp_with_permit_all_passes ... ok [INFO] [stdout] test policy::tests::apply_inbound_v6_ebgp_with_permit_all_passes ... ok [INFO] [stdout] test policy::tests::apply_inbound_v6_ebgp_no_policy_rejected ... ok [INFO] [stdout] test policy::tests::apply_outbound_ebgp_with_deny_all_rejected ... ok [INFO] [stdout] test policy::tests::apply_outbound_ebgp_no_policy_rejected ... ok [INFO] [stdout] test policy::tests::apply_inbound_v6_ibgp_no_policy_passes_through ... ok [INFO] [stdout] test policy::tests::apply_outbound_v6_ibgp_no_policy_passes_through ... ok [INFO] [stdout] test policy::tests::apply_outbound_ibgp_no_policy_passes_through ... ok [INFO] [stdout] test policy::tests::apply_outbound_v6_ebgp_no_policy_rejected ... ok [INFO] [stdout] test policy::tests::policy_db_from_config_indexes_prefix_lists ... ok [INFO] [stdout] test policy::tests::policy_db_from_config_indexes_prefix_lists_v6 ... ok [INFO] [stdout] test rib::adj_rib_in::tests::all_routes_cloned_single_peer_two_routes ... ok [INFO] [stdout] test policy::tests::policy_db_from_config_indexes_route_maps ... ok [INFO] [stdout] test rib::adj_rib_in::tests::all_routes_cloned_empty_rib_returns_empty ... ok [INFO] [stdout] test rib::adj_rib_in::tests::all_routes_cloned_two_peers_returns_both ... ok [INFO] [stdout] test rib::adj_rib_in::tests::insert_or_replace_same_peer_prefix ... ok [INFO] [stdout] test rib::adj_rib_in::tests::insert_single_route_shows_in_routes_for_prefix ... ok [INFO] [stdout] test rib::adj_rib_in::tests::peer_routes_returns_only_own_routes ... ok [INFO] [stdout] test rib::adj_rib_in::tests::peer_routes_returns_path_id_tuples ... ok [INFO] [stdout] test rib::adj_rib_in::tests::remove_peer_clears_all_its_routes ... ok [INFO] [stdout] test rib::adj_rib_in::tests::routes_for_prefix_returns_all_path_id_variants_across_peers ... ok [INFO] [stdout] test rib::adj_rib_in::tests::test_clear_peer_stale ... ok [INFO] [stdout] test rib::adj_rib_in::tests::test_mark_peer_stale ... ok [INFO] [stdout] test rib::adj_rib_in::tests::test_mark_peer_stale_nonexistent_peer ... ok [INFO] [stdout] test rib::adj_rib_in::tests::test_route_is_stale_defaults_false ... ok [INFO] [stdout] test rib::adj_rib_in::tests::test_stale_count_for_peer ... ok [INFO] [stdout] test rib::adj_rib_in::tests::two_peers_same_prefix_returns_two_routes ... ok [INFO] [stdout] test rib::adj_rib_in::tests::withdraw_all_paths_does_not_affect_other_prefixes ... ok [INFO] [stdout] test rib::adj_rib_in::tests::withdraw_all_paths_removes_all_path_ids_for_prefix ... ok [INFO] [stdout] test rib::adj_rib_in::tests::withdraw_path_removes_only_specific_path_id ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::all_routes_cloned_empty_rib_returns_empty ... ok [INFO] [stdout] test rib::adj_rib_in::tests::withdraw_peer_a_leaves_only_peer_b ... ok [INFO] [stdout] test rib::adj_rib_in::tests::withdraw_removes_complete_entry ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::all_routes_cloned_single_peer_two_routes ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::all_routes_cloned_two_peers_returns_both ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::insert_or_replace_same_peer_prefix ... ok [INFO] [stdout] test fib::task::tests_v6::reconcile_v6_continues_on_add_failure ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::insert_single_route_shows_in_routes_for_prefix ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::insert_with_path_id_stores_two_paths_for_same_prefix ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::mark_peer_stale_marks_all_routes ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::insert_wrapper_uses_path_id_zero ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::mark_peer_stale_nonexistent_peer_does_not_panic ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::peer_routes_returns_only_own_routes ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::peer_routes_returns_path_id_tuples ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::remove_peer_clears_all_its_routes ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::route_is_stale_defaults_false ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::routes_for_prefix_returns_all_path_id_variants_across_peers ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::stale_count_for_peer_counts_only_stale ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::two_peers_same_prefix_returns_two_routes ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::withdraw_all_paths_removes_all_path_ids_for_prefix ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::withdraw_path_removes_only_specific_path_id ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::clear_peer_stale_clears_all_routes ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::withdraw_peer_a_leaves_only_peer_b ... ok [INFO] [stdout] test rib::adj_rib_in_v6::tests::withdraw_removes_complete_entry ... ok [INFO] [stdout] test rib::adj_rib_out::tests::get_routes_add_path_none_when_never_set ... ok [INFO] [stdout] test rib::adj_rib_out::tests::remove_peer_clears_both_normal_and_add_path_tables ... ok [INFO] [stdout] test rib::adj_rib_out::tests::get_routes_none_when_never_set ... ok [INFO] [stdout] test rib::adj_rib_out::tests::normal_routes_unaffected_by_add_path_storage ... ok [INFO] [stdout] test rib::adj_rib_in::tests::insert_wrapper_uses_path_id_zero ... ok [INFO] [stdout] test rib::adj_rib_out::tests::remove_peer_returns_none_on_get ... ok [INFO] [stdout] test rib::adj_rib_out::tests::set_routes_replaces_previous ... ok [INFO] [stdout] test rib::adj_rib_out::tests::set_routes_then_get_routes_returns_same ... ok [INFO] [stdout] test rib::adj_rib_out::tests::set_routes_add_path_replaces_previous ... ok [INFO] [stdout] test rib::adj_rib_in::tests::insert_with_path_id_stores_two_paths_for_same_prefix ... ok [INFO] [stdout] test rib::adj_rib_out::tests::set_routes_add_path_stores_vec_with_path_ids ... ok [INFO] [stdout] test fib::task::tests::fib_sync_task_processes_sync_command ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::get_routes_none_when_never_set ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::set_routes_add_path_v6_stores_vec_with_path_ids ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::remove_peer_v6_clears_both_normal_and_add_path_tables ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::set_routes_replaces_previous ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::set_routes_then_get_routes_returns_same ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::set_routes_with_empty_vec ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::get_routes_add_path_v6_none_when_never_set ... ok [INFO] [stdout] test rib::adj_rib_out_v6::tests::remove_peer_returns_none_on_get ... ok [INFO] [stdout] test rib::loc_rib::tests::all_routes_returns_all_prefixes ... ok [INFO] [stdout] test rib::loc_rib::tests::best_for_prefix_returns_none_when_absent ... ok [INFO] [stdout] test rib::loc_rib::tests::insert_best_returns_route_for_prefix ... ok [INFO] [stdout] test rib::loc_rib::tests::remove_clears_prefix ... ok [INFO] [stdout] test rib::loc_rib_v6::tests::all_routes_returns_all_prefixes ... ok [INFO] [stdout] test fib::task::tests_v6::fib_sync_task_v6_processes_sync_command ... ok [INFO] [stdout] test rib::loc_rib_v6::tests::insert_best_replaces_existing ... ok [INFO] [stdout] test rib::loc_rib_v6::tests::best_for_prefix_returns_none_when_absent ... ok [INFO] [stdout] test rib::loc_rib_v6::tests::insert_best_returns_route_for_prefix ... ok [INFO] [stdout] test rib::loc_rib::tests::insert_best_replaces_existing ... ok [INFO] [stdout] test rib::loc_rib_v6::tests::remove_clears_prefix ... ok [INFO] [stdout] test rib::loc_rib_v6::tests::clear_empties_table ... ok [INFO] [stdout] test rib::manager::add_path_tests::populate_adj_rib_out_add_path_peer_always_includes_best_path ... ok [INFO] [stdout] test rib::manager::add_path_tests::populate_adj_rib_out_add_path_peer_gets_all_paths_via_add_path_table ... ok [INFO] [stdout] test rib::manager::add_path_tests::path_ids_locally_allocated_starting_at_one ... ok [INFO] [stdout] test rib::manager::add_path_tests::populate_adj_rib_out_non_add_path_peer_gets_single_best_path ... ok [INFO] [stdout] test rib::manager::get_gr_state_tests::test_get_gr_state_not_capable ... ok [INFO] [stdout] test rib::manager::gr_tests::encode_ipv6_eor_is_valid_mp_unreach_nlri ... ok [INFO] [stdout] test rib::manager::gr_tests::ipv6_eor_not_sent_to_ipv4_only_peer_on_deferral_end ... ok [INFO] [stdout] test rib::manager::get_gr_state_tests::test_get_gr_state_converged ... ok [INFO] [stdout] test rib::manager::gr_tests::test_eor_received_cancels_stalepath_timer ... ok [INFO] [stdout] test rib::manager::gr_tests::ipv6_eor_sent_to_v6_capable_peer_on_deferral_end ... ok [INFO] [stdout] test rib::manager::gr_tests::test_eor_received_clears_stale ... ok [INFO] [stdout] test rib::manager::gr_tests::test_enhanced_route_refresh_flag_stored ... ok [INFO] [stdout] test rib::manager::gr_tests::test_eor_received_ipv4_clears_ipv4_stale ... ok [INFO] [stdout] test rib::manager::gr_tests::test_eor_received_when_not_stale_is_noop ... ok [INFO] [stdout] test rib::manager::gr_tests::test_eor_received_ipv6_clears_v6_stale ... ok [INFO] [stdout] test rib::manager::gr_tests::test_gr_afi_mismatch_on_reconnect_flushes ... ok [INFO] [stdout] test rib::manager::gr_tests::test_eor_sent_to_all_peers_on_deferral_end ... ok [INFO] [stdout] test rib::manager::gr_tests::test_gr_peer_down_does_not_send_withdrawals ... ok [INFO] [stdout] test rib::manager::gr_tests::test_non_gr_peer_down_removes_routes ... ok [INFO] [stdout] test rib::manager::gr_tests::test_notification_gr_peer_retains_stale ... ok [INFO] [stdout] test rib::manager::gr_tests::test_gr_peer_down_retains_routes ... ok [INFO] [stdout] test rib::manager::gr_tests::test_notification_non_gr_peer_flushes ... ok [INFO] [stdout] test rib::manager::gr_tests::test_gr_state_transitions_to_stale_retention_on_peer_down ... ok [INFO] [stdout] test rib::manager::gr_tests::test_hard_reset_notification_flushes_routes ... ok [INFO] [stdout] test rib::manager::gr_tests::test_selection_deferral_active_on_restarting_mgr ... ok [INFO] [stdout] test rib::manager::gr_tests::test_selection_deferral_withholds_non_gr ... ok [INFO] [stdout] test rib::manager::gr_tests::test_selection_deferral_ends_on_all_eor ... ok [INFO] [stdout] test rib::manager::gr_tests::test_stalepath_timer_started_on_gr_peer_down ... ok [INFO] [stdout] test rib::manager::gr_tests::test_selection_deferral_timer_fires ... ok [INFO] [stdout] test rib::manager::gr_tests::test_stalepath_expiry_flushes_routes ... ok [INFO] [stdout] test rib::manager::gr_tests::test_peer_up_during_stale_retention_cancels_timer ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_handle_update_ipv6_withdraw_removes_from_v6_rib ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_handle_update_ipv6_nlri_inserts_into_v6_rib ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_ipv6_routes_do_not_contaminate_ipv4_rib ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_v6_inbound_policy_filters_route ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_ipv6_best_path_selection_in_handle_update ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_ipv6_outbound_gating_only_ipv6_peers ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::test_v6_outbound_next_hop_rewritten_to_local_address ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::v6_ebgp_outbound_creates_as_path_when_absent ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::v6_ebgp_outbound_prepends_own_as_to_existing_as_path ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::v6_ebgp_outbound_strips_rr_attributes ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::v6_ebgp_outbound_strips_local_pref ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::v6_populate_adj_rib_out_applies_ebgp_attrs_for_ebgp_peer ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_effective_mrai_ibgp_default_is_5s ... ok [INFO] [stdout] test rib::manager::ipv6_pipeline_tests::v6_ebgp_outbound_does_not_add_ipv4_next_hop ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_effective_mrai_ibgp_with_configured_value ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_announcements_deferred_when_timer_not_elapsed ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_effective_mrai_ebgp_default_is_30s ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_flush_mrai_pending_sends_updates_when_timer_elapsed ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_added_when_sending_to_customer ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_effective_mrai_returns_configured_value ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_not_added_when_no_role ... ok [INFO] [stdout] test rib::manager::mrai_tests::mrai_withdrawals_bypass_mrai_and_sent_immediately ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_not_duplicated_when_already_present ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_not_added_when_sending_to_provider ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_not_added_when_sending_to_rs ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_ingress_accepted_from_peer_local_peer ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_ingress_not_triggered_without_otc ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_ingress_accepted_from_provider_local_customer ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_ingress_not_triggered_when_no_role_configured ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_ingress_rejected_from_customer_local_provider ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_ingress_rejected_from_rs_client_local_rs ... ok [INFO] [stdout] test rib::manager::otc_tests::rpki_prefer_valid_does_not_drop_invalid_route ... ok [INFO] [stdout] test rib::manager::otc_tests::rpki_route_gets_valid_on_insertion_when_vrp_matches ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_added_when_sending_to_peer ... ok [INFO] [stdout] test rib::manager::otc_tests::rpki_reject_invalid_drops_route_with_invalid_state ... ok [INFO] [stdout] test rib::manager::otc_tests::rpki_route_without_as_path_gets_not_found ... ok [INFO] [stdout] test rib::manager::otc_tests::otc_egress_added_when_sending_to_rs_client ... ok [INFO] [stdout] test rib::manager::otc_tests::rpki_vrp_update_re_validates_existing_routes ... ok [INFO] [stdout] test rib::manager::route_refresh_tests::route_refresh_received_with_routes_sends_borr_updates_eorr_end_of_rib ... ok [INFO] [stdout] test rib::manager::route_refresh_tests::route_refresh_received_empty_adj_rib_out_sends_borr_eorr_end_of_rib ... ok [INFO] [stdout] test rib::manager::route_refresh_tests::soft_reconfig_in_capable_peer_sends_route_refresh ... ok [INFO] [stdout] test rib::manager::soft_reconfig_tests::soft_reconfig_permit_to_deny_removes_route_from_loc_rib ... ok [INFO] [stdout] test rib::manager::soft_reconfig_tests::soft_reconfig_deny_to_permit_adds_route_to_loc_rib ... ok [INFO] [stdout] test rib::manager::tests::aggregator_passes_through_ibgp ... ok [INFO] [stdout] test rib::manager::tests::aggregator_passes_through ... ok [INFO] [stdout] test rib::manager::soft_reconfig_tests::soft_reconfig_rebuilds_policy_db_before_replay ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_adds_next_hop_when_absent ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_creates_as_path_when_absent ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_does_not_mutate_other_attrs ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_inserts_sequence_before_leading_set ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_rewrites_next_hop ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_prepends_own_as_to_existing_sequence ... ok [INFO] [stdout] test rib::manager::route_refresh_tests::soft_reconfig_in_unknown_peer_returns_err ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_strips_cluster_list ... ok [INFO] [stdout] test rib::manager::tests::apply_ibgp_outbound_attrs_adds_next_hop_when_absent ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_strips_local_pref ... ok [INFO] [stdout] test rib::manager::route_refresh_tests::soft_reconfig_in_non_capable_peer_returns_err ... ok [INFO] [stdout] test rib::manager::tests::apply_ibgp_outbound_attrs_preserves_local_pref ... ok [INFO] [stdout] test rib::manager::tests::apply_ibgp_outbound_attrs_preserves_as_path ... ok [INFO] [stdout] test rib::manager::tests::apply_ebgp_outbound_attrs_strips_originator_id ... ok [INFO] [stdout] test rib::manager::tests::atomic_aggregate_passes_through_ibgp ... ok [INFO] [stdout] test rib::manager::tests::fib_sync_excludes_unreachable_next_hop ... ok [INFO] [stdout] test rib::manager::tests::apply_ibgp_outbound_attrs_rewrites_next_hop ... ok [INFO] [stdout] test rib::manager::tests::fib_sync_includes_reachable_next_hop ... ok [INFO] [stdout] test rib::manager::tests::atomic_aggregate_passes_through ... ok [INFO] [stdout] test rib::manager::tests::fib_sync_not_sent_when_no_fib_tx ... ok [INFO] [stdout] test rib::manager::tests::fib_sync_triggered_after_handle_update ... ok [INFO] [stdout] test rib::manager::tests::fib_sync_excludes_route_without_next_hop ... ok [INFO] [stdout] test rib::adj_rib_out::tests::set_routes_with_empty_vec ... ok [INFO] [stdout] test rib::manager::get_gr_state_tests::test_get_gr_state_stale_retention ... ok [INFO] [stdout] test rib::manager::tests::fib_sync_triggered_after_peer_down ... ok [INFO] [stdout] test rib::manager::tests::handle_update_ebgp_no_policy_rejected ... ok [INFO] [stdout] test rib::manager::tests::handle_update_ebgp_with_permit_all_inbound_accepted ... ok [INFO] [stdout] test rib::manager::tests::handle_peer_down_clears_adj_rib_in_for_downed_peer ... ok [INFO] [stdout] test rib::manager::tests::handle_update_ebgp_with_deny_all_inbound_rejected ... ok [INFO] [stdout] test rib::manager::tests::handle_peer_down_with_two_peers_keeps_remaining_peer_route ... ok [INFO] [stdout] test rib::manager::tests::handle_update_ibgp_no_policy_passes_through ... ok [INFO] [stdout] test rib::manager::tests::normalize_local_pref_ebgp_adds_100 ... ok [INFO] [stdout] test rib::manager::tests::handle_update_inserts_into_adj_rib_in_and_loc_rib ... ok [INFO] [stdout] test rib::manager::tests::ibgp_learned_route_readvertised_to_ebgp_peer ... ok [INFO] [stdout] test rib::manager::tests::ibgp_split_horizon_not_readvertised_to_ibgp_peer ... ok [INFO] [stdout] test rib::manager::tests::keep_as4_for_2byte_peer ... ok [INFO] [stdout] test rib::manager::tests::loop_prevention_cluster_list_drops_own_cluster_id ... ok [INFO] [stdout] test rib::manager::tests::ibgp_outbound_includes_local_pref_attribute ... ok [INFO] [stdout] test rib::manager::tests::normalize_local_pref_ebgp_removes_existing_local_pref ... ok [INFO] [stdout] test rib::manager::tests::normalize_local_pref_ibgp_no_addition_when_absent ... ok [INFO] [stdout] test rib::manager::tests::normalize_local_pref_ibgp_preserves_value ... ok [INFO] [stdout] test rib::manager::tests::pack_updates_empty_routes_returns_empty ... ok [INFO] [stdout] test rib::manager::tests::pack_updates_different_next_hop_produces_two_updates ... ok [INFO] [stdout] test rib::manager::tests::loop_prevention_originator_id_drops_own_bgp_id ... ok [INFO] [stdout] test rib::manager::tests::peer_up_triggers_populate_and_send ... ok [INFO] [stdout] test rib::manager::tests::populate_adj_rib_out_ebgp_no_policy_excluded ... ok [INFO] [stdout] test rib::manager::tests::pack_updates_three_routes_identical_attrs_produces_one_update ... ok [INFO] [stdout] test rib::manager::tests::populate_adj_rib_out_ibgp_no_policy_included ... ok [INFO] [stdout] test rib::manager::tests::reflection_ebgp_source_always_reflected ... ok [INFO] [stdout] test rib::manager::tests::populate_adj_rib_out_ebgp_with_permit_all_outbound_included ... ok [INFO] [stdout] test rib::manager::tests::reflection_client_source_reflected_to_nonclient ... ok [INFO] [stdout] test rib::manager::tests::reflection_nonclient_source_only_to_clients ... ok [INFO] [stdout] test rib::manager::tests::rr_outbound_adds_originator_id_when_absent ... ok [INFO] [stdout] test rib::manager::tests::rr_outbound_prepends_cluster_id_to_existing_list ... ok [INFO] [stdout] test rib::manager::tests::rr_outbound_does_not_overwrite_existing_originator_id ... ok [INFO] [stdout] test rib::manager::tests::strip_as4_for_4byte_peer ... ok [INFO] [stdout] test rib::manager::v6_fib_tests::fib_v6_link_local_with_interface_index ... ok [INFO] [stdout] test rib::manager::tests::rr_outbound_creates_cluster_list_when_absent ... ok [INFO] [stdout] test rib::manager::tests::send_outbound_updates_sends_to_all_connected_peers ... ok [INFO] [stdout] test rib::manager::tests::send_outbound_updates_skips_peers_with_empty_adj_rib_out ... ok [INFO] [stdout] test rib::manager::v6_fib_tests::fib_v6_sync_sends_snapshot_on_update ... ok [INFO] [stdout] test rib::manager::v6_fib_tests::fib_v6_sync_on_peer_down ... ok [INFO] [stdout] test rib::path_id::tests::different_afi_safi_have_independent_counters ... ok [INFO] [stdout] test rib::manager::v6_fib_tests::fib_v6_link_local_excluded_without_interface_index ... ok [INFO] [stdout] test rib::manager::v6_fib_tests::fib_v6_not_sent_when_no_fib_tx_v6 ... ok [INFO] [stdout] test rib::path_id::tests::first_id_is_one ... ok [INFO] [stdout] test rib::manager::v6_fib_tests::fib_v6_snapshot_excludes_no_nexthop ... ok [INFO] [stdout] test rib::path_id::tests::reset_peer_nonexistent_does_not_panic ... ok [INFO] [stdout] test rib::types::tests::local_pref_ibgp_defaults_to_100_when_absent ... ok [INFO] [stdout] test rib::path_id::tests::ids_increment_monotonically ... ok [INFO] [stdout] test rib::types::tests::local_pref_ibgp_uses_attribute ... ok [INFO] [stdout] test rib::types::tests::local_pref_ebgp_ignores_attribute ... ok [INFO] [stdout] test rib::path_id::tests::reset_peer_removes_all_counters_for_that_peer ... ok [INFO] [stdout] test rib::types::tests::med_returns_attribute_value ... ok [INFO] [stdout] test rib::types::tests::med_returns_none_when_absent ... ok [INFO] [stdout] test rib::path_id::tests::different_peers_have_independent_counters ... ok [INFO] [stdout] test rib::types::tests::neighboring_as_none_when_no_as_path ... ok [INFO] [stdout] test rib::types::tests::neighboring_as_returns_first_sequence_entry ... ok [INFO] [stdout] test rib::types::tests::next_hop_returns_attribute_value ... ok [INFO] [stdout] test rib::types::tests::origin_returns_attribute_value ... ok [INFO] [stdout] test rib::types::tests::v6_local_pref_ebgp_returns_100 ... ok [INFO] [stdout] test rib::types::tests::v6_local_pref_ibgp_defaults_to_100 ... ok [INFO] [stdout] test rib::types::tests::v6_med_returns_attribute_value ... ok [INFO] [stdout] test rib::types::tests::neighboring_as_none_when_starts_with_set ... ok [INFO] [stdout] test rib::types::tests::route_source_is_ebgp ... ok [INFO] [stdout] test rib::types::tests::v6_is_stale_defaults_false ... ok [INFO] [stdout] test rib::types::tests::v6_med_returns_none_when_absent ... ok [INFO] [stdout] test rib::types::tests::v6_local_pref_ibgp_uses_attribute ... ok [INFO] [stdout] test rib::types::tests::v6_neighboring_as_returns_first_sequence_entry ... ok [INFO] [stdout] test rib::types::tests::v6_next_hop_v6_returns_none_when_absent ... ok [INFO] [stdout] test rib::types::tests::v6_origin_returns_attribute_value ... ok [INFO] [stdout] test rpki::codec::tests::decode_cache_reset ... ok [INFO] [stdout] test rpki::codec::tests::decode_end_of_data_v0_defaults ... ok [INFO] [stdout] test rpki::codec::tests::decode_cache_response_correct_session_id ... ok [INFO] [stdout] test rpki::codec::tests::decode_end_of_data_v1_correct_fields ... ok [INFO] [stdout] test rpki::codec::tests::decode_ipv4_prefix_correct_fields ... ok [INFO] [stdout] test rpki::codec::tests::decode_returns_none_when_partial_pdu_body ... ok [INFO] [stdout] test rpki::codec::tests::decode_ipv6_prefix_correct_fields ... ok [INFO] [stdout] test rib::types::tests::v6_next_hop_v6_returns_from_mp_reach ... ok [INFO] [stdout] test rpki::codec::tests::decode_returns_none_when_insufficient_bytes ... ok [INFO] [stdout] test rpki::codec::tests::encode_serial_query_correct_session_id_and_serial ... ok [INFO] [stdout] test rpki::manager::tests::test_reset_query_flow_populates_vrp_table ... ok [INFO] [stdout] test rpki::codec::tests::encode_reset_query_is_8_bytes_with_type_2 ... ok [INFO] [stdout] test rpki::types::tests::origin_as_returns_last_asn_in_last_sequence ... ok [INFO] [stdout] test rpki::types::tests::origin_as_ignores_set_finds_last_sequence ... ok [INFO] [stdout] test rpki::types::tests::origin_as_returns_last_sequence_segment ... ok [INFO] [stdout] test rpki::types::tests::origin_as_returns_none_for_no_as_path_attribute ... ok [INFO] [stdout] test rpki::types::tests::origin_as_returns_none_for_empty_as_path ... ok [INFO] [stdout] test rpki::types::tests::origin_as_returns_none_for_set_only_path ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv4_covering_vrp_at_slash16_validates_slash24_with_max_length_24 ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv4_invalid_when_route_exceeds_vrp_max_length ... ok [INFO] [stdout] test rpki::types::tests::rpki_policy_serde_roundtrip_prefer_valid ... ok [INFO] [stdout] test rpki::types::tests::rpki_policy_serde_roundtrip_reject_invalid ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv4_invalid_when_vrp_covers_but_asn_does_not_match ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv4_not_found_when_no_vrp_covers_prefix ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv4_valid_when_vrp_covers_and_asn_matches ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv6_covering_prefix_valid ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv6_invalid_when_asn_mismatch ... ok [INFO] [stdout] test rpki::types::tests::validation_state_default_is_not_found ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv6_not_found_when_no_vrp ... ok [INFO] [stdout] test rpki::types::tests::validation_state_display ... ok [INFO] [stdout] test rpki::types::tests::validate_ipv6_valid_when_vrp_covers_and_asn_matches ... ok [INFO] [stdout] test tcp_md5::tests::build_listener_with_md5_binds_with_key ... ignored [INFO] [stdout] test tcp_md5::tests::connect_with_md5_creates_socket ... ignored [INFO] [stdout] test tcp_md5::tests::set_tcp_md5sig_on_loopback ... ignored [INFO] [stdout] test rpki::types::tests::vrp_table_clear_resets_everything ... ok [INFO] [stdout] test rpki::types::tests::validation_state_preference_values ... ok [INFO] [stdout] test rpki::types::tests::vrp_table_insert_v4_and_count ... ok [INFO] [stdout] test tcp_md5::tests::tcp_md5sig_struct_size ... ok [INFO] [stdout] test rib::manager::tests::peer_up_triggers_outbound_send_to_new_peer ... ok [INFO] [stdout] test rpki::manager::tests::test_reconnect_with_same_session_id_sends_serial_query ... ok [INFO] [stdout] test rpki::manager::tests::test_withdrawal_removes_vrp_from_table ... ok [INFO] [stdout] test rpki::manager::tests::test_stale_retention_on_disconnect ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 680 passed; 0 failed; 5 ignored; 0 measured; 0 filtered out; finished in 0.20s [INFO] [stdout] [INFO] [stderr] Running unittests src/bin/cli/main.rs (/opt/rustwide/target/debug/deps/openrouter_cli-e60c6a2cabe4f273) [INFO] [stdout] [INFO] [stdout] running 53 tests [INFO] [stdout] test commands::tests::test_build_peer_as_map ... ok [INFO] [stdout] test commands::tests::test_clear_bgp_peer_addr_formatting ... ok [INFO] [stdout] test commands::tests::test_clear_bgp_peer_token_parsing ... ok [INFO] [stdout] test commands::tests::test_help_clear_root ... ok [INFO] [stdout] test commands::tests::test_help_clear_bgp ... ok [INFO] [stdout] test commands::tests::test_help_exec_root ... ok [INFO] [stdout] test commands::tests::test_help_config_root ... ok [INFO] [stdout] test commands::tests::test_help_root_includes_clear ... ok [INFO] [stdout] test commands::tests::test_help_show_bgp ... ok [INFO] [stdout] test completer::tests::test_completer_config_neighbor_addr_subcommands ... ok [INFO] [stdout] test completer::tests::test_completer_config_neighbor_shows_peers ... ok [INFO] [stdout] test completer::tests::test_completer_config_no_neighbor_addr_subcommands ... ok [INFO] [stdout] test completer::tests::test_completer_config_no_neighbor_shows_peers ... ok [INFO] [stdout] test completer::tests::test_completer_exec_partial_sh ... ok [INFO] [stdout] test completer::tests::test_completer_config_root_empty_line ... ok [INFO] [stdout] test completer::tests::test_completer_exec_root_empty_line ... ok [INFO] [stdout] test completer::tests::test_completer_exec_show_bgp_subcommands ... ok [INFO] [stdout] test completer::tests::test_completer_exec_show_bfd_subcommands ... ok [INFO] [stdout] test completer::tests::test_completer_exec_show_ip_subcommands ... ok [INFO] [stdout] test completer::tests::test_completer_exec_show_ipv6_subcommands ... ok [INFO] [stdout] test display::tests::test_format_bfd_peers_empty ... ok [INFO] [stdout] test completer::tests::test_completer_exec_show_subcommands ... ok [INFO] [stdout] test display::tests::test_format_bgp_summary_as_lookup ... ok [INFO] [stdout] test display::tests::test_format_bgp_summary_header_columns ... ok [INFO] [stdout] test commands::tests::test_help_show_root ... ok [INFO] [stdout] test display::tests::test_format_bfd_peers_with_session ... ok [INFO] [stdout] test commands::tests::test_help_unknown_context_returns_no_completions ... ok [INFO] [stdout] test completer::tests::test_completer_mode_switch_via_arc ... ok [INFO] [stdout] test display::tests::test_format_bgp_summary_separator_line ... ok [INFO] [stdout] test display::tests::test_format_bgp_summary_hold_time_na_when_zero ... ok [INFO] [stdout] test display::tests::test_format_neighbor_detail_matches_with_port ... ok [INFO] [stdout] test display::tests::test_format_bgp_summary_strips_port ... ok [INFO] [stdout] test display::tests::test_format_neighbor_detail_found ... ok [INFO] [stdout] test display::tests::test_format_neighbor_detail_omits_bgp_role_when_empty ... ok [INFO] [stdout] test display::tests::test_format_bgp_summary_two_data_rows ... ok [INFO] [stdout] test display::tests::test_format_neighbor_detail_shows_local_role_only ... ok [INFO] [stdout] test display::tests::test_format_rib_table_ipv4_only ... ok [INFO] [stdout] test display::tests::test_format_neighbor_detail_shows_bgp_roles ... ok [INFO] [stdout] test display::tests::test_format_neighbor_detail_shows_shutdown_reason ... ok [INFO] [stdout] test display::tests::test_format_rib_table_columns ... ok [INFO] [stdout] test display::tests::test_strip_port_with_port ... ok [INFO] [stdout] test display::tests::test_format_rib_table_no_routes ... ok [INFO] [stdout] test display::tests::test_format_rib_table_ipv6_only ... ok [INFO] [stdout] test display::tests::test_format_running_config_basic ... ok [INFO] [stdout] test display::tests::test_strip_port_without_port ... ok [INFO] [stdout] test display::tests::test_format_running_config_with_peer ... ok [INFO] [stdout] test prompt::tests::test_config_prompt_text ... ok [INFO] [stdout] test prompt::tests::test_prompt_indicator_is_hash_space ... ok [INFO] [stdout] test prompt::tests::test_cli_mode_default_is_exec ... ok [INFO] [stdout] test prompt::tests::test_exec_prompt_text ... ok [INFO] [stdout] test prompt::tests::test_prompt_right_is_empty ... ok [INFO] [stdout] test display::tests::test_format_neighbor_detail_no_shutdown_reason_hidden ... ok [INFO] [stderr] Running tests/session_isolation.rs (/opt/rustwide/target/debug/deps/session_isolation-41f4415257563574) [INFO] [stdout] test display::tests::test_format_neighbor_detail_not_found ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 53 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 1 test [INFO] [stderr] Doc-tests openrouter [INFO] [stdout] test test_peer_isolation_hold_timer ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [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" "48be7b1e4c659982945abf1a72b8b5923b5603c93368c97744447404b6343e0a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "48be7b1e4c659982945abf1a72b8b5923b5603c93368c97744447404b6343e0a", kill_on_drop: false }` [INFO] [stdout] 48be7b1e4c659982945abf1a72b8b5923b5603c93368c97744447404b6343e0a