[INFO] cloning repository https://github.com/KAHU-radar/kahu-daemon [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/KAHU-radar/kahu-daemon" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKAHU-radar%2Fkahu-daemon", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKAHU-radar%2Fkahu-daemon'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 822215772d18b68b7c703efd647d376312c42321 [INFO] testing KAHU-radar/kahu-daemon against 1.95.0 for beta-1.96-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKAHU-radar%2Fkahu-daemon" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/KAHU-radar/kahu-daemon [INFO] finished tweaking git repo https://github.com/KAHU-radar/kahu-daemon [INFO] tweaked toml for git repo https://github.com/KAHU-radar/kahu-daemon written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/KAHU-radar/kahu-daemon on toolchain 1.95.0 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/KAHU-radar/kahu-daemon already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded postgres-protocol v0.6.11 [INFO] [stderr] Downloaded whoami v2.1.1 [INFO] [stderr] Downloaded sha2 v0.11.0 [INFO] [stderr] Downloaded objc2-system-configuration v0.3.2 [INFO] [stderr] Downloaded typed-builder v0.19.1 [INFO] [stderr] Downloaded postgres-types v0.2.13 [INFO] [stderr] Downloaded dary_heap v0.3.8 [INFO] [stderr] Downloaded errno v0.2.8 [INFO] [stderr] Downloaded env_filter v1.0.1 [INFO] [stderr] Downloaded wasite v1.0.2 [INFO] [stderr] Downloaded protobuf-support v3.7.2 [INFO] [stderr] Downloaded typed-builder-macro v0.19.1 [INFO] [stderr] Downloaded rand_core v0.10.0 [INFO] [stderr] Downloaded libflate_lz77 v2.2.0 [INFO] [stderr] Downloaded env_logger v0.11.10 [INFO] [stderr] Downloaded nmea-parser v0.10.0 [INFO] [stderr] Downloaded jiff-static v0.2.23 [INFO] [stderr] Downloaded regex-lite v0.1.9 [INFO] [stderr] Downloaded tokio-postgres v0.7.17 [INFO] [stderr] Downloaded protobuf-parse v3.7.2 [INFO] [stderr] Downloaded rand v0.10.0 [INFO] [stderr] Downloaded apache-avro v0.17.0 [INFO] [stderr] Downloaded protobuf v3.7.2 [INFO] [stderr] Downloaded bigdecimal v0.4.10 [INFO] [stderr] Downloaded protobuf-codegen v3.7.2 [INFO] [stderr] Downloaded md-5 v0.11.0 [INFO] [stderr] Downloaded const-oid v0.10.2 [INFO] [stderr] Downloaded libflate v2.2.1 [INFO] [stderr] Downloaded nalgebra v0.33.3 [INFO] [stderr] Downloaded hmac v0.13.0 [INFO] [stderr] Downloaded ctutils v0.4.2 [INFO] [stderr] Downloaded jiff v0.2.23 [INFO] [stderr] Downloaded pcap v2.4.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/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" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 0f4707d5b5d4537b31e9dde02b1994485e7142e8b1aa2a736f50750791455803 [INFO] running `Command { std: "docker" "start" "-a" "0f4707d5b5d4537b31e9dde02b1994485e7142e8b1aa2a736f50750791455803", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0f4707d5b5d4537b31e9dde02b1994485e7142e8b1aa2a736f50750791455803", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0f4707d5b5d4537b31e9dde02b1994485e7142e8b1aa2a736f50750791455803", kill_on_drop: false }` [INFO] [stdout] 0f4707d5b5d4537b31e9dde02b1994485e7142e8b1aa2a736f50750791455803 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/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" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 27253ad19daaae39c0440212f76663fd6a70811b1fad883f27b4527331660706 [INFO] running `Command { std: "docker" "start" "-a" "27253ad19daaae39c0440212f76663fd6a70811b1fad883f27b4527331660706", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.184 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling once_cell v1.21.4 [INFO] [stderr] Compiling syn v2.0.117 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling regex-syntax v0.8.10 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling getrandom v0.4.2 [INFO] [stderr] Compiling rand_core v0.10.0 [INFO] [stderr] Compiling ctutils v0.4.2 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Compiling const-oid v0.10.2 [INFO] [stderr] Compiling protobuf v3.7.2 [INFO] [stderr] Compiling digest v0.11.2 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling linux-raw-sys v0.4.15 [INFO] [stderr] Compiling anyhow v1.0.102 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling tinyvec v1.11.0 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling home v0.5.12 [INFO] [stderr] Compiling fastrand v2.4.1 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling cc v1.2.59 [INFO] [stderr] Compiling indexmap v2.13.1 [INFO] [stderr] Compiling unicode-normalization v0.1.25 [INFO] [stderr] Compiling which v4.4.2 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling anstyle-parse v1.0.0 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling socket2 v0.6.3 [INFO] [stderr] Compiling mio v1.2.0 [INFO] [stderr] Compiling chacha20 v0.10.0 [INFO] [stderr] Compiling ahash v0.7.8 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling radium v0.7.0 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling bytemuck v1.25.0 [INFO] [stderr] Compiling anstyle v1.0.14 [INFO] [stderr] Compiling libm v0.2.16 [INFO] [stderr] Compiling colorchoice v1.0.5 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling anstream v1.0.0 [INFO] [stderr] Compiling stringprep v0.1.5 [INFO] [stderr] Compiling safe_arch v0.7.4 [INFO] [stderr] Compiling libsqlite3-sys v0.28.0 [INFO] [stderr] Compiling rand v0.10.0 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling uuid v1.23.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling tokio-macros v2.7.0 [INFO] [stderr] Compiling md-5 v0.11.0 [INFO] [stderr] Compiling hmac v0.13.0 [INFO] [stderr] Compiling sha2 v0.11.0 [INFO] [stderr] Compiling matrixmultiply v0.3.10 [INFO] [stderr] Compiling tokio v1.51.1 [INFO] [stderr] Compiling bigdecimal v0.4.10 [INFO] [stderr] Compiling libloading v0.8.9 [INFO] [stderr] Compiling siphasher v1.0.2 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling protobuf-support v3.7.2 [INFO] [stderr] Compiling snap v1.1.1 [INFO] [stderr] Compiling rle-decode-fast v1.0.3 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling tap v1.0.1 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling fallible-iterator v0.2.0 [INFO] [stderr] Compiling wyz v0.5.1 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling postgres-protocol v0.6.11 [INFO] [stderr] Compiling libflate_lz77 v2.2.0 [INFO] [stderr] Compiling phf_shared v0.13.1 [INFO] [stderr] Compiling pcap v2.4.0 [INFO] [stderr] Compiling typed-builder-macro v0.19.1 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling wide v0.7.33 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling chrono v0.4.44 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling num-complex v0.4.6 [INFO] [stderr] Compiling protobuf-parse v3.7.2 [INFO] [stderr] Compiling approx v0.5.1 [INFO] [stderr] Compiling adler32 v1.2.0 [INFO] [stderr] Compiling clap_lex v1.1.0 [INFO] [stderr] Compiling data-encoding v2.10.0 [INFO] [stderr] Compiling dary_heap v0.3.8 [INFO] [stderr] Compiling winnow v0.7.15 [INFO] [stderr] Compiling funty v2.0.0 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling protobuf-codegen v3.7.2 [INFO] [stderr] Compiling bitvec v1.0.1 [INFO] [stderr] Compiling tungstenite v0.24.0 [INFO] [stderr] Compiling libflate v2.2.1 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling clap_builder v4.6.0 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling simba v0.9.1 [INFO] [stderr] Compiling postgres-types v0.2.13 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling hashbrown v0.12.3 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling typed-builder v0.19.1 [INFO] [stderr] Compiling env_filter v1.0.1 [INFO] [stderr] Compiling kahu-daemon v0.3.0 (/opt/rustwide/workdir) [INFO] [stderr] Compiling hashlink v0.9.1 [INFO] [stderr] Compiling phf v0.13.1 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling clap_derive v4.6.0 [INFO] [stderr] Compiling nalgebra-macros v0.2.2 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling num-rational v0.4.2 [INFO] [stderr] Compiling errno v0.2.8 [INFO] [stderr] Compiling whoami v2.1.1 [INFO] [stderr] Compiling serde_bytes v0.11.19 [INFO] [stderr] Compiling strum v0.26.3 [INFO] [stderr] Compiling regex-lite v0.1.9 [INFO] [stderr] Compiling jiff v0.2.23 [INFO] [stderr] Compiling fallible-iterator v0.3.0 [INFO] [stderr] Compiling fallible-streaming-iterator v0.1.9 [INFO] [stderr] Compiling tokio-postgres v0.7.17 [INFO] [stderr] Compiling rusqlite v0.31.0 [INFO] [stderr] Compiling apache-avro v0.17.0 [INFO] [stderr] Compiling clap v4.6.0 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling nmea-parser v0.10.0 [INFO] [stderr] Compiling tokio-tungstenite v0.24.0 [INFO] [stderr] Compiling nalgebra v0.33.3 [INFO] [stderr] Compiling env_logger v0.11.10 [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/output/timescale.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/output/spoke_store.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/output/spoke_store.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `prev_ts_us` is never read [INFO] [stdout] --> src/input/pcap.rs:367:9 [INFO] [stdout] | [INFO] [stdout] 367 | prev_ts_us = None; // Reset timestamps at loop boundary. [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `active_cells` is never used [INFO] [stdout] --> src/clutter.rs:106:12 [INFO] [stdout] | [INFO] [stdout] 46 | impl ClutterMap { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn active_cells(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `source` is never read [INFO] [stdout] --> src/input/mod.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 22 | pub struct SpokeFrame { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | pub source: SourceKind, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SpokeFrame` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `WebSocket` and `Stdin` are never constructed [INFO] [stdout] --> src/input/mod.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 29 | pub enum SourceKind { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 30 | WebSocket, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 31 | Stdin, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SourceKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `cog_deg` and `sog_kts` are never read [INFO] [stdout] --> src/input/mod.rs:47:31 [INFO] [stdout] | [INFO] [stdout] 47 | Rmc { lat: f64, lon: f64, cog_deg: f64, sog_kts: f64 }, [INFO] [stdout] | --- ^^^^^^^ ^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `NmeaSentence` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `speed_kts` is never read [INFO] [stdout] --> src/input/mod.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 51 | Rattm { [INFO] [stdout] | ----- field in this variant [INFO] [stdout] ... [INFO] [stdout] 55 | speed_kts: f64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `NmeaSentence` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `raw` is never read [INFO] [stdout] --> src/input/mod.rs:58:13 [INFO] [stdout] | [INFO] [stdout] 58 | Aivdm { raw: String }, [INFO] [stdout] | ----- ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `NmeaSentence` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SPOKE_PIXELS` is never used [INFO] [stdout] --> src/input/pcap.rs:53:11 [INFO] [stdout] | [INFO] [stdout] 53 | pub const SPOKE_PIXELS: usize = 1024; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NAVICO_SPOKES_PER_FRAME` is never used [INFO] [stdout] --> src/input/pcap.rs:57:11 [INFO] [stdout] | [INFO] [stdout] 57 | pub const NAVICO_SPOKES_PER_FRAME: usize = 32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NAVICO_SPOKES_RAW` is never used [INFO] [stdout] --> src/input/pcap.rs:59:11 [INFO] [stdout] | [INFO] [stdout] 59 | pub const NAVICO_SPOKES_RAW: u32 = 4096; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SinkEvent` is never used [INFO] [stdout] --> src/output/mod.rs:40:10 [INFO] [stdout] | [INFO] [stdout] 40 | pub enum SinkEvent { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `OutputSink` is never used [INFO] [stdout] --> src/output/mod.rs:61:11 [INFO] [stdout] | [INFO] [stdout] 61 | pub trait OutputSink: Send { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OutputRouter` is never constructed [INFO] [stdout] --> src/output/mod.rs:75:12 [INFO] [stdout] | [INFO] [stdout] 75 | pub struct OutputRouter { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `spawn` are never used [INFO] [stdout] --> src/output/mod.rs:80:12 [INFO] [stdout] | [INFO] [stdout] 79 | impl OutputRouter { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 80 | pub fn new(sinks: Vec>) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn spawn(mut self) -> mpsc::Sender { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TrackServerSink` is never constructed [INFO] [stdout] --> src/output/trackserver.rs:19:12 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct TrackServerSink { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/output/trackserver.rs:25:12 [INFO] [stdout] | [INFO] [stdout] 24 | impl TrackServerSink { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] 25 | pub fn new(host: &str, port: u16, api_key: &str, min_fixes: usize) -> anyhow::Result { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BATCH_SIZE` is never used [INFO] [stdout] --> src/output/timescale.rs:44:7 [INFO] [stdout] | [INFO] [stdout] 44 | const BATCH_SIZE: usize = 50; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `BATCH_TIMEOUT` is never used [INFO] [stdout] --> src/output/timescale.rs:46:7 [INFO] [stdout] | [INFO] [stdout] 46 | const BATCH_TIMEOUT: Duration = Duration::from_millis(500); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TargetRow` is never constructed [INFO] [stdout] --> src/output/timescale.rs:52:12 [INFO] [stdout] | [INFO] [stdout] 52 | pub struct TargetRow { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `track_to_rows` is never used [INFO] [stdout] --> src/output/timescale.rs:60:8 [INFO] [stdout] | [INFO] [stdout] 60 | pub fn track_to_rows(track: &Track) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TimescaleSink` is never constructed [INFO] [stdout] --> src/output/timescale.rs:71:12 [INFO] [stdout] | [INFO] [stdout] 71 | pub struct TimescaleSink { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `ensure_connected`, `flush`, and `should_flush` are never used [INFO] [stdout] --> src/output/timescale.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 78 | impl TimescaleSink { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 79 | pub fn new(url: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | async fn ensure_connected(&mut self) -> anyhow::Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | async fn flush(&mut self) -> anyhow::Result<()> { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | fn should_flush(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `spawn` is never used [INFO] [stdout] --> src/output/spoke_store.rs:57:8 [INFO] [stdout] | [INFO] [stdout] 57 | pub fn spawn(dir: impl Into) -> mpsc::Sender { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Session` is never constructed [INFO] [stdout] --> src/output/spoke_store.rs:73:8 [INFO] [stdout] | [INFO] [stdout] 73 | struct Session { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new` and `write_frame` are never used [INFO] [stdout] --> src/output/spoke_store.rs:82:8 [INFO] [stdout] | [INFO] [stdout] 81 | impl Session { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 82 | fn new(dir: &Path) -> anyhow::Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | fn write_frame(&mut self, bytes: &Bytes) -> anyhow::Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run` is never used [INFO] [stdout] --> src/output/spoke_store.rs:113:4 [INFO] [stdout] | [INFO] [stdout] 113 | fn run(mut rx: mpsc::Receiver, dir: &Path) -> anyhow::Result<()> { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `init_schema` is never used [INFO] [stdout] --> src/output/spoke_store.rs:158:4 [INFO] [stdout] | [INFO] [stdout] 158 | fn init_schema(db: &Connection) -> anyhow::Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `insert_session` is never used [INFO] [stdout] --> src/output/spoke_store.rs:171:4 [INFO] [stdout] | [INFO] [stdout] 171 | fn insert_session(db: &Connection, s: &Session) -> anyhow::Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `update_session` is never used [INFO] [stdout] --> src/output/spoke_store.rs:180:4 [INFO] [stdout] | [INFO] [stdout] 180 | fn update_session(db: &Connection, s: &Session) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 05s [INFO] running `Command { std: "docker" "inspect" "27253ad19daaae39c0440212f76663fd6a70811b1fad883f27b4527331660706", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "27253ad19daaae39c0440212f76663fd6a70811b1fad883f27b4527331660706", kill_on_drop: false }` [INFO] [stdout] 27253ad19daaae39c0440212f76663fd6a70811b1fad883f27b4527331660706 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/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" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c4d6995c529a245085e7c68d7c8a85be40e7c82cca2266f33cf6ffd916790d95 [INFO] running `Command { std: "docker" "start" "-a" "c4d6995c529a245085e7c68d7c8a85be40e7c82cca2266f33cf6ffd916790d95", kill_on_drop: false }` [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling rustix v1.1.4 [INFO] [stderr] Compiling linux-raw-sys v0.12.1 [INFO] [stderr] Compiling fastrand v2.4.1 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Compiling rusqlite v0.31.0 [INFO] [stderr] Compiling which v4.4.2 [INFO] [stderr] Compiling tempfile v3.27.0 [INFO] [stderr] Compiling protobuf-parse v3.7.2 [INFO] [stderr] Compiling protobuf-codegen v3.7.2 [INFO] [stderr] Compiling kahu-daemon v0.3.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::sync::Arc` [INFO] [stdout] --> src/output/spoke_store.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | use std::sync::Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `prev_ts_us` is never read [INFO] [stdout] --> src/input/pcap.rs:367:9 [INFO] [stdout] | [INFO] [stdout] 367 | prev_ts_us = None; // Reset timestamps at loop boundary. [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/input/pcap.rs:540:17 [INFO] [stdout] | [INFO] [stdout] 540 | let mut h = make_header( [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `active_cells` is never used [INFO] [stdout] --> src/clutter.rs:106:12 [INFO] [stdout] | [INFO] [stdout] 46 | impl ClutterMap { [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 106 | pub fn active_cells(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `source` is never read [INFO] [stdout] --> src/input/mod.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 22 | pub struct SpokeFrame { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | pub source: SourceKind, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SpokeFrame` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `WebSocket` and `Stdin` are never constructed [INFO] [stdout] --> src/input/mod.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 29 | pub enum SourceKind { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 30 | WebSocket, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 31 | Stdin, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SourceKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `cog_deg` and `sog_kts` are never read [INFO] [stdout] --> src/input/mod.rs:47:31 [INFO] [stdout] | [INFO] [stdout] 47 | Rmc { lat: f64, lon: f64, cog_deg: f64, sog_kts: f64 }, [INFO] [stdout] | --- ^^^^^^^ ^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `NmeaSentence` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `raw` is never read [INFO] [stdout] --> src/input/mod.rs:58:13 [INFO] [stdout] | [INFO] [stdout] 58 | Aivdm { raw: String }, [INFO] [stdout] | ----- ^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `NmeaSentence` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NAVICO_SPOKES_PER_FRAME` is never used [INFO] [stdout] --> src/input/pcap.rs:57:11 [INFO] [stdout] | [INFO] [stdout] 57 | pub const NAVICO_SPOKES_PER_FRAME: usize = 32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NAVICO_SPOKES_RAW` is never used [INFO] [stdout] --> src/input/pcap.rs:59:11 [INFO] [stdout] | [INFO] [stdout] 59 | pub const NAVICO_SPOKES_RAW: u32 = 4096; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 20.84s [INFO] running `Command { std: "docker" "inspect" "c4d6995c529a245085e7c68d7c8a85be40e7c82cca2266f33cf6ffd916790d95", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c4d6995c529a245085e7c68d7c8a85be40e7c82cca2266f33cf6ffd916790d95", kill_on_drop: false }` [INFO] [stdout] c4d6995c529a245085e7c68d7c8a85be40e7c82cca2266f33cf6ffd916790d95 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/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" "+1.95.0" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 2a2c5d3204d63f9d2d4ddf4fdf51c28ace25a3f5aeb8af53fcfd057517d5b8d7 [INFO] running `Command { std: "docker" "start" "-a" "2a2c5d3204d63f9d2d4ddf4fdf51c28ace25a3f5aeb8af53fcfd057517d5b8d7", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `std::sync::Arc` [INFO] [stderr] --> src/output/spoke_store.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | use std::sync::Arc; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `prev_ts_us` is never read [INFO] [stderr] --> src/input/pcap.rs:367:9 [INFO] [stderr] | [INFO] [stderr] 367 | prev_ts_us = None; // Reset timestamps at loop boundary. [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/input/pcap.rs:540:17 [INFO] [stderr] | [INFO] [stderr] 540 | let mut h = make_header( [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: method `active_cells` is never used [INFO] [stderr] --> src/clutter.rs:106:12 [INFO] [stderr] | [INFO] [stderr] 46 | impl ClutterMap { [INFO] [stderr] | --------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 106 | pub fn active_cells(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: field `source` is never read [INFO] [stderr] --> src/input/mod.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 22 | pub struct SpokeFrame { [INFO] [stderr] | ---------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 25 | pub source: SourceKind, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `SpokeFrame` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: variants `WebSocket` and `Stdin` are never constructed [INFO] [stderr] --> src/input/mod.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 29 | pub enum SourceKind { [INFO] [stderr] | ---------- variants in this enum [INFO] [stderr] 30 | WebSocket, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] 31 | Stdin, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `SourceKind` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `cog_deg` and `sog_kts` are never read [INFO] [stderr] --> src/input/mod.rs:47:31 [INFO] [stderr] | [INFO] [stderr] 47 | Rmc { lat: f64, lon: f64, cog_deg: f64, sog_kts: f64 }, [INFO] [stderr] | --- ^^^^^^^ ^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | fields in this variant [INFO] [stderr] | [INFO] [stderr] = note: `NmeaSentence` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `raw` is never read [INFO] [stderr] --> src/input/mod.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | Aivdm { raw: String }, [INFO] [stderr] | ----- ^^^ [INFO] [stderr] | | [INFO] [stderr] | field in this variant [INFO] [stderr] | [INFO] [stderr] = note: `NmeaSentence` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: constant `NAVICO_SPOKES_PER_FRAME` is never used [INFO] [stderr] --> src/input/pcap.rs:57:11 [INFO] [stderr] | [INFO] [stderr] 57 | pub const NAVICO_SPOKES_PER_FRAME: usize = 32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `NAVICO_SPOKES_RAW` is never used [INFO] [stderr] --> src/input/pcap.rs:59:11 [INFO] [stderr] | [INFO] [stderr] 59 | pub const NAVICO_SPOKES_RAW: u32 = 4096; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `kahu-daemon` (bin "kahu-daemon" test) generated 10 warnings (run `cargo fix --bin "kahu-daemon" -p kahu-daemon --tests` to apply 2 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.41s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/kahu_daemon-1b539bc6047cf6e3) [INFO] [stdout] [INFO] [stdout] running 98 tests [INFO] [stdout] test clutter::tests::fresh_map_passes_all_detections ... ok [INFO] [stdout] test clutter::tests::moving_target_not_suppressed ... ok [INFO] [stdout] test clutter::tests::stationary_target_suppressed_after_window ... ok [INFO] [stdout] test config::tests::load_returns_error_for_missing_file ... ok [INFO] [stdout] test config::tests::empty_toml_uses_defaults ... ok [INFO] [stdout] test detect::tests::bearing_converted_correctly ... ok [INFO] [stdout] test config::tests::spoke_store_section_parsed ... ok [INFO] [stdout] test config::tests::timescale_section_parsed ... ok [INFO] [stdout] test detect::tests::all_noise_returns_no_detections ... ok [INFO] [stdout] test config::tests::pcap_mode_parsed ... ok [INFO] [stdout] test config::tests::rattm_mode_parsed ... ok [INFO] [stdout] test detect::tests::blob_below_min_size_ignored ... ok [INFO] [stdout] test detect::tests::blob_in_main_bang_zone_ignored ... ok [INFO] [stdout] test detect::tests::empty_spoke_returns_no_detections ... ok [INFO] [stdout] test detect::tests::single_blob_detected ... ok [INFO] [stdout] test detect::tests::two_blobs_detected ... ok [INFO] [stdout] test geo::tests::east_displacement ... ok [INFO] [stdout] test geo::tests::haversine_known_distance ... ok [INFO] [stdout] test geo::tests::haversine_zero_for_same_point ... ok [INFO] [stdout] test geo::tests::north_displacement ... ok [INFO] [stdout] test input::nmea::tests::gga_parsed ... ok [INFO] [stdout] test input::nmea::tests::hdt_parsed ... ok [INFO] [stdout] test input::nmea::tests::non_nmea_returns_none ... ok [INFO] [stdout] test input::nmea::tests::rattm_parsed ... ok [INFO] [stdout] test input::nmea::tests::rmc_invalid_status_rejected ... ok [INFO] [stdout] test input::nmea::tests::southern_hemisphere_lat_is_negative ... ok [INFO] [stdout] test input::nmea::tests::unknown_sentence_returns_none ... ok [INFO] [stdout] test input::pcap::tests::bearing_absent_when_flag_not_set ... ok [INFO] [stdout] test input::pcap::tests::bearing_present_when_flag_set ... ok [INFO] [stdout] test input::pcap::tests::both_valid_status_bytes_accepted ... ok [INFO] [stdout] test input::pcap::tests::frame_parse_and_proto_roundtrip ... ok [INFO] [stdout] test input::pcap::tests::frame_too_short_returns_empty ... ok [INFO] [stdout] test input::pcap::tests::frame_with_bad_headers_skipped ... ok [INFO] [stdout] test input::pcap::tests::is_navico_frame_recognises_valid_frame ... ok [INFO] [stdout] test input::pcap::tests::full_32_spoke_frame_parsed ... ok [INFO] [stdout] test input::pcap::tests::invalid_status_rejected ... ok [INFO] [stdout] test input::pcap::tests::is_navico_frame_rejects_nmea_packet ... ok [INFO] [stdout] test input::pcap::tests::is_navico_frame_rejects_short_payload ... ok [INFO] [stdout] test input::pcap::tests::partial_frame_parses_available_spokes ... ok [INFO] [stdout] test input::pcap::tests::range_large_mode_typical_3nm ... ok [INFO] [stdout] test input::pcap::tests::range_small_mode_max ... ok [INFO] [stdout] test input::pcap::tests::range_large_mode ... ok [INFO] [stdout] test input::pcap::tests::range_small_mode_half_mile ... ok [INFO] [stdout] test input::pcap::tests::spokes_to_proto_roundtrips_via_protobuf ... ok [INFO] [stdout] test input::pcap::tests::short_header_slice_rejected ... ok [INFO] [stdout] test input::pcap::tests::spokes_to_proto_empty_input_produces_empty_message ... ok [INFO] [stdout] test input::pcap::tests::spoke_angles_increment_correctly ... ok [INFO] [stdout] test input::pcap::tests::udp_payload_rejects_non_udp_protocol ... ok [INFO] [stdout] test input::pcap::tests::udp_payload_extracted_correctly ... ok [INFO] [stdout] test input::pcap::tests::udp_payload_rejects_non_ipv4 ... ok [INFO] [stdout] test input::pcap::tests::udp_payload_rejects_short_packet ... ok [INFO] [stdout] test input::pcap::tests::pcap_loop_doubles_spoke_count ... ok [INFO] [stdout] test input::pcap::tests::unpack_512_packed_bytes_gives_1024_pixels ... ok [INFO] [stdout] test input::pcap::tests::pcap_fixture_contains_navico_frames ... ok [INFO] [stdout] test input::pcap::tests::unpack_nibbles_all_zeros ... ok [INFO] [stdout] test input::pcap::tests::pcap_fixture_two_loops_more_spokes_than_one ... ok [INFO] [stdout] test input::pcap::tests::unpack_nibbles_all_ff ... ok [INFO] [stdout] test input::pcap::tests::unpack_nibbles_expands_to_double_length ... ok [INFO] [stdout] test input::pcap::tests::unpack_nibbles_values_capped_at_15 ... ok [INFO] [stdout] test input::pcap::tests::unpack_nibbles_low_nibble_is_first ... ok [INFO] [stdout] test input::pcap::tests::wrong_header_len_rejected ... ok [INFO] [stdout] test input::pcap::tests::valid_header_parses_correctly ... ok [INFO] [stdout] test input::pcap::tests::pcap_fixture_yields_at_least_one_full_revolution ... ok [INFO] [stdout] test input::pcap::tests::zero_range_rejected ... ok [INFO] [stdout] test nav_state::tests::write_then_read_pos ... ok [INFO] [stdout] test nav_state::tests::starts_empty ... ok [INFO] [stdout] test output::spoke_store::tests::init_schema_is_idempotent ... ok [INFO] [stdout] test nav_state::tests::clone_shares_the_same_data ... ok [INFO] [stdout] test output::tests::router_delivers_to_all_sinks ... ok [INFO] [stdout] test output::tests::router_exits_when_channel_closes ... ok [INFO] [stdout] test output::timescale::tests::flush_with_no_client_clears_batch_gracefully ... ok [INFO] [stdout] test output::timescale::tests::handle_accumulates_rows_in_batch_without_db ... ok [INFO] [stdout] test output::timescale::tests::should_flush_false_when_empty ... ok [INFO] [stdout] test output::timescale::tests::should_flush_false_when_small_batch_within_timeout ... ok [INFO] [stdout] test output::timescale::tests::should_flush_true_when_batch_full ... ok [INFO] [stdout] test output::timescale::tests::should_flush_true_when_timeout_expired ... ok [INFO] [stdout] test output::timescale::tests::track_to_rows_empty_track_gives_empty_vec ... ok [INFO] [stdout] test output::timescale::tests::track_to_rows_preserves_coordinates ... ok [INFO] [stdout] test output::timescale::tests::track_to_rows_preserves_track_id ... ok [INFO] [stdout] test output::timescale::tests::track_to_rows_produces_one_row_per_fix ... ok [INFO] [stdout] test output::timescale::tests::unnest_query_has_four_parameters ... ok [INFO] [stdout] test output::trackserver::tests::short_track_dropped_below_min_fixes ... ok [INFO] [stdout] test output::trackserver::tests::upload_track_built_correctly ... ok [INFO] [stdout] test output::tests::router_handles_zero_sinks ... ok [INFO] [stdout] test output::spoke_store::tests::written_frames_are_length_prefixed_le ... ok [INFO] [stdout] test output::spoke_store::tests::written_file_is_replayable_as_stdin_frames ... ok [INFO] [stdout] test tracker::tests::drain_returns_all_tracks ... ok [INFO] [stdout] test output::spoke_store::tests::session_end_time_set_on_close ... ok [INFO] [stdout] test tracker::tests::far_detection_births_second_track ... ok [INFO] [stdout] test tracker::tests::missed_sweeps_causes_loss ... ok [INFO] [stdout] test output::spoke_store::tests::multiple_frames_written_in_order ... ok [INFO] [stdout] test output::spoke_store::tests::empty_session_still_creates_index_row ... ok [INFO] [stdout] test tracker::tests::repeated_detection_extends_track ... ok [INFO] [stdout] test tracker::tests::single_detection_births_track ... ok [INFO] [stdout] test output::spoke_store::tests::session_indexed_in_sqlite ... ok [INFO] [stdout] test pipeline::rattm::tests::rattm_target_produces_track ... ok [INFO] [stdout] test pipeline::rattm::tests::rattm_without_own_pos_produces_no_track ... ok [INFO] [stdout] test pipeline::rattm::tests::two_targets_stay_separate ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 98 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.64s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "2a2c5d3204d63f9d2d4ddf4fdf51c28ace25a3f5aeb8af53fcfd057517d5b8d7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2a2c5d3204d63f9d2d4ddf4fdf51c28ace25a3f5aeb8af53fcfd057517d5b8d7", kill_on_drop: false }` [INFO] [stdout] 2a2c5d3204d63f9d2d4ddf4fdf51c28ace25a3f5aeb8af53fcfd057517d5b8d7