[INFO] cloning repository https://github.com/fankh/mxwatch [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/fankh/mxwatch" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffankh%2Fmxwatch", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffankh%2Fmxwatch'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] dd45ba0cb1fecbd59423161eea25b0cf9fbb9ea7 [INFO] testing fankh/mxwatch against 1.98.0-beta.6+cargoflags=--release for beta-1.98-release-3 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffankh%2Fmxwatch" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/fankh/mxwatch [INFO] finished tweaking git repo https://github.com/fankh/mxwatch [INFO] tweaked toml for git repo https://github.com/fankh/mxwatch written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/fankh/mxwatch on toolchain 1.98.0-beta.6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/fankh/mxwatch 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.98.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [ERROR] error running command: no output for 300 seconds [INFO] testing fankh/mxwatch against 1.98.0-beta.6+cargoflags=--release for beta-1.98-release-3 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffankh%2Fmxwatch" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/fankh/mxwatch [INFO] finished tweaking git repo https://github.com/fankh/mxwatch [INFO] tweaked toml for git repo https://github.com/fankh/mxwatch written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/fankh/mxwatch on toolchain 1.98.0-beta.6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/fankh/mxwatch 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.98.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [ERROR] error running command: no output for 300 seconds [INFO] testing fankh/mxwatch against 1.98.0-beta.6+cargoflags=--release for beta-1.98-release-3 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffankh%2Fmxwatch" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/fankh/mxwatch [INFO] finished tweaking git repo https://github.com/fankh/mxwatch [INFO] tweaked toml for git repo https://github.com/fankh/mxwatch written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/fankh/mxwatch on toolchain 1.98.0-beta.6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/fankh/mxwatch 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.98.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [ERROR] error running command: no output for 300 seconds [INFO] testing fankh/mxwatch against 1.98.0-beta.6+cargoflags=--release for beta-1.98-release-3 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffankh%2Fmxwatch" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/fankh/mxwatch [INFO] finished tweaking git repo https://github.com/fankh/mxwatch [INFO] tweaked toml for git repo https://github.com/fankh/mxwatch written to /workspace/builds/worker-3-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/fankh/mxwatch on toolchain 1.98.0-beta.6 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/fankh/mxwatch 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.98.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded bumpalo v3.20.1 [INFO] [stderr] Downloaded pnet_base v0.35.0 [INFO] [stderr] Downloaded pnet_transport v0.35.0 [INFO] [stderr] Downloaded pnet_sys v0.35.0 [INFO] [stderr] Downloaded pnet_macros_support v0.35.0 [INFO] [stderr] Downloaded errno v0.2.8 [INFO] [stderr] Downloaded clap_lex v1.0.0 [INFO] [stderr] Downloaded pnet v0.35.0 [INFO] [stderr] Downloaded no-std-net v0.6.0 [INFO] [stderr] Downloaded pnet_datalink v0.35.0 [INFO] [stderr] Downloaded ipnetwork v0.20.0 [INFO] [stderr] Downloaded pnet_macros v0.35.0 [INFO] [stderr] Downloaded clap_derive v4.5.55 [INFO] [stderr] Downloaded pnet_packet v0.35.0 [INFO] [stderr] Downloaded rustls-webpki v0.103.9 [INFO] [stderr] Downloaded clap v4.5.59 [INFO] [stderr] Downloaded pcap v2.4.0 [INFO] [stderr] Downloaded clap_builder v4.5.59 [INFO] [stderr] Downloaded quinn-proto v0.11.13 [INFO] [stderr] Downloaded rustls v0.23.36 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 18336f0095436744db673a629f45a15171777f616d4a85080a1c980bec71a11e [INFO] running `Command { std: "docker" "start" "18336f0095436744db673a629f45a15171777f616d4a85080a1c980bec71a11e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "18336f0095436744db673a629f45a15171777f616d4a85080a1c980bec71a11e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "18336f0095436744db673a629f45a15171777f616d4a85080a1c980bec71a11e" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "18336f0095436744db673a629f45a15171777f616d4a85080a1c980bec71a11e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "18336f0095436744db673a629f45a15171777f616d4a85080a1c980bec71a11e" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.6" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling libc v0.2.182 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling itoa v1.0.17 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling pin-project-lite v0.2.16 [INFO] [stderr] Compiling futures-core v0.3.32 [INFO] [stderr] Compiling memchr v2.8.0 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling cc v1.2.56 [INFO] [stderr] Compiling tracing-core v0.1.36 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling regex-syntax v0.8.9 [INFO] [stderr] Compiling syn v2.0.116 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling socket2 v0.6.2 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling litemap v0.8.1 [INFO] [stderr] Compiling futures-task v0.3.32 [INFO] [stderr] Compiling writeable v0.6.2 [INFO] [stderr] Compiling slab v0.4.12 [INFO] [stderr] Compiling icu_properties_data v2.1.2 [INFO] [stderr] Compiling tower-service v0.3.3 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling icu_normalizer_data v2.1.1 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling no-std-net v0.6.0 [INFO] [stderr] Compiling untrusted v0.9.0 [INFO] [stderr] Compiling rustls-pki-types v1.14.0 [INFO] [stderr] Compiling try-lock v0.2.5 [INFO] [stderr] Compiling want v0.3.1 [INFO] [stderr] Compiling pnet_base v0.35.0 [INFO] [stderr] Compiling sync_wrapper v1.0.2 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling tower-layer v0.3.3 [INFO] [stderr] Compiling rustls v0.23.36 [INFO] [stderr] Compiling atomic-waker v1.1.2 [INFO] [stderr] Compiling httpdate v1.0.3 [INFO] [stderr] Compiling serde_json v1.0.149 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling base64 v0.22.1 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling rustversion v1.0.22 [INFO] [stderr] Compiling subtle v2.6.1 [INFO] [stderr] Compiling ipnet v2.11.0 [INFO] [stderr] Compiling anstyle-parse v0.2.7 [INFO] [stderr] Compiling libloading v0.8.9 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling pnet_macros_support v0.35.0 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling pnet_sys v0.35.0 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling pkg-config v0.3.32 [INFO] [stderr] Compiling colorchoice v1.0.4 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling anstyle v1.0.13 [INFO] [stderr] Compiling ryu v1.0.23 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling pnet_macros v0.35.0 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling tokio v1.49.0 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling pnet_packet v0.35.0 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling ipnetwork v0.20.0 [INFO] [stderr] Compiling indexmap v2.13.0 [INFO] [stderr] Compiling pcap v2.4.0 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling webpki-roots v1.0.6 [INFO] [stderr] Compiling iri-string v0.7.10 [INFO] [stderr] Compiling rustls-webpki v0.103.9 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling winnow v0.7.14 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling clap_lex v1.0.0 [INFO] [stderr] Compiling pnet v0.35.0 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling mime v0.3.17 [INFO] [stderr] Compiling anyhow v1.0.101 [INFO] [stderr] Compiling axum-core v0.4.5 [INFO] [stderr] Compiling clap_builder v4.5.59 [INFO] [stderr] Compiling clap_derive v4.5.55 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling pnet_datalink v0.35.0 [INFO] [stderr] Compiling pnet_transport v0.35.0 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling tracing-serde v0.2.0 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling errno v0.2.8 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling matchit v0.7.3 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling axum v0.7.9 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling chrono v0.4.43 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling clap v4.5.59 [INFO] [stderr] Compiling mxwatch v1.0.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/detectors/proto_anomaly.rs:197:5 [INFO] [stdout] | [INFO] [stdout] 196 | pub struct ProtoAnomalyDetector { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] 197 | config: ProtoAnomalyDetectorConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `tcp`, `udp`, `dns`, and `tls` are never read [INFO] [stdout] --> src/config.rs:229:9 [INFO] [stdout] | [INFO] [stdout] 227 | pub struct ParsersConfig { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 228 | #[serde(default)] [INFO] [stdout] 229 | pub tcp: TcpParserConfig, [INFO] [stdout] | ^^^ [INFO] [stdout] 230 | #[serde(default)] [INFO] [stdout] 231 | pub udp: UdpParserConfig, [INFO] [stdout] | ^^^ [INFO] [stdout] 232 | #[serde(default)] [INFO] [stdout] 233 | pub dns: DnsParserConfig, [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub tls: TlsParserConfig, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParsersConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `enabled` is never read [INFO] [stdout] --> src/config.rs:249:9 [INFO] [stdout] | [INFO] [stdout] 247 | pub struct TcpParserConfig { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 248 | #[serde(default = "default_true")] [INFO] [stdout] 249 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TcpParserConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:260:9 [INFO] [stdout] | [INFO] [stdout] 258 | pub struct UdpParserConfig { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 259 | #[serde(default = "default_true")] [INFO] [stdout] 260 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UdpParserConfig` 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 `enabled` and `entropy_threshold` are never read [INFO] [stdout] --> src/config.rs:271:9 [INFO] [stdout] | [INFO] [stdout] 269 | pub struct DnsParserConfig { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 270 | #[serde(default = "default_true")] [INFO] [stdout] 271 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 272 | #[serde(default = "default_entropy_threshold")] [INFO] [stdout] 273 | pub entropy_threshold: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DnsParserConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:291:9 [INFO] [stdout] | [INFO] [stdout] 289 | pub struct HttpParserConfig { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 290 | #[serde(default = "default_true")] [INFO] [stdout] 291 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HttpParserConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:307:9 [INFO] [stdout] | [INFO] [stdout] 305 | pub struct TlsParserConfig { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 306 | #[serde(default = "default_true")] [INFO] [stdout] 307 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TlsParserConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:381:9 [INFO] [stdout] | [INFO] [stdout] 379 | pub struct DnsTunnelDetectorConfig { [INFO] [stdout] | ----------------------- field in this struct [INFO] [stdout] 380 | #[serde(default = "default_true")] [INFO] [stdout] 381 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DnsTunnelDetectorConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:404:9 [INFO] [stdout] | [INFO] [stdout] 402 | pub struct PortScanDetectorConfig { [INFO] [stdout] | ---------------------- field in this struct [INFO] [stdout] 403 | #[serde(default = "default_true")] [INFO] [stdout] 404 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PortScanDetectorConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:430:9 [INFO] [stdout] | [INFO] [stdout] 428 | pub struct ProtoAnomalyDetectorConfig { [INFO] [stdout] | -------------------------- field in this struct [INFO] [stdout] 429 | #[serde(default = "default_true")] [INFO] [stdout] 430 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProtoAnomalyDetectorConfig` 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 `max_flow_age_secs` is never read [INFO] [stdout] --> src/config.rs:462:9 [INFO] [stdout] | [INFO] [stdout] 439 | pub struct C2BeaconDetectorConfig { [INFO] [stdout] | ---------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 462 | pub max_flow_age_secs: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `C2BeaconDetectorConfig` 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 `max_flow_age_secs` is never read [INFO] [stdout] --> src/config.rs:556:9 [INFO] [stdout] | [INFO] [stdout] 534 | pub struct DataExfilDetectorConfig { [INFO] [stdout] | ----------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 556 | pub max_flow_age_secs: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DataExfilDetectorConfig` 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: method `cleanup` is never used [INFO] [stdout] --> src/detectors/beacon.rs:264:12 [INFO] [stdout] | [INFO] [stdout] 100 | impl BeaconDetector { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 264 | pub fn cleanup(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `cleanup` is never used [INFO] [stdout] --> src/detectors/c2_beacon.rs:204:12 [INFO] [stdout] | [INFO] [stdout] 79 | impl C2BeaconDetector { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 204 | pub fn cleanup(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `cleanup` is never used [INFO] [stdout] --> src/detectors/data_exfil.rs:164:12 [INFO] [stdout] | [INFO] [stdout] 63 | impl DataExfilDetector { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn cleanup(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `reset_counters` is never used [INFO] [stdout] --> src/detectors/dns_tunnel.rs:207:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl DnsTunnelDetector { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn reset_counters(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `cleanup` is never used [INFO] [stdout] --> src/detectors/port_scan.rs:88:12 [INFO] [stdout] | [INFO] [stdout] 29 | impl PortScanDetector { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn cleanup(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/detectors/proto_anomaly.rs:197:5 [INFO] [stdout] | [INFO] [stdout] 196 | pub struct ProtoAnomalyDetector { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] 197 | config: ProtoAnomalyDetectorConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TcpConnectionPhase` is never used [INFO] [stdout] --> src/parsers/tcp.rs:59:10 [INFO] [stdout] | [INFO] [stdout] 59 | pub enum TcpConnectionPhase { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_fin_scan` is never used [INFO] [stdout] --> src/parsers/tcp.rs:226:8 [INFO] [stdout] | [INFO] [stdout] 226 | pub fn is_fin_scan(info: &TcpInfo) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `classify_connection_phase` is never used [INFO] [stdout] --> src/parsers/tcp.rs:232:8 [INFO] [stdout] | [INFO] [stdout] 232 | pub fn classify_connection_phase(info: &TcpInfo) -> TcpConnectionPhase { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `service_name_for_port` is never used [INFO] [stdout] --> src/parsers/tcp.rs:268:8 [INFO] [stdout] | [INFO] [stdout] 268 | pub fn service_name_for_port(port: u16) -> Option<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_dhcp_port` is never used [INFO] [stdout] --> src/parsers/udp.rs:74:8 [INFO] [stdout] | [INFO] [stdout] 74 | pub fn is_dhcp_port(info: &UdpInfo) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `service_name_for_port` is never used [INFO] [stdout] --> src/parsers/udp.rs:84:8 [INFO] [stdout] | [INFO] [stdout] 84 | pub fn service_name_for_port(port: u16) -> Option<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_TYPE_SRV` is never used [INFO] [stdout] --> src/parsers/dns.rs:29:11 [INFO] [stdout] | [INFO] [stdout] 29 | pub const DNS_TYPE_SRV: u16 = 33; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_TYPE_DS` is never used [INFO] [stdout] --> src/parsers/dns.rs:32:11 [INFO] [stdout] | [INFO] [stdout] 32 | pub const DNS_TYPE_DS: u16 = 43; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_TYPE_RRSIG` is never used [INFO] [stdout] --> src/parsers/dns.rs:33:11 [INFO] [stdout] | [INFO] [stdout] 33 | pub const DNS_TYPE_RRSIG: u16 = 46; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_TYPE_NSEC` is never used [INFO] [stdout] --> src/parsers/dns.rs:34:11 [INFO] [stdout] | [INFO] [stdout] 34 | pub const DNS_TYPE_NSEC: u16 = 47; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_TYPE_DNSKEY` is never used [INFO] [stdout] --> src/parsers/dns.rs:35:11 [INFO] [stdout] | [INFO] [stdout] 35 | pub const DNS_TYPE_DNSKEY: u16 = 48; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_TYPE_ANY` is never used [INFO] [stdout] --> src/parsers/dns.rs:37:11 [INFO] [stdout] | [INFO] [stdout] 37 | pub const DNS_TYPE_ANY: u16 = 255; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_CLASS_IN` is never used [INFO] [stdout] --> src/parsers/dns.rs:40:11 [INFO] [stdout] | [INFO] [stdout] 40 | pub const DNS_CLASS_IN: u16 = 1; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_CLASS_ANY` is never used [INFO] [stdout] --> src/parsers/dns.rs:41:11 [INFO] [stdout] | [INFO] [stdout] 41 | pub const DNS_CLASS_ANY: u16 = 255; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `rtype_name` is never used [INFO] [stdout] --> src/parsers/dns.rs:126:8 [INFO] [stdout] | [INFO] [stdout] 126 | pub fn rtype_name(rtype: u16) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `rcode_name` is never used [INFO] [stdout] --> src/parsers/dns.rs:148:8 [INFO] [stdout] | [INFO] [stdout] 148 | pub fn rcode_name(rcode: u8) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_http_request` is never used [INFO] [stdout] --> src/parsers/http.rs:137:8 [INFO] [stdout] | [INFO] [stdout] 137 | pub fn parse_http_request(data: &[u8]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_http_response` is never used [INFO] [stdout] --> src/parsers/http.rs:148:8 [INFO] [stdout] | [INFO] [stdout] 148 | pub fn parse_http_response(data: &[u8]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_http_port` is never used [INFO] [stdout] --> src/parsers/http.rs:288:8 [INFO] [stdout] | [INFO] [stdout] 288 | pub fn is_http_port(port: u16) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `status_is_redirect` is never used [INFO] [stdout] --> src/parsers/http.rs:293:8 [INFO] [stdout] | [INFO] [stdout] 293 | pub fn status_is_redirect(code: u16) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `status_is_error` is never used [INFO] [stdout] --> src/parsers/http.rs:299:8 [INFO] [stdout] | [INFO] [stdout] 299 | pub fn status_is_error(code: u16) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_CONTENT_CHANGE_CIPHER_SPEC` is never used [INFO] [stdout] --> src/parsers/tls.rs:27:11 [INFO] [stdout] | [INFO] [stdout] 27 | pub const TLS_CONTENT_CHANGE_CIPHER_SPEC: u8 = 20; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_CONTENT_ALERT` is never used [INFO] [stdout] --> src/parsers/tls.rs:28:11 [INFO] [stdout] | [INFO] [stdout] 28 | pub const TLS_CONTENT_ALERT: u8 = 21; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_CONTENT_APPLICATION_DATA` is never used [INFO] [stdout] --> src/parsers/tls.rs:30:11 [INFO] [stdout] | [INFO] [stdout] 30 | pub const TLS_CONTENT_APPLICATION_DATA: u8 = 23; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_CONTENT_HEARTBEAT` is never used [INFO] [stdout] --> src/parsers/tls.rs:31:11 [INFO] [stdout] | [INFO] [stdout] 31 | pub const TLS_CONTENT_HEARTBEAT: u8 = 24; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_HANDSHAKE_SERVER_HELLO` is never used [INFO] [stdout] --> src/parsers/tls.rs:38:11 [INFO] [stdout] | [INFO] [stdout] 38 | pub const TLS_HANDSHAKE_SERVER_HELLO: u8 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_HANDSHAKE_CERTIFICATE` is never used [INFO] [stdout] --> src/parsers/tls.rs:39:11 [INFO] [stdout] | [INFO] [stdout] 39 | pub const TLS_HANDSHAKE_CERTIFICATE: u8 = 11; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_HANDSHAKE_SERVER_HELLO_DONE` is never used [INFO] [stdout] --> src/parsers/tls.rs:40:11 [INFO] [stdout] | [INFO] [stdout] 40 | pub const TLS_HANDSHAKE_SERVER_HELLO_DONE: u8 = 14; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_HANDSHAKE_FINISHED` is never used [INFO] [stdout] --> src/parsers/tls.rs:41:11 [INFO] [stdout] | [INFO] [stdout] 41 | pub const TLS_HANDSHAKE_FINISHED: u8 = 20; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `tls_version_name` is never used [INFO] [stdout] --> src/parsers/tls.rs:143:8 [INFO] [stdout] | [INFO] [stdout] 143 | pub fn tls_version_name(major: u8, minor: u8) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_tls_port` is never used [INFO] [stdout] --> src/parsers/tls.rs:159:8 [INFO] [stdout] | [INFO] [stdout] 159 | pub fn is_tls_port(port: u16) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `tls_service_name` is never used [INFO] [stdout] --> src/parsers/tls.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | pub fn tls_service_name(port: u16) -> Option<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `tls_content_type_name` is never used [INFO] [stdout] --> src/parsers/tls.rs:179:8 [INFO] [stdout] | [INFO] [stdout] 179 | pub fn tls_content_type_name(content_type: u8) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_suspicious_sni` is never used [INFO] [stdout] --> src/parsers/tls.rs:205:8 [INFO] [stdout] | [INFO] [stdout] 205 | pub fn is_suspicious_sni(sni: &str, blocklist: &[String]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_ip_address` is never used [INFO] [stdout] --> src/parsers/tls.rs:240:4 [INFO] [stdout] | [INFO] [stdout] 240 | fn is_ip_address(s: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SMB2_FLAGS_RELATED` is never used [INFO] [stdout] --> src/parsers/smb.rs:70:11 [INFO] [stdout] | [INFO] [stdout] 70 | pub const SMB2_FLAGS_RELATED: u32 = 0x0000_0004; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_PROTO_V2` is never used [INFO] [stdout] --> src/parsers/ssh.rs:34:11 [INFO] [stdout] | [INFO] [stdout] 34 | pub const SSH_PROTO_V2: &str = "2.0"; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_KEXINIT` is never used [INFO] [stdout] --> src/parsers/ssh.rs:40:11 [INFO] [stdout] | [INFO] [stdout] 40 | pub const SSH_MSG_KEXINIT: u8 = 20; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_NEWKEYS` is never used [INFO] [stdout] --> src/parsers/ssh.rs:43:11 [INFO] [stdout] | [INFO] [stdout] 43 | pub const SSH_MSG_NEWKEYS: u8 = 21; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_SERVICE_REQUEST` is never used [INFO] [stdout] --> src/parsers/ssh.rs:46:11 [INFO] [stdout] | [INFO] [stdout] 46 | pub const SSH_MSG_SERVICE_REQUEST: u8 = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_USERAUTH_REQUEST` is never used [INFO] [stdout] --> src/parsers/ssh.rs:49:11 [INFO] [stdout] | [INFO] [stdout] 49 | pub const SSH_MSG_USERAUTH_REQUEST: u8 = 50; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_USERAUTH_FAILURE` is never used [INFO] [stdout] --> src/parsers/ssh.rs:52:11 [INFO] [stdout] | [INFO] [stdout] 52 | pub const SSH_MSG_USERAUTH_FAILURE: u8 = 51; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_USERAUTH_SUCCESS` is never used [INFO] [stdout] --> src/parsers/ssh.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | pub const SSH_MSG_USERAUTH_SUCCESS: u8 = 52; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_DISCONNECT` is never used [INFO] [stdout] --> src/parsers/ssh.rs:58:11 [INFO] [stdout] | [INFO] [stdout] 58 | pub const SSH_MSG_DISCONNECT: u8 = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `ssh_message_type_name` is never used [INFO] [stdout] --> src/parsers/ssh.rs:312:8 [INFO] [stdout] | [INFO] [stdout] 312 | pub fn ssh_message_type_name(msg_type: u8) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RDP_NEG_FAILURE` is never used [INFO] [stdout] --> src/parsers/rdp.rs:61:11 [INFO] [stdout] | [INFO] [stdout] 61 | pub const RDP_NEG_FAILURE: u8 = 0x03; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PROTOCOL_RDSTLS` is never used [INFO] [stdout] --> src/parsers/rdp.rs:74:11 [INFO] [stdout] | [INFO] [stdout] 74 | pub const PROTOCOL_RDSTLS: u32 = 0x0000_0004; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `rdp_protocol_names` is never used [INFO] [stdout] --> src/parsers/rdp.rs:251:8 [INFO] [stdout] | [INFO] [stdout] 251 | pub fn rdp_protocol_names(protocols: u32) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `release` profile [optimized] target(s) in 1m 12s [INFO] running `Command { std: "docker" "inspect" "18336f0095436744db673a629f45a15171777f616d4a85080a1c980bec71a11e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "18336f0095436744db673a629f45a15171777f616d4a85080a1c980bec71a11e" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling futures-sink v0.3.32 [INFO] [stderr] Compiling futures-macro v0.3.32 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling regex-syntax v0.8.9 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Compiling bitflags v2.11.0 [INFO] [stderr] Compiling futures-channel v0.3.32 [INFO] [stderr] Compiling tokio-util v0.7.18 [INFO] [stderr] Compiling zerocopy v0.8.39 [INFO] [stderr] Compiling zerocopy-derive v0.8.39 [INFO] [stderr] Compiling futures-util v0.3.32 [INFO] [stderr] Compiling h2 v0.4.13 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling crossbeam-epoch v0.9.18 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling ipnetwork v0.20.0 [INFO] [stderr] Compiling rayon-core v1.13.0 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling pnet_datalink v0.35.0 [INFO] [stderr] Compiling crossbeam-deque v0.8.6 [INFO] [stderr] Compiling regex-automata v0.4.14 [INFO] [stderr] Compiling tracing-serde v0.2.0 [INFO] [stderr] Compiling tower v0.5.3 [INFO] [stderr] Compiling axum-core v0.4.5 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling half v2.7.1 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling ciborium-io v0.2.2 [INFO] [stderr] Compiling plotters-backend v0.3.7 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling plotters-svg v0.3.7 [INFO] [stderr] Compiling chrono v0.4.43 [INFO] [stderr] Compiling hyper-util v0.1.20 [INFO] [stderr] Compiling ciborium-ll v0.2.2 [INFO] [stderr] Compiling regex v1.12.3 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling axum v0.7.9 [INFO] [stderr] Compiling reqwest v0.12.28 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling futures-executor v0.3.32 [INFO] [stderr] Compiling pnet v0.35.0 [INFO] [stderr] Compiling itertools v0.10.5 [INFO] [stderr] Compiling num_cpus v1.17.0 [INFO] [stderr] Compiling cast v0.3.0 [INFO] [stderr] Compiling linux-raw-sys v0.11.0 [INFO] [stderr] Compiling deadpool-runtime v0.1.4 [INFO] [stderr] Compiling deadpool v0.12.3 [INFO] [stderr] Compiling criterion-plot v0.5.0 [INFO] [stderr] Compiling rayon v1.11.0 [INFO] [stderr] Compiling futures v0.3.32 [INFO] [stderr] Compiling ciborium v0.2.2 [INFO] [stderr] Compiling plotters v0.3.7 [INFO] [stderr] Compiling tinytemplate v1.2.1 [INFO] [stderr] Compiling assert-json-diff v2.0.2 [INFO] [stderr] Compiling is-terminal v0.4.17 [INFO] [stderr] Compiling fastrand v2.3.0 [INFO] [stderr] Compiling anes v0.1.6 [INFO] [stderr] Compiling oorandom v11.1.5 [INFO] [stderr] Compiling criterion v0.5.1 [INFO] [stderr] Compiling tempfile v3.25.0 [INFO] [stderr] Compiling wiremock v0.6.5 [INFO] [stderr] Compiling mxwatch v1.0.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/detectors/proto_anomaly.rs:197:5 [INFO] [stdout] | [INFO] [stdout] 196 | pub struct ProtoAnomalyDetector { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] 197 | config: ProtoAnomalyDetectorConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `tcp`, `udp`, `dns`, and `tls` are never read [INFO] [stdout] --> src/config.rs:229:9 [INFO] [stdout] | [INFO] [stdout] 227 | pub struct ParsersConfig { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 228 | #[serde(default)] [INFO] [stdout] 229 | pub tcp: TcpParserConfig, [INFO] [stdout] | ^^^ [INFO] [stdout] 230 | #[serde(default)] [INFO] [stdout] 231 | pub udp: UdpParserConfig, [INFO] [stdout] | ^^^ [INFO] [stdout] 232 | #[serde(default)] [INFO] [stdout] 233 | pub dns: DnsParserConfig, [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub tls: TlsParserConfig, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParsersConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `enabled` is never read [INFO] [stdout] --> src/config.rs:249:9 [INFO] [stdout] | [INFO] [stdout] 247 | pub struct TcpParserConfig { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 248 | #[serde(default = "default_true")] [INFO] [stdout] 249 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TcpParserConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:260:9 [INFO] [stdout] | [INFO] [stdout] 258 | pub struct UdpParserConfig { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 259 | #[serde(default = "default_true")] [INFO] [stdout] 260 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UdpParserConfig` 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 `enabled` and `entropy_threshold` are never read [INFO] [stdout] --> src/config.rs:271:9 [INFO] [stdout] | [INFO] [stdout] 269 | pub struct DnsParserConfig { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 270 | #[serde(default = "default_true")] [INFO] [stdout] 271 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 272 | #[serde(default = "default_entropy_threshold")] [INFO] [stdout] 273 | pub entropy_threshold: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DnsParserConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:291:9 [INFO] [stdout] | [INFO] [stdout] 289 | pub struct HttpParserConfig { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 290 | #[serde(default = "default_true")] [INFO] [stdout] 291 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HttpParserConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:307:9 [INFO] [stdout] | [INFO] [stdout] 305 | pub struct TlsParserConfig { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 306 | #[serde(default = "default_true")] [INFO] [stdout] 307 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TlsParserConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:381:9 [INFO] [stdout] | [INFO] [stdout] 379 | pub struct DnsTunnelDetectorConfig { [INFO] [stdout] | ----------------------- field in this struct [INFO] [stdout] 380 | #[serde(default = "default_true")] [INFO] [stdout] 381 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DnsTunnelDetectorConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:404:9 [INFO] [stdout] | [INFO] [stdout] 402 | pub struct PortScanDetectorConfig { [INFO] [stdout] | ---------------------- field in this struct [INFO] [stdout] 403 | #[serde(default = "default_true")] [INFO] [stdout] 404 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PortScanDetectorConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:430:9 [INFO] [stdout] | [INFO] [stdout] 428 | pub struct ProtoAnomalyDetectorConfig { [INFO] [stdout] | -------------------------- field in this struct [INFO] [stdout] 429 | #[serde(default = "default_true")] [INFO] [stdout] 430 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProtoAnomalyDetectorConfig` 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 `max_flow_age_secs` is never read [INFO] [stdout] --> src/config.rs:462:9 [INFO] [stdout] | [INFO] [stdout] 439 | pub struct C2BeaconDetectorConfig { [INFO] [stdout] | ---------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 462 | pub max_flow_age_secs: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `C2BeaconDetectorConfig` 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 `max_flow_age_secs` is never read [INFO] [stdout] --> src/config.rs:556:9 [INFO] [stdout] | [INFO] [stdout] 534 | pub struct DataExfilDetectorConfig { [INFO] [stdout] | ----------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 556 | pub max_flow_age_secs: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DataExfilDetectorConfig` 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: method `cleanup` is never used [INFO] [stdout] --> src/detectors/beacon.rs:264:12 [INFO] [stdout] | [INFO] [stdout] 100 | impl BeaconDetector { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 264 | pub fn cleanup(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `cleanup` is never used [INFO] [stdout] --> src/detectors/c2_beacon.rs:204:12 [INFO] [stdout] | [INFO] [stdout] 79 | impl C2BeaconDetector { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 204 | pub fn cleanup(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `cleanup` is never used [INFO] [stdout] --> src/detectors/data_exfil.rs:164:12 [INFO] [stdout] | [INFO] [stdout] 63 | impl DataExfilDetector { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn cleanup(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `reset_counters` is never used [INFO] [stdout] --> src/detectors/dns_tunnel.rs:207:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl DnsTunnelDetector { [INFO] [stdout] | ---------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn reset_counters(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `cleanup` is never used [INFO] [stdout] --> src/detectors/port_scan.rs:88:12 [INFO] [stdout] | [INFO] [stdout] 29 | impl PortScanDetector { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn cleanup(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/detectors/proto_anomaly.rs:197:5 [INFO] [stdout] | [INFO] [stdout] 196 | pub struct ProtoAnomalyDetector { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] 197 | config: ProtoAnomalyDetectorConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TcpConnectionPhase` is never used [INFO] [stdout] --> src/parsers/tcp.rs:59:10 [INFO] [stdout] | [INFO] [stdout] 59 | pub enum TcpConnectionPhase { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_fin_scan` is never used [INFO] [stdout] --> src/parsers/tcp.rs:226:8 [INFO] [stdout] | [INFO] [stdout] 226 | pub fn is_fin_scan(info: &TcpInfo) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `classify_connection_phase` is never used [INFO] [stdout] --> src/parsers/tcp.rs:232:8 [INFO] [stdout] | [INFO] [stdout] 232 | pub fn classify_connection_phase(info: &TcpInfo) -> TcpConnectionPhase { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `service_name_for_port` is never used [INFO] [stdout] --> src/parsers/tcp.rs:268:8 [INFO] [stdout] | [INFO] [stdout] 268 | pub fn service_name_for_port(port: u16) -> Option<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_dhcp_port` is never used [INFO] [stdout] --> src/parsers/udp.rs:74:8 [INFO] [stdout] | [INFO] [stdout] 74 | pub fn is_dhcp_port(info: &UdpInfo) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `service_name_for_port` is never used [INFO] [stdout] --> src/parsers/udp.rs:84:8 [INFO] [stdout] | [INFO] [stdout] 84 | pub fn service_name_for_port(port: u16) -> Option<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_TYPE_SRV` is never used [INFO] [stdout] --> src/parsers/dns.rs:29:11 [INFO] [stdout] | [INFO] [stdout] 29 | pub const DNS_TYPE_SRV: u16 = 33; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_TYPE_DS` is never used [INFO] [stdout] --> src/parsers/dns.rs:32:11 [INFO] [stdout] | [INFO] [stdout] 32 | pub const DNS_TYPE_DS: u16 = 43; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_TYPE_RRSIG` is never used [INFO] [stdout] --> src/parsers/dns.rs:33:11 [INFO] [stdout] | [INFO] [stdout] 33 | pub const DNS_TYPE_RRSIG: u16 = 46; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_TYPE_NSEC` is never used [INFO] [stdout] --> src/parsers/dns.rs:34:11 [INFO] [stdout] | [INFO] [stdout] 34 | pub const DNS_TYPE_NSEC: u16 = 47; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_TYPE_DNSKEY` is never used [INFO] [stdout] --> src/parsers/dns.rs:35:11 [INFO] [stdout] | [INFO] [stdout] 35 | pub const DNS_TYPE_DNSKEY: u16 = 48; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_TYPE_ANY` is never used [INFO] [stdout] --> src/parsers/dns.rs:37:11 [INFO] [stdout] | [INFO] [stdout] 37 | pub const DNS_TYPE_ANY: u16 = 255; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_CLASS_IN` is never used [INFO] [stdout] --> src/parsers/dns.rs:40:11 [INFO] [stdout] | [INFO] [stdout] 40 | pub const DNS_CLASS_IN: u16 = 1; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_CLASS_ANY` is never used [INFO] [stdout] --> src/parsers/dns.rs:41:11 [INFO] [stdout] | [INFO] [stdout] 41 | pub const DNS_CLASS_ANY: u16 = 255; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `rtype_name` is never used [INFO] [stdout] --> src/parsers/dns.rs:126:8 [INFO] [stdout] | [INFO] [stdout] 126 | pub fn rtype_name(rtype: u16) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `rcode_name` is never used [INFO] [stdout] --> src/parsers/dns.rs:148:8 [INFO] [stdout] | [INFO] [stdout] 148 | pub fn rcode_name(rcode: u8) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_http_request` is never used [INFO] [stdout] --> src/parsers/http.rs:137:8 [INFO] [stdout] | [INFO] [stdout] 137 | pub fn parse_http_request(data: &[u8]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_http_response` is never used [INFO] [stdout] --> src/parsers/http.rs:148:8 [INFO] [stdout] | [INFO] [stdout] 148 | pub fn parse_http_response(data: &[u8]) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_http_port` is never used [INFO] [stdout] --> src/parsers/http.rs:288:8 [INFO] [stdout] | [INFO] [stdout] 288 | pub fn is_http_port(port: u16) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `status_is_redirect` is never used [INFO] [stdout] --> src/parsers/http.rs:293:8 [INFO] [stdout] | [INFO] [stdout] 293 | pub fn status_is_redirect(code: u16) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `status_is_error` is never used [INFO] [stdout] --> src/parsers/http.rs:299:8 [INFO] [stdout] | [INFO] [stdout] 299 | pub fn status_is_error(code: u16) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_CONTENT_CHANGE_CIPHER_SPEC` is never used [INFO] [stdout] --> src/parsers/tls.rs:27:11 [INFO] [stdout] | [INFO] [stdout] 27 | pub const TLS_CONTENT_CHANGE_CIPHER_SPEC: u8 = 20; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_CONTENT_ALERT` is never used [INFO] [stdout] --> src/parsers/tls.rs:28:11 [INFO] [stdout] | [INFO] [stdout] 28 | pub const TLS_CONTENT_ALERT: u8 = 21; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_CONTENT_APPLICATION_DATA` is never used [INFO] [stdout] --> src/parsers/tls.rs:30:11 [INFO] [stdout] | [INFO] [stdout] 30 | pub const TLS_CONTENT_APPLICATION_DATA: u8 = 23; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_CONTENT_HEARTBEAT` is never used [INFO] [stdout] --> src/parsers/tls.rs:31:11 [INFO] [stdout] | [INFO] [stdout] 31 | pub const TLS_CONTENT_HEARTBEAT: u8 = 24; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_HANDSHAKE_SERVER_HELLO` is never used [INFO] [stdout] --> src/parsers/tls.rs:38:11 [INFO] [stdout] | [INFO] [stdout] 38 | pub const TLS_HANDSHAKE_SERVER_HELLO: u8 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_HANDSHAKE_CERTIFICATE` is never used [INFO] [stdout] --> src/parsers/tls.rs:39:11 [INFO] [stdout] | [INFO] [stdout] 39 | pub const TLS_HANDSHAKE_CERTIFICATE: u8 = 11; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_HANDSHAKE_SERVER_HELLO_DONE` is never used [INFO] [stdout] --> src/parsers/tls.rs:40:11 [INFO] [stdout] | [INFO] [stdout] 40 | pub const TLS_HANDSHAKE_SERVER_HELLO_DONE: u8 = 14; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_HANDSHAKE_FINISHED` is never used [INFO] [stdout] --> src/parsers/tls.rs:41:11 [INFO] [stdout] | [INFO] [stdout] 41 | pub const TLS_HANDSHAKE_FINISHED: u8 = 20; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `tls_version_name` is never used [INFO] [stdout] --> src/parsers/tls.rs:143:8 [INFO] [stdout] | [INFO] [stdout] 143 | pub fn tls_version_name(major: u8, minor: u8) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_tls_port` is never used [INFO] [stdout] --> src/parsers/tls.rs:159:8 [INFO] [stdout] | [INFO] [stdout] 159 | pub fn is_tls_port(port: u16) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `tls_service_name` is never used [INFO] [stdout] --> src/parsers/tls.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | pub fn tls_service_name(port: u16) -> Option<&'static str> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `tls_content_type_name` is never used [INFO] [stdout] --> src/parsers/tls.rs:179:8 [INFO] [stdout] | [INFO] [stdout] 179 | pub fn tls_content_type_name(content_type: u8) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_suspicious_sni` is never used [INFO] [stdout] --> src/parsers/tls.rs:205:8 [INFO] [stdout] | [INFO] [stdout] 205 | pub fn is_suspicious_sni(sni: &str, blocklist: &[String]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_ip_address` is never used [INFO] [stdout] --> src/parsers/tls.rs:240:4 [INFO] [stdout] | [INFO] [stdout] 240 | fn is_ip_address(s: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SMB2_FLAGS_RELATED` is never used [INFO] [stdout] --> src/parsers/smb.rs:70:11 [INFO] [stdout] | [INFO] [stdout] 70 | pub const SMB2_FLAGS_RELATED: u32 = 0x0000_0004; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_PROTO_V2` is never used [INFO] [stdout] --> src/parsers/ssh.rs:34:11 [INFO] [stdout] | [INFO] [stdout] 34 | pub const SSH_PROTO_V2: &str = "2.0"; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_KEXINIT` is never used [INFO] [stdout] --> src/parsers/ssh.rs:40:11 [INFO] [stdout] | [INFO] [stdout] 40 | pub const SSH_MSG_KEXINIT: u8 = 20; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_NEWKEYS` is never used [INFO] [stdout] --> src/parsers/ssh.rs:43:11 [INFO] [stdout] | [INFO] [stdout] 43 | pub const SSH_MSG_NEWKEYS: u8 = 21; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_SERVICE_REQUEST` is never used [INFO] [stdout] --> src/parsers/ssh.rs:46:11 [INFO] [stdout] | [INFO] [stdout] 46 | pub const SSH_MSG_SERVICE_REQUEST: u8 = 5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_USERAUTH_REQUEST` is never used [INFO] [stdout] --> src/parsers/ssh.rs:49:11 [INFO] [stdout] | [INFO] [stdout] 49 | pub const SSH_MSG_USERAUTH_REQUEST: u8 = 50; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_USERAUTH_FAILURE` is never used [INFO] [stdout] --> src/parsers/ssh.rs:52:11 [INFO] [stdout] | [INFO] [stdout] 52 | pub const SSH_MSG_USERAUTH_FAILURE: u8 = 51; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_USERAUTH_SUCCESS` is never used [INFO] [stdout] --> src/parsers/ssh.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | pub const SSH_MSG_USERAUTH_SUCCESS: u8 = 52; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_MSG_DISCONNECT` is never used [INFO] [stdout] --> src/parsers/ssh.rs:58:11 [INFO] [stdout] | [INFO] [stdout] 58 | pub const SSH_MSG_DISCONNECT: u8 = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `ssh_message_type_name` is never used [INFO] [stdout] --> src/parsers/ssh.rs:312:8 [INFO] [stdout] | [INFO] [stdout] 312 | pub fn ssh_message_type_name(msg_type: u8) -> &'static str { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RDP_NEG_FAILURE` is never used [INFO] [stdout] --> src/parsers/rdp.rs:61:11 [INFO] [stdout] | [INFO] [stdout] 61 | pub const RDP_NEG_FAILURE: u8 = 0x03; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PROTOCOL_RDSTLS` is never used [INFO] [stdout] --> src/parsers/rdp.rs:74:11 [INFO] [stdout] | [INFO] [stdout] 74 | pub const PROTOCOL_RDSTLS: u32 = 0x0000_0004; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `rdp_protocol_names` is never used [INFO] [stdout] --> src/parsers/rdp.rs:251:8 [INFO] [stdout] | [INFO] [stdout] 251 | pub fn rdp_protocol_names(protocols: u32) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/detectors/proto_anomaly.rs:197:5 [INFO] [stdout] | [INFO] [stdout] 196 | pub struct ProtoAnomalyDetector { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] 197 | config: ProtoAnomalyDetectorConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `header` is never used [INFO] [stdout] --> src/parsers/dns.rs:509:8 [INFO] [stdout] | [INFO] [stdout] 509 | fn header(tx_id: u16, flags: u16, qdcount: u16, ancount: u16, nscount: u16, arcount: u16) -> Vec { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `question` is never used [INFO] [stdout] --> src/parsers/dns.rs:532:8 [INFO] [stdout] | [INFO] [stdout] 532 | fn question(name: &str, qtype: u16, qclass: u16) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `tcp`, `udp`, `dns`, and `tls` are never read [INFO] [stdout] --> src/config.rs:229:9 [INFO] [stdout] | [INFO] [stdout] 227 | pub struct ParsersConfig { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 228 | #[serde(default)] [INFO] [stdout] 229 | pub tcp: TcpParserConfig, [INFO] [stdout] | ^^^ [INFO] [stdout] 230 | #[serde(default)] [INFO] [stdout] 231 | pub udp: UdpParserConfig, [INFO] [stdout] | ^^^ [INFO] [stdout] 232 | #[serde(default)] [INFO] [stdout] 233 | pub dns: DnsParserConfig, [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 237 | pub tls: TlsParserConfig, [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParsersConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `enabled` is never read [INFO] [stdout] --> src/config.rs:249:9 [INFO] [stdout] | [INFO] [stdout] 247 | pub struct TcpParserConfig { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 248 | #[serde(default = "default_true")] [INFO] [stdout] 249 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TcpParserConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:260:9 [INFO] [stdout] | [INFO] [stdout] 258 | pub struct UdpParserConfig { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 259 | #[serde(default = "default_true")] [INFO] [stdout] 260 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UdpParserConfig` 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 `enabled` and `entropy_threshold` are never read [INFO] [stdout] --> src/config.rs:271:9 [INFO] [stdout] | [INFO] [stdout] 269 | pub struct DnsParserConfig { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 270 | #[serde(default = "default_true")] [INFO] [stdout] 271 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 272 | #[serde(default = "default_entropy_threshold")] [INFO] [stdout] 273 | pub entropy_threshold: f64, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DnsParserConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:291:9 [INFO] [stdout] | [INFO] [stdout] 289 | pub struct HttpParserConfig { [INFO] [stdout] | ---------------- field in this struct [INFO] [stdout] 290 | #[serde(default = "default_true")] [INFO] [stdout] 291 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HttpParserConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:307:9 [INFO] [stdout] | [INFO] [stdout] 305 | pub struct TlsParserConfig { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 306 | #[serde(default = "default_true")] [INFO] [stdout] 307 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TlsParserConfig` 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 `enabled` is never read [INFO] [stdout] --> src/config.rs:430:9 [INFO] [stdout] | [INFO] [stdout] 428 | pub struct ProtoAnomalyDetectorConfig { [INFO] [stdout] | -------------------------- field in this struct [INFO] [stdout] 429 | #[serde(default = "default_true")] [INFO] [stdout] 430 | pub enabled: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProtoAnomalyDetectorConfig` 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: method `cleanup` is never used [INFO] [stdout] --> src/detectors/port_scan.rs:88:12 [INFO] [stdout] | [INFO] [stdout] 29 | impl PortScanDetector { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 88 | pub fn cleanup(&mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config` is never read [INFO] [stdout] --> src/detectors/proto_anomaly.rs:197:5 [INFO] [stdout] | [INFO] [stdout] 196 | pub struct ProtoAnomalyDetector { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] 197 | config: ProtoAnomalyDetectorConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_CLASS_IN` is never used [INFO] [stdout] --> src/parsers/dns.rs:40:11 [INFO] [stdout] | [INFO] [stdout] 40 | pub const DNS_CLASS_IN: u16 = 1; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DNS_CLASS_ANY` is never used [INFO] [stdout] --> src/parsers/dns.rs:41:11 [INFO] [stdout] | [INFO] [stdout] 41 | pub const DNS_CLASS_ANY: u16 = 255; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `header` is never used [INFO] [stdout] --> src/parsers/dns.rs:509:8 [INFO] [stdout] | [INFO] [stdout] 509 | fn header(tx_id: u16, flags: u16, qdcount: u16, ancount: u16, nscount: u16, arcount: u16) -> Vec { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `question` is never used [INFO] [stdout] --> src/parsers/dns.rs:532:8 [INFO] [stdout] | [INFO] [stdout] 532 | fn question(name: &str, qtype: u16, qclass: u16) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_HANDSHAKE_CERTIFICATE` is never used [INFO] [stdout] --> src/parsers/tls.rs:39:11 [INFO] [stdout] | [INFO] [stdout] 39 | pub const TLS_HANDSHAKE_CERTIFICATE: u8 = 11; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_HANDSHAKE_SERVER_HELLO_DONE` is never used [INFO] [stdout] --> src/parsers/tls.rs:40:11 [INFO] [stdout] | [INFO] [stdout] 40 | pub const TLS_HANDSHAKE_SERVER_HELLO_DONE: u8 = 14; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TLS_HANDSHAKE_FINISHED` is never used [INFO] [stdout] --> src/parsers/tls.rs:41:11 [INFO] [stdout] | [INFO] [stdout] 41 | pub const TLS_HANDSHAKE_FINISHED: u8 = 20; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SMB2_FLAGS_RELATED` is never used [INFO] [stdout] --> src/parsers/smb.rs:70:11 [INFO] [stdout] | [INFO] [stdout] 70 | pub const SMB2_FLAGS_RELATED: u32 = 0x0000_0004; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SSH_PROTO_V2` is never used [INFO] [stdout] --> src/parsers/ssh.rs:34:11 [INFO] [stdout] | [INFO] [stdout] 34 | pub const SSH_PROTO_V2: &str = "2.0"; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RDP_NEG_FAILURE` is never used [INFO] [stdout] --> src/parsers/rdp.rs:61:11 [INFO] [stdout] | [INFO] [stdout] 61 | pub const RDP_NEG_FAILURE: u8 = 0x03; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `release` profile [optimized] target(s) in 40.55s [INFO] running `Command { std: "docker" "inspect" "18336f0095436744db673a629f45a15171777f616d4a85080a1c980bec71a11e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "18336f0095436744db673a629f45a15171777f616d4a85080a1c980bec71a11e" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.6" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stderr] warning: field `config` is never read [INFO] [stderr] --> src/detectors/proto_anomaly.rs:197:5 [INFO] [stderr] | [INFO] [stderr] 196 | pub struct ProtoAnomalyDetector { [INFO] [stderr] | -------------------- field in this struct [INFO] [stderr] 197 | config: ProtoAnomalyDetectorConfig, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: `mxwatch` (lib) generated 1 warning [INFO] [stderr] warning: function `header` is never used [INFO] [stderr] --> src/parsers/dns.rs:509:8 [INFO] [stderr] | [INFO] [stderr] 509 | fn header(tx_id: u16, flags: u16, qdcount: u16, ancount: u16, nscount: u16, arcount: u16) -> Vec { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `question` is never used [INFO] [stderr] --> src/parsers/dns.rs:532:8 [INFO] [stderr] | [INFO] [stderr] 532 | fn question(name: &str, qtype: u16, qclass: u16) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `tcp`, `udp`, `dns`, and `tls` are never read [INFO] [stderr] --> src/config.rs:229:9 [INFO] [stderr] | [INFO] [stderr] 227 | pub struct ParsersConfig { [INFO] [stderr] | ------------- fields in this struct [INFO] [stderr] 228 | #[serde(default)] [INFO] [stderr] 229 | pub tcp: TcpParserConfig, [INFO] [stderr] | ^^^ [INFO] [stderr] 230 | #[serde(default)] [INFO] [stderr] 231 | pub udp: UdpParserConfig, [INFO] [stderr] | ^^^ [INFO] [stderr] 232 | #[serde(default)] [INFO] [stderr] 233 | pub dns: DnsParserConfig, [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 237 | pub tls: TlsParserConfig, [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ParsersConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: field `enabled` is never read [INFO] [stderr] --> src/config.rs:249:9 [INFO] [stderr] | [INFO] [stderr] 247 | pub struct TcpParserConfig { [INFO] [stderr] | --------------- field in this struct [INFO] [stderr] 248 | #[serde(default = "default_true")] [INFO] [stderr] 249 | pub enabled: bool, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `TcpParserConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `enabled` is never read [INFO] [stderr] --> src/config.rs:260:9 [INFO] [stderr] | [INFO] [stderr] 258 | pub struct UdpParserConfig { [INFO] [stderr] | --------------- field in this struct [INFO] [stderr] 259 | #[serde(default = "default_true")] [INFO] [stderr] 260 | pub enabled: bool, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `UdpParserConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `enabled` and `entropy_threshold` are never read [INFO] [stderr] --> src/config.rs:271:9 [INFO] [stderr] | [INFO] [stderr] 269 | pub struct DnsParserConfig { [INFO] [stderr] | --------------- fields in this struct [INFO] [stderr] 270 | #[serde(default = "default_true")] [INFO] [stderr] 271 | pub enabled: bool, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] 272 | #[serde(default = "default_entropy_threshold")] [INFO] [stderr] 273 | pub entropy_threshold: f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `DnsParserConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `enabled` is never read [INFO] [stderr] --> src/config.rs:291:9 [INFO] [stderr] | [INFO] [stderr] 289 | pub struct HttpParserConfig { [INFO] [stderr] | ---------------- field in this struct [INFO] [stderr] 290 | #[serde(default = "default_true")] [INFO] [stderr] 291 | pub enabled: bool, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `HttpParserConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `enabled` is never read [INFO] [stderr] --> src/config.rs:307:9 [INFO] [stderr] | [INFO] [stderr] 305 | pub struct TlsParserConfig { [INFO] [stderr] | --------------- field in this struct [INFO] [stderr] 306 | #[serde(default = "default_true")] [INFO] [stderr] 307 | pub enabled: bool, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `TlsParserConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `enabled` is never read [INFO] [stderr] --> src/config.rs:430:9 [INFO] [stderr] | [INFO] [stderr] 428 | pub struct ProtoAnomalyDetectorConfig { [INFO] [stderr] | -------------------------- field in this struct [INFO] [stderr] 429 | #[serde(default = "default_true")] [INFO] [stderr] 430 | pub enabled: bool, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ProtoAnomalyDetectorConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: method `cleanup` is never used [INFO] [stderr] --> src/detectors/port_scan.rs:88:12 [INFO] [stderr] | [INFO] [stderr] 29 | impl PortScanDetector { [INFO] [stderr] | --------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 88 | pub fn cleanup(&mut self) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `config` is never read [INFO] [stderr] --> src/detectors/proto_anomaly.rs:197:5 [INFO] [stderr] | [INFO] [stderr] 196 | pub struct ProtoAnomalyDetector { [INFO] [stderr] | -------------------- field in this struct [INFO] [stderr] 197 | config: ProtoAnomalyDetectorConfig, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `DNS_CLASS_IN` is never used [INFO] [stderr] --> src/parsers/dns.rs:40:11 [INFO] [stderr] | [INFO] [stderr] 40 | pub const DNS_CLASS_IN: u16 = 1; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `DNS_CLASS_ANY` is never used [INFO] [stderr] --> src/parsers/dns.rs:41:11 [INFO] [stderr] | [INFO] [stderr] 41 | pub const DNS_CLASS_ANY: u16 = 255; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `TLS_HANDSHAKE_CERTIFICATE` is never used [INFO] [stderr] --> src/parsers/tls.rs:39:11 [INFO] [stderr] | [INFO] [stderr] 39 | pub const TLS_HANDSHAKE_CERTIFICATE: u8 = 11; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `TLS_HANDSHAKE_SERVER_HELLO_DONE` is never used [INFO] [stderr] --> src/parsers/tls.rs:40:11 [INFO] [stderr] | [INFO] [stderr] 40 | pub const TLS_HANDSHAKE_SERVER_HELLO_DONE: u8 = 14; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `TLS_HANDSHAKE_FINISHED` is never used [INFO] [stderr] --> src/parsers/tls.rs:41:11 [INFO] [stderr] | [INFO] [stderr] 41 | pub const TLS_HANDSHAKE_FINISHED: u8 = 20; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SMB2_FLAGS_RELATED` is never used [INFO] [stderr] --> src/parsers/smb.rs:70:11 [INFO] [stderr] | [INFO] [stderr] 70 | pub const SMB2_FLAGS_RELATED: u32 = 0x0000_0004; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SSH_PROTO_V2` is never used [INFO] [stderr] --> src/parsers/ssh.rs:34:11 [INFO] [stderr] | [INFO] [stderr] 34 | pub const SSH_PROTO_V2: &str = "2.0"; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `RDP_NEG_FAILURE` is never used [INFO] [stderr] --> src/parsers/rdp.rs:61:11 [INFO] [stderr] | [INFO] [stderr] 61 | pub const RDP_NEG_FAILURE: u8 = 0x03; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `enabled` is never read [INFO] [stderr] --> src/config.rs:381:9 [INFO] [stderr] | [INFO] [stderr] 379 | pub struct DnsTunnelDetectorConfig { [INFO] [stderr] | ----------------------- field in this struct [INFO] [stderr] 380 | #[serde(default = "default_true")] [INFO] [stderr] 381 | pub enabled: bool, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `DnsTunnelDetectorConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `enabled` is never read [INFO] [stderr] --> src/config.rs:404:9 [INFO] [stderr] | [INFO] [stderr] 402 | pub struct PortScanDetectorConfig { [INFO] [stderr] | ---------------------- field in this struct [INFO] [stderr] 403 | #[serde(default = "default_true")] [INFO] [stderr] 404 | pub enabled: bool, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `PortScanDetectorConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `max_flow_age_secs` is never read [INFO] [stderr] --> src/config.rs:462:9 [INFO] [stderr] | [INFO] [stderr] 439 | pub struct C2BeaconDetectorConfig { [INFO] [stderr] | ---------------------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 462 | pub max_flow_age_secs: u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `C2BeaconDetectorConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `max_flow_age_secs` is never read [INFO] [stderr] --> src/config.rs:556:9 [INFO] [stderr] | [INFO] [stderr] 534 | pub struct DataExfilDetectorConfig { [INFO] [stderr] | ----------------------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 556 | pub max_flow_age_secs: u64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `DataExfilDetectorConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: method `cleanup` is never used [INFO] [stderr] --> src/detectors/beacon.rs:264:12 [INFO] [stderr] | [INFO] [stderr] 100 | impl BeaconDetector { [INFO] [stderr] | ------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 264 | pub fn cleanup(&mut self) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `cleanup` is never used [INFO] [stderr] --> src/detectors/c2_beacon.rs:204:12 [INFO] [stderr] | [INFO] [stderr] 79 | impl C2BeaconDetector { [INFO] [stderr] | --------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 204 | pub fn cleanup(&mut self) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `cleanup` is never used [INFO] [stderr] --> src/detectors/data_exfil.rs:164:12 [INFO] [stderr] | [INFO] [stderr] 63 | impl DataExfilDetector { [INFO] [stderr] | ---------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 164 | pub fn cleanup(&mut self) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `reset_counters` is never used [INFO] [stderr] --> src/detectors/dns_tunnel.rs:207:12 [INFO] [stderr] | [INFO] [stderr] 39 | impl DnsTunnelDetector { [INFO] [stderr] | ---------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 207 | pub fn reset_counters(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `TcpConnectionPhase` is never used [INFO] [stderr] --> src/parsers/tcp.rs:59:10 [INFO] [stderr] | [INFO] [stderr] 59 | pub enum TcpConnectionPhase { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `is_fin_scan` is never used [INFO] [stderr] --> src/parsers/tcp.rs:226:8 [INFO] [stderr] | [INFO] [stderr] 226 | pub fn is_fin_scan(info: &TcpInfo) -> bool { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `classify_connection_phase` is never used [INFO] [stderr] --> src/parsers/tcp.rs:232:8 [INFO] [stderr] | [INFO] [stderr] 232 | pub fn classify_connection_phase(info: &TcpInfo) -> TcpConnectionPhase { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `service_name_for_port` is never used [INFO] [stderr] --> src/parsers/tcp.rs:268:8 [INFO] [stderr] | [INFO] [stderr] 268 | pub fn service_name_for_port(port: u16) -> Option<&'static str> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `is_dhcp_port` is never used [INFO] [stderr] --> src/parsers/udp.rs:74:8 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn is_dhcp_port(info: &UdpInfo) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `service_name_for_port` is never used [INFO] [stderr] --> src/parsers/udp.rs:84:8 [INFO] [stderr] | [INFO] [stderr] 84 | pub fn service_name_for_port(port: u16) -> Option<&'static str> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `DNS_TYPE_SRV` is never used [INFO] [stderr] --> src/parsers/dns.rs:29:11 [INFO] [stderr] | [INFO] [stderr] 29 | pub const DNS_TYPE_SRV: u16 = 33; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `DNS_TYPE_DS` is never used [INFO] [stderr] --> src/parsers/dns.rs:32:11 [INFO] [stderr] | [INFO] [stderr] 32 | pub const DNS_TYPE_DS: u16 = 43; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `DNS_TYPE_RRSIG` is never used [INFO] [stderr] --> src/parsers/dns.rs:33:11 [INFO] [stderr] | [INFO] [stderr] 33 | pub const DNS_TYPE_RRSIG: u16 = 46; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `DNS_TYPE_NSEC` is never used [INFO] [stderr] --> src/parsers/dns.rs:34:11 [INFO] [stderr] | [INFO] [stderr] 34 | pub const DNS_TYPE_NSEC: u16 = 47; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `DNS_TYPE_DNSKEY` is never used [INFO] [stderr] --> src/parsers/dns.rs:35:11 [INFO] [stderr] | [INFO] [stderr] 35 | pub const DNS_TYPE_DNSKEY: u16 = 48; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `DNS_TYPE_ANY` is never used [INFO] [stderr] --> src/parsers/dns.rs:37:11 [INFO] [stderr] | [INFO] [stderr] 37 | pub const DNS_TYPE_ANY: u16 = 255; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `rtype_name` is never used [INFO] [stderr] --> src/parsers/dns.rs:126:8 [INFO] [stderr] | [INFO] [stderr] 126 | pub fn rtype_name(rtype: u16) -> &'static str { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `rcode_name` is never used [INFO] [stderr] --> src/parsers/dns.rs:148:8 [INFO] [stderr] | [INFO] [stderr] 148 | pub fn rcode_name(rcode: u8) -> &'static str { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `parse_http_request` is never used [INFO] [stderr] --> src/parsers/http.rs:137:8 [INFO] [stderr] | [INFO] [stderr] 137 | pub fn parse_http_request(data: &[u8]) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `parse_http_response` is never used [INFO] [stderr] --> src/parsers/http.rs:148:8 [INFO] [stderr] | [INFO] [stderr] 148 | pub fn parse_http_response(data: &[u8]) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `is_http_port` is never used [INFO] [stderr] --> src/parsers/http.rs:288:8 [INFO] [stderr] | [INFO] [stderr] 288 | pub fn is_http_port(port: u16) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `status_is_redirect` is never used [INFO] [stderr] --> src/parsers/http.rs:293:8 [INFO] [stderr] | [INFO] [stderr] 293 | pub fn status_is_redirect(code: u16) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `status_is_error` is never used [INFO] [stderr] --> src/parsers/http.rs:299:8 [INFO] [stderr] | [INFO] [stderr] 299 | pub fn status_is_error(code: u16) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `TLS_CONTENT_CHANGE_CIPHER_SPEC` is never used [INFO] [stderr] --> src/parsers/tls.rs:27:11 [INFO] [stderr] | [INFO] [stderr] 27 | pub const TLS_CONTENT_CHANGE_CIPHER_SPEC: u8 = 20; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `TLS_CONTENT_ALERT` is never used [INFO] [stderr] --> src/parsers/tls.rs:28:11 [INFO] [stderr] | [INFO] [stderr] 28 | pub const TLS_CONTENT_ALERT: u8 = 21; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `TLS_CONTENT_APPLICATION_DATA` is never used [INFO] [stderr] --> src/parsers/tls.rs:30:11 [INFO] [stderr] | [INFO] [stderr] 30 | pub const TLS_CONTENT_APPLICATION_DATA: u8 = 23; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `TLS_CONTENT_HEARTBEAT` is never used [INFO] [stderr] --> src/parsers/tls.rs:31:11 [INFO] [stderr] | [INFO] [stderr] 31 | pub const TLS_CONTENT_HEARTBEAT: u8 = 24; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `TLS_HANDSHAKE_SERVER_HELLO` is never used [INFO] [stderr] --> src/parsers/tls.rs:38:11 [INFO] [stderr] | [INFO] [stderr] 38 | pub const TLS_HANDSHAKE_SERVER_HELLO: u8 = 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `tls_version_name` is never used [INFO] [stderr] --> src/parsers/tls.rs:143:8 [INFO] [stderr] | [INFO] [stderr] 143 | pub fn tls_version_name(major: u8, minor: u8) -> &'static str { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `is_tls_port` is never used [INFO] [stderr] --> src/parsers/tls.rs:159:8 [INFO] [stderr] | [INFO] [stderr] 159 | pub fn is_tls_port(port: u16) -> bool { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `tls_service_name` is never used [INFO] [stderr] --> src/parsers/tls.rs:164:8 [INFO] [stderr] | [INFO] [stderr] 164 | pub fn tls_service_name(port: u16) -> Option<&'static str> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `tls_content_type_name` is never used [INFO] [stderr] --> src/parsers/tls.rs:179:8 [INFO] [stderr] | [INFO] [stderr] 179 | pub fn tls_content_type_name(content_type: u8) -> &'static str { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `is_suspicious_sni` is never used [INFO] [stderr] --> src/parsers/tls.rs:205:8 [INFO] [stderr] | [INFO] [stderr] 205 | pub fn is_suspicious_sni(sni: &str, blocklist: &[String]) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `is_ip_address` is never used [INFO] [stderr] --> src/parsers/tls.rs:240:4 [INFO] [stderr] | [INFO] [stderr] 240 | fn is_ip_address(s: &str) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SSH_MSG_KEXINIT` is never used [INFO] [stderr] --> src/parsers/ssh.rs:40:11 [INFO] [stderr] | [INFO] [stderr] 40 | pub const SSH_MSG_KEXINIT: u8 = 20; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SSH_MSG_NEWKEYS` is never used [INFO] [stderr] --> src/parsers/ssh.rs:43:11 [INFO] [stderr] | [INFO] [stderr] 43 | pub const SSH_MSG_NEWKEYS: u8 = 21; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SSH_MSG_SERVICE_REQUEST` is never used [INFO] [stderr] --> src/parsers/ssh.rs:46:11 [INFO] [stderr] | [INFO] [stderr] 46 | pub const SSH_MSG_SERVICE_REQUEST: u8 = 5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SSH_MSG_USERAUTH_REQUEST` is never used [INFO] [stderr] --> src/parsers/ssh.rs:49:11 [INFO] [stderr] | [INFO] [stderr] 49 | pub const SSH_MSG_USERAUTH_REQUEST: u8 = 50; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SSH_MSG_USERAUTH_FAILURE` is never used [INFO] [stderr] --> src/parsers/ssh.rs:52:11 [INFO] [stderr] | [INFO] [stderr] 52 | pub const SSH_MSG_USERAUTH_FAILURE: u8 = 51; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SSH_MSG_USERAUTH_SUCCESS` is never used [INFO] [stderr] --> src/parsers/ssh.rs:55:11 [INFO] [stderr] | [INFO] [stderr] 55 | pub const SSH_MSG_USERAUTH_SUCCESS: u8 = 52; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `SSH_MSG_DISCONNECT` is never used [INFO] [stderr] --> src/parsers/ssh.rs:58:11 [INFO] [stderr] | [INFO] [stderr] 58 | pub const SSH_MSG_DISCONNECT: u8 = 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `ssh_message_type_name` is never used [INFO] [stderr] --> src/parsers/ssh.rs:312:8 [INFO] [stderr] | [INFO] [stderr] 312 | pub fn ssh_message_type_name(msg_type: u8) -> &'static str { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `PROTOCOL_RDSTLS` is never used [INFO] [stderr] --> src/parsers/rdp.rs:74:11 [INFO] [stderr] | [INFO] [stderr] 74 | pub const PROTOCOL_RDSTLS: u32 = 0x0000_0004; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `rdp_protocol_names` is never used [INFO] [stderr] --> src/parsers/rdp.rs:251:8 [INFO] [stderr] | [INFO] [stderr] 251 | pub fn rdp_protocol_names(protocols: u32) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `mxwatch` (lib test) generated 3 warnings (1 duplicate) [INFO] [stderr] warning: `mxwatch` (bin "mxwatch" test) generated 19 warnings (2 duplicates) [INFO] [stderr] warning: `mxwatch` (bin "mxwatch") generated 65 warnings (17 duplicates) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.22s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/release/deps/mxwatch-bfb20e7077fd9a70) [INFO] [stdout] [INFO] [stdout] running 604 tests [INFO] [stdout] test capture::afpacket_capture::tests::test_afpacket_capture_new ... ok [INFO] [stdout] test capture::afpacket_capture::tests::test_block_desc_field_offsets ... ok [INFO] [stdout] test capture::afpacket_capture::tests::test_kernel_struct_sizes ... ok [INFO] [stdout] test capture::afpacket_capture::tests::test_ring_index_wraps ... ok [INFO] [stdout] test capture::afpacket_capture::tests::test_tpacket3_hdr_field_offsets ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_pcap_capture_new_does_not_panic ... ok [INFO] [stdout] test capture::afpacket_capture::tests::test_run_blocking_rejects_bad_block_size ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_pcap_capture_stores_config ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_epoch_zero ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_half_second ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_large_positive_seconds ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_max_microseconds ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_microsecond_precision ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_negative_usec_clamped_to_zero ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_one_second ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_overflow_microseconds_clamped ... ok [INFO] [stdout] test config::tests::test_afpacket_defaults_when_section_omitted ... ok [INFO] [stdout] test config::tests::test_c2_beacon_defaults_when_section_omitted ... ok [INFO] [stdout] test config::tests::test_c2_beacon_disabled_via_toml ... ok [INFO] [stdout] test config::tests::test_default_c2_beacon_detector ... ok [INFO] [stdout] test config::tests::test_default_afpacket_config ... ok [INFO] [stdout] test config::tests::test_default_config_agent ... ok [INFO] [stdout] test config::tests::test_default_capture_values ... ok [INFO] [stdout] test config::tests::test_default_config_includes_health ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_run_blocking_offline_nonexistent_file ... ok [INFO] [stdout] test config::tests::test_default_dns_tunnel_detector ... ok [INFO] [stdout] test config::tests::test_default_health_listen_addr_binds_all_interfaces ... ok [INFO] [stdout] test config::tests::test_default_health_listen_addr_uses_port_9002 ... ok [INFO] [stdout] test config::tests::test_default_pcap_config ... ok [INFO] [stdout] test config::tests::test_default_port_scan_detector ... ok [INFO] [stdout] test config::tests::test_default_resource_limits ... ok [INFO] [stdout] test config::tests::test_default_config_includes_resource_limits ... ok [INFO] [stdout] test config::tests::test_default_transport_values ... ok [INFO] [stdout] test config::tests::test_from_file_nonexistent_returns_io_error ... ok [INFO] [stdout] test config::tests::test_health_defaults_when_section_omitted ... ok [INFO] [stdout] test config::tests::test_parse_c2_beacon_section ... ok [INFO] [stdout] test config::tests::test_parse_afpacket_section ... ok [INFO] [stdout] test config::tests::test_from_file_reads_agent_section ... ok [INFO] [stdout] test config::tests::test_parse_health_section ... ok [INFO] [stdout] test config::tests::test_parse_detectors_section ... ok [INFO] [stdout] test config::tests::test_parse_capture_section ... ok [INFO] [stdout] test config::tests::test_parse_minimal_toml ... ok [INFO] [stdout] test config::tests::test_parse_invalid_toml_returns_error ... ok [INFO] [stdout] test config::tests::test_parse_resource_limits_section ... ok [INFO] [stdout] test config::tests::test_parse_pcap_section ... ok [INFO] [stdout] test config::tests::test_parse_transport_section ... ok [INFO] [stdout] test config::tests::test_pcap_defaults_when_section_omitted ... ok [INFO] [stdout] test config::tests::test_pcap_read_file_absent_is_none ... ok [INFO] [stdout] test config::tests::test_resource_limits_custom_cpu_only ... ok [INFO] [stdout] test config::tests::test_resource_limits_disabled_via_toml ... ok [INFO] [stdout] test config::tests::test_resource_limits_section_omitted_uses_defaults ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_detector_name ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_fires_after_min_connections_periodic ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_evidence_required_fields ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_description_contains_flow_info ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_severity_is_high ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_run_blocking_empty_read_file_routes_to_live ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_run_blocking_none_read_file_routes_to_live ... ok [INFO] [stdout] test detectors::beacon::tests::test_burst_packets_debounced_to_one_sample ... ok [INFO] [stdout] test detectors::beacon::tests::test_cleanup_empty_does_not_panic ... ok [INFO] [stdout] test detectors::beacon::tests::test_cleanup_keeps_fresh_flows ... ok [INFO] [stdout] test detectors::beacon::tests::test_cleanup_removes_only_stale_entries ... ok [INFO] [stdout] test detectors::beacon::tests::test_cleanup_removes_stale_flows ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_all_zeros_returns_false ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_empty_returns_false ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_highly_variable_returns_false ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_identical_sizes ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_fires_only_once_per_flow ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_technique_t1071_for_port_80 ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_technique_t1071_for_uncommon_port ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_single_returns_false ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_slightly_varying ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_technique_t1573_for_port_443 ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_zeros_excluded_from_cv ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_technique_t1573_for_port_8443 ... ok [INFO] [stdout] test detectors::beacon::tests::test_default_config_creates_detector ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_two_similar_non_zero ... ok [INFO] [stdout] test detectors::beacon::tests::test_different_src_ip_is_different_flow ... ok [INFO] [stdout] test detectors::beacon::tests::test_disabled_never_alerts ... ok [INFO] [stdout] test detectors::beacon::tests::test_min_connections_exactly_at_threshold_alerts ... ok [INFO] [stdout] test detectors::beacon::tests::test_common_port_signal_false_in_evidence ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_empty_returns_false ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_high_frequency_tight_jitter ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_high_jitter_threshold_accepts_variable ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_identical_intervals_perfect ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_jitter_exactly_at_threshold_excluded ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_signal_with_uniform_sizes ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_jitter_just_below_threshold_passes ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_negative_threshold_always_fails ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_single_interval_zero_jitter ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_single_outlier_breaks_periodicity ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_tight_jitter_passes ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_wide_jitter_fails ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_zero_mean_returns_false ... ok [INFO] [stdout] test detectors::beacon::tests::test_single_call_no_alert ... ok [INFO] [stdout] test detectors::beacon::tests::test_below_min_connections_no_alert ... ok [INFO] [stdout] test detectors::beacon::tests::test_different_dst_port_is_different_flow ... ok [INFO] [stdout] test detectors::beacon::tests::test_multiple_flows_tracked_independently ... ok [INFO] [stdout] test detectors::beacon::tests::test_no_alert_after_alerted_flag_set ... ok [INFO] [stdout] test detectors::beacon::tests::test_high_jitter_threshold_accepts_variable_timing ... ok [INFO] [stdout] test detectors::beacon::tests::test_interval_count_in_evidence ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_burst_packets_debounced_to_single_sample ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_cleanup_empty_detector_does_not_panic ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_cleanup_keeps_fresh_flows ... ok [INFO] [stdout] test detectors::beacon::tests::test_uncommon_port_signal_in_evidence ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_alert_description_contains_flow_info ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_default_config_creates_detector ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_detector_disabled_returns_none ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_cleanup_removes_only_stale_entries ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_cleanup_removes_stale_flows ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_alert_evidence_contains_expected_fields ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_different_src_ip_is_different_flow ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_alert_fires_after_min_packets_periodic ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_large_jitter_pct_clamped_to_valid_min_gap ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_alert_evidence_interval_count_correct ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_min_packets_exactly_at_threshold_alerts ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_detector_name_in_alert ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_all_same_returns_true ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_all_zeros_returns_false ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_beacon_with_drift ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_cv_exactly_at_threshold ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_cv_just_above_threshold_returns_false ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_empty_returns_false ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_high_frequency_beacon ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_jitter_above_threshold_returns_false ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_jitter_within_20pct ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_large_dataset_irregular ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_large_dataset_regular ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_large_jitter_accepts_moderate_variation ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_negative_jitter_treated_as_zero ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_perfect_60s_beacon ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_single_interval_returns_true ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_single_outlier_breaks_periodicity ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_strict_10pct_regular ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_strict_10pct_rejects_wide_jitter ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_two_equal_intervals_returns_true ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_zero_jitter_only_perfect ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_zero_jitter_rejects_variation ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_zero_mean_returns_false ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_single_packet_no_alert ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_zero_jitter_requires_perfect_intervals ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_accumulates_across_many_packets ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_alert_fires_at_threshold ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_cleanup_removes_aged_flows ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_different_dst_ips_are_independent ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_different_dst_ports_are_independent ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_disabled_returns_none ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_evidence_contains_expected_fields ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_no_alert_below_threshold ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_no_duplicate_alert_in_same_window ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_saturating_add_prevents_overflow ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_severity_critical_at_10x_threshold ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_severity_high_at_3x_threshold ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_severity_medium_at_threshold ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_single_large_packet_triggers_alert ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_zero_bytes_returns_none ... ok [INFO] [stdout] test detectors::dga::tests::test_akamai_whitelisted ... ok [INFO] [stdout] test detectors::dga::tests::test_alert_dga_score_present ... ok [INFO] [stdout] test detectors::dga::tests::test_alert_domain_and_sld ... ok [INFO] [stdout] test detectors::dga::tests::test_alert_technique_id ... ok [INFO] [stdout] test detectors::dga::tests::test_all_consonants_high_confidence ... ok [INFO] [stdout] test detectors::dga::tests::test_base32_domain_high_confidence ... ok [INFO] [stdout] test detectors::dga::tests::test_bigram_score_common_english ... ok [INFO] [stdout] test detectors::dga::tests::test_bigram_score_random ... ok [INFO] [stdout] test detectors::dga::tests::test_cloudfront_whitelisted ... ok [INFO] [stdout] test detectors::dga::tests::test_consonant_cluster_score ... ok [INFO] [stdout] test detectors::dga::tests::test_disabled_detector_no_alert ... ok [INFO] [stdout] test detectors::dga::tests::test_empty_questions_no_alert ... ok [INFO] [stdout] test detectors::dga::tests::test_extract_sld_multi_label ... ok [INFO] [stdout] test detectors::dga::tests::test_extract_sld_single_label ... ok [INFO] [stdout] test detectors::dga::tests::test_extract_sld_trailing_dot ... ok [INFO] [stdout] test detectors::dga::tests::test_extract_sld_two_labels ... ok [INFO] [stdout] test detectors::dga::tests::test_github_whitelisted ... ok [INFO] [stdout] test detectors::dga::tests::test_hex_domain_high_confidence ... ok [INFO] [stdout] test detectors::dga::tests::test_high_numeric_ratio_domain ... ok [INFO] [stdout] test detectors::dga::tests::test_is_whitelisted_negative ... ok [INFO] [stdout] test detectors::dga::tests::test_is_whitelisted_positive ... ok [INFO] [stdout] test detectors::dga::tests::test_length_score_boundaries ... ok [INFO] [stdout] test detectors::dga::tests::test_long_pronounceable_domain_no_alert ... ok [INFO] [stdout] test detectors::dga::tests::test_mail_subdomain_no_alert ... ok [INFO] [stdout] test detectors::dga::tests::test_normal_domain_no_alert ... ok [INFO] [stdout] test detectors::dga::tests::test_numeric_ratio_score ... ok [INFO] [stdout] test detectors::dga::tests::test_pattern_score_base32 ... ok [INFO] [stdout] test detectors::dga::tests::test_pattern_score_hex ... ok [INFO] [stdout] test detectors::dga::tests::test_response_not_evaluated ... ok [INFO] [stdout] test detectors::dga::tests::test_short_common_domain_no_alert ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_detector_severity_is_high ... ok [INFO] [stdout] test detectors::dga::tests::test_short_sld_skipped ... ok [INFO] [stdout] test detectors::dga::tests::test_vowel_score_all_digits ... ok [INFO] [stdout] test detectors::dga::tests::test_vowel_score_no_vowels ... ok [INFO] [stdout] test detectors::dga::tests::test_vowel_score_normal_english ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_alert_contains_domain_in_evidence ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_any_record_triggers_low_severity_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_empty_questions_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_burst_triggers_alert_after_100_queries ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_excessive_label_count_triggers_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_extract_base_domain_multi_label ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_extract_base_domain_single_label ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_extract_base_domain_two_labels ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_high_combined_entropy_across_labels_triggers_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_high_entropy_subdomain_triggers_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_label_at_threshold_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_long_domain_triggers_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_long_individual_label_triggers_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_low_combined_entropy_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_low_entropy_short_subdomain_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_normal_a_query_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_normal_label_count_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_normal_subdomain_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_null_record_triggers_medium_severity_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_txt_record_triggers_low_severity_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_reset_counters_clears_state ... ok [INFO] [stdout] test detectors::port_scan::tests::test_alert_fires_at_threshold ... ok [INFO] [stdout] test detectors::port_scan::tests::test_counter_resets_after_alert ... ok [INFO] [stdout] test detectors::port_scan::tests::test_different_sources_are_independent ... ok [INFO] [stdout] test detectors::port_scan::tests::test_duplicate_ports_not_counted_twice ... ok [INFO] [stdout] test detectors::port_scan::tests::test_no_alert_below_threshold ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_evidence_contains_port_and_protocols ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_different_dst_port_is_different_flow ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_http_on_22 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_http_on_443 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_http_on_993 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_ssh_on_443 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_tls_on_25 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_tls_on_80 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_unrecognized_payload_on_22 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_unrecognized_payload_on_443 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_detect_protocol_empty ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_detect_protocol_http ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_detect_protocol_smtp ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_detect_protocol_tls ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_detect_protocol_ssh ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_detect_protocol_unknown ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_dns_payload_invalid_opcode ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_dns_payload_too_short ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_dns_payload_valid_query ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_dns_payload_valid_response ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_dns_payload_zero_qdcount ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_expected_protocol_dns ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_expected_protocol_http_ports ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_expected_protocol_smtp ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_expected_protocol_tls_ports ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_http_payload_all_methods ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_expected_protocol_ssh ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_expected_protocol_unknown_port ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_http_payload_get_request ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_http_payload_post_request ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_http_payload_non_http ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_http_payload_response ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_empty_payload ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_http_on_80 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_smtp_on_25 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_unknown_port ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_ssh_on_22 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_tls_on_443 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_unrecognized_payload_on_non_strict_port ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_smtp_payload_ehlo ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_smtp_payload_greeting ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_smtp_payload_helo ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_smtp_payload_mail_from ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_smtp_payload_not_smtp ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_ssh_payload_not_ssh ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_ssh_payload_banner ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_alert_record ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_application_data_record ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_change_cipher_spec ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_handshake_record ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_too_short ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_wrong_content_type ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_wrong_version_major ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_unrecognized_alert_evidence_has_null_observed ... ok [INFO] [stdout] test events::ocsf::tests::test_alert_activity_id ... ok [INFO] [stdout] test events::ocsf::tests::test_alert_detection_detail ... ok [INFO] [stdout] test events::ocsf::tests::test_alert_message_from_description ... ok [INFO] [stdout] test events::ocsf::tests::test_alert_severity_mapping ... ok [INFO] [stdout] test events::ocsf::tests::test_connection_info_direction ... ok [INFO] [stdout] test events::ocsf::tests::test_connection_info_protocol_uppercase ... ok [INFO] [stdout] test events::ocsf::tests::test_endpoint_ipv6 ... ok [INFO] [stdout] test events::ocsf::tests::test_endpoint_ipv4 ... ok [INFO] [stdout] test events::ocsf::tests::test_json_detection_omitted_for_traffic ... ok [INFO] [stdout] test events::ocsf::tests::test_json_detection_present_for_alert ... ok [INFO] [stdout] test events::ocsf::tests::test_json_metadata ... ok [INFO] [stdout] test events::ocsf::tests::test_json_time_is_integer ... ok [INFO] [stdout] test events::ocsf::tests::test_json_traffic_structure ... ok [INFO] [stdout] test events::ocsf::tests::test_roundtrip_alert ... ok [INFO] [stdout] test events::ocsf::tests::test_roundtrip_traffic ... ok [INFO] [stdout] test events::ocsf::tests::test_severity_name_all ... ok [INFO] [stdout] test events::ocsf::tests::test_traffic_activity_id ... ok [INFO] [stdout] test events::ocsf::tests::test_traffic_class_uid ... ok [INFO] [stdout] test events::ocsf::tests::test_traffic_connection_info ... ok [INFO] [stdout] test events::ocsf::tests::test_traffic_endpoints ... ok [INFO] [stdout] test events::ocsf::tests::test_traffic_no_detection ... ok [INFO] [stdout] test health::tests::default_health_listen_addr_binds_all_interfaces ... ok [INFO] [stdout] test events::ocsf::tests::test_traffic_severity_levels ... ok [INFO] [stdout] test health::tests::default_health_listen_addr_uses_port_9002 ... ok [INFO] [stdout] test health::tests::health_state_clone_shares_atomics ... ok [INFO] [stdout] test health::tests::health_state_new_starts_with_capture_not_running ... ok [INFO] [stdout] test health::tests::health_state_new_starts_with_transport_not_connected ... ok [INFO] [stdout] test health::tests::health_state_new_starts_with_no_events_sent ... ok [INFO] [stdout] test health::tests::healthz_response_has_agent_name ... ok [INFO] [stdout] test health::tests::healthz_response_has_version ... ok [INFO] [stdout] test health::tests::healthz_response_has_status_ok ... ok [INFO] [stdout] test health::tests::healthz_returns_200 ... ok [INFO] [stdout] test health::tests::healthz_returns_json_object ... ok [INFO] [stdout] test health::tests::healthz_returns_200_even_when_not_ready ... ok [INFO] [stdout] test health::tests::readyz_body_is_ready_when_all_conditions_met ... ok [INFO] [stdout] test health::tests::readyz_body_is_not_ready_when_not_ready ... ok [INFO] [stdout] test health::tests::readyz_returns_200_when_all_conditions_met ... ok [INFO] [stdout] test health::tests::readyz_returns_503_when_capture_not_running ... ok [INFO] [stdout] test health::tests::readyz_returns_503_when_no_conditions_met ... ok [INFO] [stdout] test health::tests::readyz_returns_503_when_no_recent_events ... ok [INFO] [stdout] test parsers::dns::tests::test_entropy_empty_string ... ok [INFO] [stdout] test parsers::dns::tests::test_entropy_high_for_random_looking_string ... ok [INFO] [stdout] test parsers::dns::tests::test_entropy_low_for_repetitive_string ... ok [INFO] [stdout] test health::tests::readyz_returns_503_when_transport_not_connected ... ok [INFO] [stdout] test health::tests::unknown_route_returns_404 ... ok [INFO] [stdout] test parsers::dns::tests::test_entropy_single_char_repeated ... ok [INFO] [stdout] test parsers::dns::tests::test_entropy_two_equal_symbols ... ok [INFO] [stdout] test parsers::dns::tests::test_flags_field_preserved ... ok [INFO] [stdout] test parsers::dns::tests::test_opcode_extracted_from_flags ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_a_record_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_aaaa_record_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_authority_section ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_cname_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_empty_question_section ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_label_compression_in_answer_name ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_multiple_a_answers ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_mx_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_ns_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_nxdomain_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_ptr_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_rcode_nxdomain ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_response_flag ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_soa_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_too_short_returns_none ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_txt_response_multiple_strings ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_standard_query_for_example_com ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_txt_response_single_string ... ok [INFO] [stdout] test parsers::dns::tests::test_rtype_name_known_types ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_unknown_rtype_preserved_as_raw_bytes ... ok [INFO] [stdout] test parsers::dns::tests::test_rcode_name_known_codes ... ok [INFO] [stdout] test parsers::dns::tests::test_wire_name_helper_round_trip ... ok [INFO] [stdout] test parsers::http::tests::test_is_http_port_non_http_ports ... ok [INFO] [stdout] test parsers::http::tests::test_is_http_port_standard_ports ... ok [INFO] [stdout] test parsers::http::tests::test_not_suspicious_normal_get ... ok [INFO] [stdout] test parsers::http::tests::test_not_suspicious_response_large_video ... ok [INFO] [stdout] test parsers::http::tests::test_not_suspicious_response_normal ... ok [INFO] [stdout] test parsers::http::tests::test_parse_http_detects_request ... ok [INFO] [stdout] test parsers::http::tests::test_parse_http_detects_response ... ok [INFO] [stdout] test parsers::http::tests::test_parse_http_returns_none_for_unknown ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_all_standard_methods ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_authorization ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_basic_headers ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_connect_method ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_connection_header ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_content_length ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_content_type ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_cookie ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_get_start_line ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_headers_complete_flag ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_header_count ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_http10_fallback ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_referer ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_referrer_alternate_spelling ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_returns_none_for_non_http ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_returns_none_for_response ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_transfer_encoding ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_truncated_no_blank_line ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_x_forwarded_for ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_10_version ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_200_ok ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_301_moved_permanently_with_location ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_content_type ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_404_not_found ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_invalid_status_code ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_multi_reason_phrase ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_multiple_set_cookie ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_returns_none_for_garbage ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_returns_none_for_request ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_transfer_encoding_chunked ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_server_header ... ok [INFO] [stdout] test parsers::http::tests::test_status_is_redirect ... ok [INFO] [stdout] test parsers::http::tests::test_status_is_error ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_command_injection_backtick ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_command_injection_pipe ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_command_injection_semicolon ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_directory_traversal_unix ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_custom_pattern ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_directory_traversal_windows ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_null_byte_url_encoded ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_php_webshell_cmd ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_post_without_user_agent ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_request_returns_false_for_response ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_response_large_text_payload ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_response_old_apache ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_response_returns_false_for_request ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_response_old_iis6 ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_alert_fires_only_once_per_flow ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_scanner_user_agent_nikto ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_scanner_user_agent_sqlmap ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_sql_drop_table ... ok [INFO] [stdout] test parsers::rdp::tests::test_e2e_rdp_cc_not_suspicious ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_sql_union_select ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_sql_union_select_percent_encoded ... ok [INFO] [stdout] test parsers::rdp::tests::test_e2e_rdp_legacy_cr_suspicious ... ok [INFO] [stdout] test parsers::rdp::tests::test_e2e_rdp_nla_cr_not_suspicious ... ok [INFO] [stdout] test parsers::rdp::tests::test_e2e_rdp_tls_only_suspicious ... ok [INFO] [stdout] test parsers::rdp::tests::test_is_rdp_port_non_rdp ... ok [INFO] [stdout] test parsers::rdp::tests::test_is_rdp_port_standard ... ok [INFO] [stdout] test parsers::rdp::tests::test_not_suspicious_rdp_connection_confirm ... ok [INFO] [stdout] test parsers::rdp::tests::test_not_suspicious_rdp_hybrid_ex ... ok [INFO] [stdout] test parsers::rdp::tests::test_not_suspicious_rdp_nla_requested ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_cr_without_neg_structure ... ok [INFO] [stdout] test parsers::rdp::tests::test_not_suspicious_rdp_no_neg_structure ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_hybrid_ex ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_cc_neg_type_is_rsp ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_legacy_no_tls_no_nla ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_neg_type_is_req ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_pdu_type_connection_confirm ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_nla_and_tls_requested ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_pdu_type_connection_request ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_returns_none_on_empty ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_returns_none_on_garbage ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_tls_only_no_nla ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_returns_none_wrong_tpkt_version ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_tpkt_length ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_returns_none_on_short_data ... ok [INFO] [stdout] test parsers::rdp::tests::test_rdp_protocol_names_all_flags ... ok [INFO] [stdout] test parsers::rdp::tests::test_rdp_protocol_names_legacy ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_tpkt_version ... ok [INFO] [stdout] test parsers::rdp::tests::test_rdp_protocol_names_ssl_hybrid ... ok [INFO] [stdout] test parsers::rdp::tests::test_suspicious_rdp_tls_without_nla ... ok [INFO] [stdout] test parsers::rdp::tests::test_suspicious_rdp_legacy_protocol_only ... ok [INFO] [stdout] test parsers::smb::tests::test_e2e_smb1_detected_suspicious ... ok [INFO] [stdout] test parsers::smb::tests::test_e2e_smb2_signed_session_not_suspicious ... ok [INFO] [stdout] test parsers::smb::tests::test_e2e_smb2_unsigned_create_suspicious ... ok [INFO] [stdout] test parsers::smb::tests::test_is_smb_port_non_smb ... ok [INFO] [stdout] test parsers::smb::tests::test_is_smb_port_standard ... ok [INFO] [stdout] test parsers::smb::tests::test_not_suspicious_normal_session ... ok [INFO] [stdout] test parsers::smb::tests::test_not_suspicious_null_session_on_negotiate ... ok [INFO] [stdout] test parsers::smb::tests::test_not_suspicious_signed_write ... ok [INFO] [stdout] test parsers::smb::tests::test_not_suspicious_unsigned_read ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_bare_smb2_header ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_garbage_returns_none ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_is_response_flag ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_partial_header_returns_some ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_nbt_wrapped_smb2 ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_signed_session_not_flagged_unsigned ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_smb1_with_nbt_wrapper ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_smb1_magic_detected ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_tree_id_field ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_too_short_returns_none ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_unsigned_session_flagged ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_status_field ... ok [INFO] [stdout] test parsers::smb::tests::test_smb2_command_name_all_known ... ok [INFO] [stdout] test parsers::smb::tests::test_smb2_command_name_unknown ... ok [INFO] [stdout] test parsers::smb::tests::test_suspicious_null_session_non_negotiate ... ok [INFO] [stdout] test parsers::smb::tests::test_suspicious_smb1_always_flagged ... ok [INFO] [stdout] test parsers::smb::tests::test_suspicious_unsigned_create ... ok [INFO] [stdout] test parsers::smb::tests::test_suspicious_unsigned_write ... ok [INFO] [stdout] test parsers::ssh::tests::test_e2e_openssh_banner_not_suspicious ... ok [INFO] [stdout] test parsers::smb::tests::test_suspicious_unsigned_ioctl ... ok [INFO] [stdout] test parsers::ssh::tests::test_e2e_paramiko_banner_suspicious ... ok [INFO] [stdout] test parsers::ssh::tests::test_is_ssh_port_non_ssh ... ok [INFO] [stdout] test parsers::ssh::tests::test_e2e_ssh1_banner_suspicious ... ok [INFO] [stdout] test parsers::ssh::tests::test_not_suspicious_ssh_blocklist_no_match ... ok [INFO] [stdout] test parsers::ssh::tests::test_not_suspicious_ssh_normal_banner ... ok [INFO] [stdout] test parsers::ssh::tests::test_is_ssh_port_standard ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_lf_only_terminator ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_is_client_heuristic ... ok [INFO] [stdout] test parsers::ssh::tests::test_not_suspicious_ssh_no_banner_no_packet ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_no_comment ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_proto_version ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_libssh ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_software_version ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_ssh1_proto ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_with_comment ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_binary_packet_implausibly_large_rejected ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_binary_packet_newkeys ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_binary_packet_too_short ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_binary_packet_userauth ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_detects_banner ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_detects_binary_packet ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_returns_none_on_empty ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_binary_packet_zero_length_rejected ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_returns_none_on_garbage ... ok [INFO] [stdout] test parsers::ssh::tests::test_ssh_message_type_name_known ... ok [INFO] [stdout] test parsers::ssh::tests::test_ssh_message_type_name_unknown ... ok [INFO] [stdout] test parsers::ssh::tests::test_suspicious_ssh_blocklist_case_insensitive ... ok [INFO] [stdout] test parsers::ssh::tests::test_suspicious_ssh_blocklist_match ... ok [INFO] [stdout] test parsers::ssh::tests::test_suspicious_ssh_empty_software_version ... ok [INFO] [stdout] test parsers::ssh::tests::test_suspicious_ssh_blocklist_partial_substring ... ok [INFO] [stdout] test parsers::ssh::tests::test_suspicious_ssh_proto_v1 ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_below_min_packets_no_alert ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_closing ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_high_jitter_pct_accepts_variable_timing ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_established ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_null_scan ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_opening ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_reset ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_syn_ack ... ok [INFO] [stdout] test parsers::tcp::tests::test_is_fin_scan ... ok [INFO] [stdout] test parsers::tcp::tests::test_is_syn_only_false_for_plain_ack ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_xmas_scan ... ok [INFO] [stdout] test parsers::tcp::tests::test_is_syn_only_true_for_pure_syn ... ok [INFO] [stdout] test parsers::tcp::tests::test_is_syn_only_false_for_syn_ack ... ok [INFO] [stdout] test parsers::tcp::tests::test_is_xmas_scan ... ok [INFO] [stdout] test parsers::tcp::tests::test_normal_ack_is_not_a_scan ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_basic_ports ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_fin_flag ... ok [INFO] [stdout] test parsers::tcp::tests::test_is_null_scan ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_header_with_mss_option ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_eol_stops_parsing ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_combined_syn_opts ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_malformed_truncated ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_mss ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_sack_permitted ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_nop_padding ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_timestamps ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_window_scale ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_payload_empty_for_no_data ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_payload_extracts_data ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_rst_flag ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_syn_ack_flags ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_syn_flag ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_too_short_returns_none ... ok [INFO] [stdout] test parsers::tcp::tests::test_service_name_for_port_unknown ... ok [INFO] [stdout] test parsers::tcp::tests::test_service_name_for_port_known ... ok [INFO] [stdout] test parsers::tls::tests::test_e2e_extract_and_check_blocklisted_sni ... ok [INFO] [stdout] test parsers::tls::tests::test_e2e_extract_and_check_normal_sni ... ok [INFO] [stdout] test parsers::tls::tests::test_is_tls_port_non_tls_ports ... ok [INFO] [stdout] test parsers::tls::tests::test_is_tls_port_standard_ports ... ok [INFO] [stdout] test parsers::tls::tests::test_not_suspicious_sni_normal_hostname ... ok [INFO] [stdout] test parsers::tls::tests::test_not_suspicious_sni_empty_blocklist ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_application_data_record ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_client_hello_extracts_long_sni ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_client_hello_extracts_sni ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_client_hello_record_version_fields ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_client_hello_extracts_subdomain_sni ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_client_hello_without_sni_extension ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_client_hello_sni_not_first_extension ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_handshake_non_client_hello ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_version_fields ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_non_handshake_record ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_blocklist_exact_match ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_too_short_returns_none ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_blocklist_no_false_positive ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_empty_string ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_blocklist_subdomain_match ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_ipv4_address ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_exactly_max_length_is_not_suspicious ... ok [INFO] [stdout] test parsers::tls::tests::test_tls_content_type_name_known_types ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_ipv6_address ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_oversized_name ... ok [INFO] [stdout] test parsers::tls::tests::test_tls_service_name_known_ports ... ok [INFO] [stdout] test parsers::tls::tests::test_tls_service_name_unknown_ports ... ok [INFO] [stdout] test parsers::tls::tests::test_tls_version_name_from_parsed_info ... ok [INFO] [stdout] test parsers::tls::tests::test_tls_version_name_known_versions ... ok [INFO] [stdout] test parsers::tls::tests::test_tls_version_name_unknown ... ok [INFO] [stdout] test parsers::udp::tests::test_extract_payload_empty_for_header_only ... ok [INFO] [stdout] test parsers::udp::tests::test_extract_payload_empty_for_short_data ... ok [INFO] [stdout] test parsers::udp::tests::test_extract_payload_returns_data_after_header ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dhcp_port_client_to_server ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dhcp_port_false ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dhcp_port_server_to_client ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dns_port_dst_53 ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dns_port_false_for_other ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dns_port_mdns_5353 ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dns_port_src_53 ... ok [INFO] [stdout] test parsers::udp::tests::test_parse_udp_dns_port_53 ... ok [INFO] [stdout] test parsers::udp::tests::test_parse_udp_basic_ports ... ok [INFO] [stdout] test parsers::udp::tests::test_parse_udp_too_short_returns_none ... ok [INFO] [stdout] test parsers::udp::tests::test_service_name_for_port_known ... ok [INFO] [stdout] test parsers::udp::tests::test_parse_udp_with_payload ... ok [INFO] [stdout] test parsers::udp::tests::test_service_name_for_port_unknown ... ok [INFO] [stdout] test resource::tests::test_clk_tck_is_positive ... ok [INFO] [stdout] test resource::tests::test_disabled_monitor_runs_immediately ... ok [INFO] [stdout] test resource::tests::test_monitor_new_returns_shared_snapshot ... ok [INFO] [stdout] test resource::tests::test_cpu_ticks_increase_over_time ... ok [INFO] [stdout] test resource::tests::test_read_cpu_ticks_returns_some ... ok [INFO] [stdout] test resource::tests::test_read_rss_kb_returns_some ... ok [INFO] [stdout] test resource::tests::test_rss_is_reasonable ... ok [INFO] [stdout] test resource::tests::test_snapshot_cpu_pct_conversion ... ok [INFO] [stdout] test resource::tests::test_snapshot_default_is_zero ... ok [INFO] [stdout] test resource::tests::test_snapshot_rss_mb_120mb ... ok [INFO] [stdout] test resource::tests::test_snapshot_cpu_pct_fractional ... ok [INFO] [stdout] test resource::tests::test_snapshot_rss_mb_zero ... ok [INFO] [stdout] test resource::tests::test_snapshot_rss_mb_conversion ... ok [INFO] [stdout] test transport::http::tests::test_new_stores_config ... ok [INFO] [stdout] test transport::http::tests::test_new_builds_successfully ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_empty_returns_ok_without_request ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_multiple_events_in_one_request ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_no_auth_header_when_api_key_empty ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_posts_to_correct_path ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_returns_error_on_client_error ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_returns_error_on_server_error ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_serializes_ocsf_fields ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_uses_json_content_type ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_includes_bearer_token_when_api_key_set ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_payload_is_json_array ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_multiple_flows_tracked_independently ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_no_alert_after_alerted_flag ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_exhausts_retries_and_returns_error ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_retries_on_failure_then_succeeds ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 604 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.77s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/release/deps/mxwatch-09c3d7a96a8b9e41) [INFO] [stdout] [INFO] [stdout] running 604 tests [INFO] [stdout] test capture::afpacket_capture::tests::test_block_desc_field_offsets ... ok [INFO] [stdout] test capture::afpacket_capture::tests::test_kernel_struct_sizes ... ok [INFO] [stdout] test capture::afpacket_capture::tests::test_ring_index_wraps ... ok [INFO] [stdout] test capture::afpacket_capture::tests::test_tpacket3_hdr_field_offsets ... ok [INFO] [stdout] test capture::afpacket_capture::tests::test_afpacket_capture_new ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_pcap_capture_new_does_not_panic ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_pcap_capture_stores_config ... ok [INFO] [stdout] test capture::afpacket_capture::tests::test_run_blocking_rejects_bad_block_size ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_run_blocking_offline_nonexistent_file ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_epoch_zero ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_half_second ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_large_positive_seconds ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_max_microseconds ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_microsecond_precision ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_negative_usec_clamped_to_zero ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_one_second ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_ts_overflow_microseconds_clamped ... ok [INFO] [stdout] test config::tests::test_default_c2_beacon_detector ... ok [INFO] [stdout] test config::tests::test_c2_beacon_defaults_when_section_omitted ... ok [INFO] [stdout] test config::tests::test_afpacket_defaults_when_section_omitted ... ok [INFO] [stdout] test config::tests::test_default_afpacket_config ... ok [INFO] [stdout] test config::tests::test_c2_beacon_disabled_via_toml ... ok [INFO] [stdout] test config::tests::test_default_capture_values ... ok [INFO] [stdout] test config::tests::test_default_config_agent ... ok [INFO] [stdout] test config::tests::test_default_config_includes_health ... ok [INFO] [stdout] test config::tests::test_default_config_includes_resource_limits ... ok [INFO] [stdout] test config::tests::test_default_dns_tunnel_detector ... ok [INFO] [stdout] test config::tests::test_default_health_listen_addr_binds_all_interfaces ... ok [INFO] [stdout] test config::tests::test_default_health_listen_addr_uses_port_9002 ... ok [INFO] [stdout] test config::tests::test_default_pcap_config ... ok [INFO] [stdout] test config::tests::test_default_port_scan_detector ... ok [INFO] [stdout] test config::tests::test_default_resource_limits ... ok [INFO] [stdout] test config::tests::test_default_transport_values ... ok [INFO] [stdout] test config::tests::test_from_file_nonexistent_returns_io_error ... ok [INFO] [stdout] test config::tests::test_parse_capture_section ... ok [INFO] [stdout] test config::tests::test_health_defaults_when_section_omitted ... ok [INFO] [stdout] test config::tests::test_from_file_reads_agent_section ... ok [INFO] [stdout] test config::tests::test_parse_afpacket_section ... ok [INFO] [stdout] test config::tests::test_parse_c2_beacon_section ... ok [INFO] [stdout] test config::tests::test_parse_detectors_section ... ok [INFO] [stdout] test config::tests::test_parse_health_section ... ok [INFO] [stdout] test config::tests::test_parse_invalid_toml_returns_error ... ok [INFO] [stdout] test config::tests::test_parse_pcap_section ... ok [INFO] [stdout] test config::tests::test_parse_resource_limits_section ... ok [INFO] [stdout] test config::tests::test_parse_minimal_toml ... ok [INFO] [stdout] test config::tests::test_parse_transport_section ... ok [INFO] [stdout] test config::tests::test_pcap_read_file_absent_is_none ... ok [INFO] [stdout] test config::tests::test_pcap_defaults_when_section_omitted ... ok [INFO] [stdout] test config::tests::test_resource_limits_custom_cpu_only ... ok [INFO] [stdout] test config::tests::test_resource_limits_disabled_via_toml ... ok [INFO] [stdout] test config::tests::test_resource_limits_section_omitted_uses_defaults ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_run_blocking_none_read_file_routes_to_live ... ok [INFO] [stdout] test capture::pcap_capture::tests::test_run_blocking_empty_read_file_routes_to_live ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_description_contains_flow_info ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_detector_name ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_evidence_required_fields ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_fires_after_min_connections_periodic ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_severity_is_high ... ok [INFO] [stdout] test detectors::beacon::tests::test_burst_packets_debounced_to_one_sample ... ok [INFO] [stdout] test detectors::beacon::tests::test_cleanup_empty_does_not_panic ... ok [INFO] [stdout] test detectors::beacon::tests::test_cleanup_keeps_fresh_flows ... ok [INFO] [stdout] test detectors::beacon::tests::test_cleanup_removes_only_stale_entries ... ok [INFO] [stdout] test detectors::beacon::tests::test_cleanup_removes_stale_flows ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_all_zeros_returns_false ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_empty_returns_false ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_highly_variable_returns_false ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_identical_sizes ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_technique_t1071_for_port_80 ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_technique_t1071_for_uncommon_port ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_single_returns_false ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_slightly_varying ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_two_similar_non_zero ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_zeros_excluded_from_cv ... ok [INFO] [stdout] test detectors::beacon::tests::test_default_config_creates_detector ... ok [INFO] [stdout] test detectors::beacon::tests::test_different_src_ip_is_different_flow ... ok [INFO] [stdout] test detectors::beacon::tests::test_disabled_never_alerts ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_technique_t1573_for_port_443 ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_technique_t1573_for_port_8443 ... ok [INFO] [stdout] test detectors::beacon::tests::test_alert_fires_only_once_per_flow ... ok [INFO] [stdout] test detectors::beacon::tests::test_common_port_signal_false_in_evidence ... ok [INFO] [stdout] test detectors::beacon::tests::test_consistent_payload_signal_with_uniform_sizes ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_empty_returns_false ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_high_frequency_tight_jitter ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_high_jitter_threshold_accepts_variable ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_identical_intervals_perfect ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_jitter_exactly_at_threshold_excluded ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_jitter_just_below_threshold_passes ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_negative_threshold_always_fails ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_single_interval_zero_jitter ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_single_outlier_breaks_periodicity ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_tight_jitter_passes ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_wide_jitter_fails ... ok [INFO] [stdout] test detectors::beacon::tests::test_periodic_zero_mean_returns_false ... ok [INFO] [stdout] test detectors::beacon::tests::test_single_call_no_alert ... ok [INFO] [stdout] test detectors::beacon::tests::test_different_dst_port_is_different_flow ... ok [INFO] [stdout] test detectors::beacon::tests::test_high_jitter_threshold_accepts_variable_timing ... ok [INFO] [stdout] test detectors::beacon::tests::test_min_connections_exactly_at_threshold_alerts ... ok [INFO] [stdout] test detectors::beacon::tests::test_no_alert_after_alerted_flag_set ... ok [INFO] [stdout] test detectors::beacon::tests::test_below_min_connections_no_alert ... ok [INFO] [stdout] test detectors::beacon::tests::test_multiple_flows_tracked_independently ... ok [INFO] [stdout] test detectors::beacon::tests::test_uncommon_port_signal_in_evidence ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_burst_packets_debounced_to_single_sample ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_cleanup_empty_detector_does_not_panic ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_cleanup_keeps_fresh_flows ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_alert_description_contains_flow_info ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_cleanup_removes_only_stale_entries ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_default_config_creates_detector ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_detector_disabled_returns_none ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_alert_evidence_contains_expected_fields ... ok [INFO] [stdout] test detectors::beacon::tests::test_interval_count_in_evidence ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_cleanup_removes_stale_flows ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_different_src_ip_is_different_flow ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_alert_fires_after_min_packets_periodic ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_large_jitter_pct_clamped_to_valid_min_gap ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_alert_evidence_interval_count_correct ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_min_packets_exactly_at_threshold_alerts ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_detector_name_in_alert ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_all_same_returns_true ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_all_zeros_returns_false ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_beacon_with_drift ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_cv_exactly_at_threshold ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_cv_just_above_threshold_returns_false ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_empty_returns_false ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_high_frequency_beacon ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_jitter_above_threshold_returns_false ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_jitter_within_20pct ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_large_dataset_irregular ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_large_dataset_regular ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_large_jitter_accepts_moderate_variation ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_negative_jitter_treated_as_zero ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_perfect_60s_beacon ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_single_interval_returns_true ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_single_outlier_breaks_periodicity ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_detector_severity_is_high ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_strict_10pct_regular ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_strict_10pct_rejects_wide_jitter ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_two_equal_intervals_returns_true ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_zero_jitter_only_perfect ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_zero_jitter_rejects_variation ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_different_dst_port_is_different_flow ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_periodic_zero_mean_returns_false ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_zero_jitter_requires_perfect_intervals ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_accumulates_across_many_packets ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_single_packet_no_alert ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_alert_fires_at_threshold ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_cleanup_removes_aged_flows ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_different_dst_ips_are_independent ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_different_dst_ports_are_independent ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_disabled_returns_none ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_evidence_contains_expected_fields ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_no_alert_below_threshold ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_no_duplicate_alert_in_same_window ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_saturating_add_prevents_overflow ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_severity_critical_at_10x_threshold ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_severity_medium_at_threshold ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_severity_high_at_3x_threshold ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_single_large_packet_triggers_alert ... ok [INFO] [stdout] test detectors::data_exfil::tests::test_zero_bytes_returns_none ... ok [INFO] [stdout] test detectors::dga::tests::test_akamai_whitelisted ... ok [INFO] [stdout] test detectors::dga::tests::test_alert_dga_score_present ... ok [INFO] [stdout] test detectors::dga::tests::test_alert_domain_and_sld ... ok [INFO] [stdout] test detectors::dga::tests::test_alert_technique_id ... ok [INFO] [stdout] test detectors::dga::tests::test_all_consonants_high_confidence ... ok [INFO] [stdout] test detectors::dga::tests::test_bigram_score_common_english ... ok [INFO] [stdout] test detectors::dga::tests::test_base32_domain_high_confidence ... ok [INFO] [stdout] test detectors::dga::tests::test_bigram_score_random ... ok [INFO] [stdout] test detectors::dga::tests::test_cloudfront_whitelisted ... ok [INFO] [stdout] test detectors::dga::tests::test_consonant_cluster_score ... ok [INFO] [stdout] test detectors::dga::tests::test_disabled_detector_no_alert ... ok [INFO] [stdout] test detectors::dga::tests::test_empty_questions_no_alert ... ok [INFO] [stdout] test detectors::dga::tests::test_extract_sld_multi_label ... ok [INFO] [stdout] test detectors::dga::tests::test_extract_sld_single_label ... ok [INFO] [stdout] test detectors::dga::tests::test_extract_sld_trailing_dot ... ok [INFO] [stdout] test detectors::dga::tests::test_extract_sld_two_labels ... ok [INFO] [stdout] test detectors::dga::tests::test_github_whitelisted ... ok [INFO] [stdout] test detectors::dga::tests::test_hex_domain_high_confidence ... ok [INFO] [stdout] test detectors::dga::tests::test_high_numeric_ratio_domain ... ok [INFO] [stdout] test detectors::dga::tests::test_is_whitelisted_negative ... ok [INFO] [stdout] test detectors::dga::tests::test_is_whitelisted_positive ... ok [INFO] [stdout] test detectors::dga::tests::test_length_score_boundaries ... ok [INFO] [stdout] test detectors::dga::tests::test_long_pronounceable_domain_no_alert ... ok [INFO] [stdout] test detectors::dga::tests::test_normal_domain_no_alert ... ok [INFO] [stdout] test detectors::dga::tests::test_mail_subdomain_no_alert ... ok [INFO] [stdout] test detectors::dga::tests::test_numeric_ratio_score ... ok [INFO] [stdout] test detectors::dga::tests::test_pattern_score_base32 ... ok [INFO] [stdout] test detectors::dga::tests::test_pattern_score_hex ... ok [INFO] [stdout] test detectors::dga::tests::test_response_not_evaluated ... ok [INFO] [stdout] test detectors::dga::tests::test_short_common_domain_no_alert ... ok [INFO] [stdout] test detectors::dga::tests::test_short_sld_skipped ... ok [INFO] [stdout] test detectors::dga::tests::test_vowel_score_all_digits ... ok [INFO] [stdout] test detectors::dga::tests::test_vowel_score_no_vowels ... ok [INFO] [stdout] test detectors::dga::tests::test_vowel_score_normal_english ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_alert_contains_domain_in_evidence ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_any_record_triggers_low_severity_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_empty_questions_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_burst_triggers_alert_after_100_queries ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_excessive_label_count_triggers_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_extract_base_domain_multi_label ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_extract_base_domain_single_label ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_extract_base_domain_two_labels ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_high_combined_entropy_across_labels_triggers_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_high_entropy_subdomain_triggers_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_label_at_threshold_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_long_domain_triggers_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_long_individual_label_triggers_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_low_combined_entropy_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_low_entropy_short_subdomain_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_normal_a_query_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_normal_label_count_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_normal_subdomain_no_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_null_record_triggers_medium_severity_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_txt_record_triggers_low_severity_alert ... ok [INFO] [stdout] test detectors::dns_tunnel::tests::test_reset_counters_clears_state ... ok [INFO] [stdout] test detectors::port_scan::tests::test_alert_fires_at_threshold ... ok [INFO] [stdout] test detectors::port_scan::tests::test_counter_resets_after_alert ... ok [INFO] [stdout] test detectors::port_scan::tests::test_duplicate_ports_not_counted_twice ... ok [INFO] [stdout] test detectors::port_scan::tests::test_different_sources_are_independent ... ok [INFO] [stdout] test detectors::port_scan::tests::test_no_alert_below_threshold ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_evidence_contains_port_and_protocols ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_http_on_22 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_http_on_443 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_http_on_993 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_tls_on_25 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_tls_on_80 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_ssh_on_443 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_unrecognized_payload_on_22 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_alert_unrecognized_payload_on_443 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_detect_protocol_empty ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_detect_protocol_http ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_detect_protocol_smtp ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_detect_protocol_ssh ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_detect_protocol_tls ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_detect_protocol_unknown ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_dns_payload_invalid_opcode ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_dns_payload_too_short ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_dns_payload_valid_query ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_dns_payload_zero_qdcount ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_dns_payload_valid_response ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_expected_protocol_dns ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_expected_protocol_http_ports ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_expected_protocol_smtp ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_expected_protocol_ssh ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_expected_protocol_tls_ports ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_expected_protocol_unknown_port ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_http_payload_all_methods ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_http_payload_get_request ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_http_payload_non_http ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_http_payload_post_request ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_http_payload_response ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_empty_payload ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_http_on_80 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_smtp_on_25 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_ssh_on_22 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_tls_on_443 ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_unrecognized_payload_on_non_strict_port ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_no_alert_unknown_port ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_smtp_payload_ehlo ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_smtp_payload_greeting ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_smtp_payload_helo ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_smtp_payload_not_smtp ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_smtp_payload_mail_from ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_ssh_payload_banner ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_ssh_payload_not_ssh ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_application_data_record ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_alert_record ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_change_cipher_spec ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_handshake_record ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_wrong_content_type ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_too_short ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_tls_payload_wrong_version_major ... ok [INFO] [stdout] test detectors::proto_anomaly::tests::test_unrecognized_alert_evidence_has_null_observed ... ok [INFO] [stdout] test events::ocsf::tests::test_alert_activity_id ... ok [INFO] [stdout] test events::ocsf::tests::test_alert_detection_detail ... ok [INFO] [stdout] test events::ocsf::tests::test_alert_message_from_description ... ok [INFO] [stdout] test events::ocsf::tests::test_connection_info_direction ... ok [INFO] [stdout] test events::ocsf::tests::test_connection_info_protocol_uppercase ... ok [INFO] [stdout] test events::ocsf::tests::test_alert_severity_mapping ... ok [INFO] [stdout] test events::ocsf::tests::test_endpoint_ipv4 ... ok [INFO] [stdout] test events::ocsf::tests::test_endpoint_ipv6 ... ok [INFO] [stdout] test events::ocsf::tests::test_json_detection_omitted_for_traffic ... ok [INFO] [stdout] test events::ocsf::tests::test_json_detection_present_for_alert ... ok [INFO] [stdout] test events::ocsf::tests::test_json_metadata ... ok [INFO] [stdout] test events::ocsf::tests::test_json_time_is_integer ... ok [INFO] [stdout] test events::ocsf::tests::test_json_traffic_structure ... ok [INFO] [stdout] test events::ocsf::tests::test_roundtrip_alert ... ok [INFO] [stdout] test events::ocsf::tests::test_roundtrip_traffic ... ok [INFO] [stdout] test events::ocsf::tests::test_severity_name_all ... ok [INFO] [stdout] test events::ocsf::tests::test_traffic_activity_id ... ok [INFO] [stdout] test events::ocsf::tests::test_traffic_class_uid ... ok [INFO] [stdout] test events::ocsf::tests::test_traffic_connection_info ... ok [INFO] [stdout] test events::ocsf::tests::test_traffic_no_detection ... ok [INFO] [stdout] test events::ocsf::tests::test_traffic_endpoints ... ok [INFO] [stdout] test events::ocsf::tests::test_traffic_severity_levels ... ok [INFO] [stdout] test health::tests::default_health_listen_addr_binds_all_interfaces ... ok [INFO] [stdout] test health::tests::health_state_clone_shares_atomics ... ok [INFO] [stdout] test health::tests::default_health_listen_addr_uses_port_9002 ... ok [INFO] [stdout] test health::tests::health_state_new_starts_with_capture_not_running ... ok [INFO] [stdout] test health::tests::health_state_new_starts_with_no_events_sent ... ok [INFO] [stdout] test health::tests::health_state_new_starts_with_transport_not_connected ... ok [INFO] [stdout] test health::tests::healthz_response_has_agent_name ... ok [INFO] [stdout] test health::tests::healthz_response_has_status_ok ... ok [INFO] [stdout] test health::tests::healthz_response_has_version ... ok [INFO] [stdout] test health::tests::healthz_returns_200_even_when_not_ready ... ok [INFO] [stdout] test health::tests::healthz_returns_200 ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_high_jitter_pct_accepts_variable_timing ... ok [INFO] [stdout] test health::tests::healthz_returns_json_object ... ok [INFO] [stdout] test health::tests::readyz_body_is_not_ready_when_not_ready ... ok [INFO] [stdout] test health::tests::readyz_returns_503_when_capture_not_running ... ok [INFO] [stdout] test health::tests::readyz_returns_200_when_all_conditions_met ... ok [INFO] [stdout] test health::tests::readyz_body_is_ready_when_all_conditions_met ... ok [INFO] [stdout] test health::tests::readyz_returns_503_when_no_conditions_met ... ok [INFO] [stdout] test health::tests::unknown_route_returns_404 ... ok [INFO] [stdout] test health::tests::readyz_returns_503_when_transport_not_connected ... ok [INFO] [stdout] test parsers::dns::tests::test_entropy_empty_string ... ok [INFO] [stdout] test parsers::dns::tests::test_entropy_high_for_random_looking_string ... ok [INFO] [stdout] test health::tests::readyz_returns_503_when_no_recent_events ... ok [INFO] [stdout] test parsers::dns::tests::test_entropy_low_for_repetitive_string ... ok [INFO] [stdout] test parsers::dns::tests::test_entropy_single_char_repeated ... ok [INFO] [stdout] test parsers::dns::tests::test_entropy_two_equal_symbols ... ok [INFO] [stdout] test parsers::dns::tests::test_flags_field_preserved ... ok [INFO] [stdout] test parsers::dns::tests::test_opcode_extracted_from_flags ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_a_record_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_aaaa_record_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_empty_question_section ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_cname_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_authority_section ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_label_compression_in_answer_name ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_multiple_a_answers ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_mx_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_ns_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_nxdomain_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_ptr_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_rcode_nxdomain ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_response_flag ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_soa_response ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_standard_query_for_example_com ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_too_short_returns_none ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_txt_response_single_string ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_txt_response_multiple_strings ... ok [INFO] [stdout] test parsers::dns::tests::test_parse_dns_unknown_rtype_preserved_as_raw_bytes ... ok [INFO] [stdout] test parsers::dns::tests::test_rcode_name_known_codes ... ok [INFO] [stdout] test parsers::dns::tests::test_wire_name_helper_round_trip ... ok [INFO] [stdout] test parsers::dns::tests::test_rtype_name_known_types ... ok [INFO] [stdout] test parsers::http::tests::test_is_http_port_non_http_ports ... ok [INFO] [stdout] test parsers::http::tests::test_is_http_port_standard_ports ... ok [INFO] [stdout] test parsers::http::tests::test_not_suspicious_normal_get ... ok [INFO] [stdout] test parsers::http::tests::test_not_suspicious_response_large_video ... ok [INFO] [stdout] test parsers::http::tests::test_not_suspicious_response_normal ... ok [INFO] [stdout] test parsers::http::tests::test_parse_http_detects_request ... ok [INFO] [stdout] test parsers::http::tests::test_parse_http_detects_response ... ok [INFO] [stdout] test parsers::http::tests::test_parse_http_returns_none_for_unknown ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_authorization ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_basic_headers ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_connect_method ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_all_standard_methods ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_connection_header ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_content_length ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_cookie ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_content_type ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_get_start_line ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_header_count ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_headers_complete_flag ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_referer ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_http10_fallback ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_referrer_alternate_spelling ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_returns_none_for_non_http ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_returns_none_for_response ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_transfer_encoding ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_10_version ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_truncated_no_blank_line ... ok [INFO] [stdout] test parsers::http::tests::test_parse_request_x_forwarded_for ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_200_ok ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_301_moved_permanently_with_location ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_404_not_found ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_content_type ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_multi_reason_phrase ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_invalid_status_code ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_multiple_set_cookie ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_returns_none_for_garbage ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_server_header ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_returns_none_for_request ... ok [INFO] [stdout] test parsers::http::tests::test_parse_response_transfer_encoding_chunked ... ok [INFO] [stdout] test parsers::http::tests::test_status_is_redirect ... ok [INFO] [stdout] test parsers::http::tests::test_status_is_error ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_command_injection_backtick ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_command_injection_semicolon ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_command_injection_pipe ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_directory_traversal_unix ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_null_byte_url_encoded ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_custom_pattern ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_directory_traversal_windows ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_php_webshell_cmd ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_post_without_user_agent ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_request_returns_false_for_response ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_response_old_iis6 ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_response_old_apache ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_response_returns_false_for_request ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_response_large_text_payload ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_scanner_user_agent_nikto ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_scanner_user_agent_sqlmap ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_sql_drop_table ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_sql_union_select_percent_encoded ... ok [INFO] [stdout] test parsers::http::tests::test_suspicious_sql_union_select ... ok [INFO] [stdout] test parsers::rdp::tests::test_e2e_rdp_cc_not_suspicious ... ok [INFO] [stdout] test parsers::rdp::tests::test_e2e_rdp_legacy_cr_suspicious ... ok [INFO] [stdout] test parsers::rdp::tests::test_e2e_rdp_nla_cr_not_suspicious ... ok [INFO] [stdout] test parsers::rdp::tests::test_e2e_rdp_tls_only_suspicious ... ok [INFO] [stdout] test parsers::rdp::tests::test_is_rdp_port_non_rdp ... ok [INFO] [stdout] test parsers::rdp::tests::test_is_rdp_port_standard ... ok [INFO] [stdout] test parsers::rdp::tests::test_not_suspicious_rdp_connection_confirm ... ok [INFO] [stdout] test parsers::rdp::tests::test_not_suspicious_rdp_hybrid_ex ... ok [INFO] [stdout] test parsers::rdp::tests::test_not_suspicious_rdp_no_neg_structure ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_cc_neg_type_is_rsp ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_cr_without_neg_structure ... ok [INFO] [stdout] test parsers::rdp::tests::test_not_suspicious_rdp_nla_requested ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_hybrid_ex ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_legacy_no_tls_no_nla ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_neg_type_is_req ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_pdu_type_connection_confirm ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_pdu_type_connection_request ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_returns_none_on_empty ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_nla_and_tls_requested ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_returns_none_on_garbage ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_returns_none_on_short_data ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_returns_none_wrong_tpkt_version ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_tls_only_no_nla ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_tpkt_length ... ok [INFO] [stdout] test parsers::rdp::tests::test_parse_rdp_tpkt_version ... ok [INFO] [stdout] test parsers::rdp::tests::test_rdp_protocol_names_all_flags ... ok [INFO] [stdout] test parsers::rdp::tests::test_rdp_protocol_names_ssl_hybrid ... ok [INFO] [stdout] test parsers::rdp::tests::test_rdp_protocol_names_legacy ... ok [INFO] [stdout] test parsers::rdp::tests::test_suspicious_rdp_legacy_protocol_only ... ok [INFO] [stdout] test parsers::rdp::tests::test_suspicious_rdp_tls_without_nla ... ok [INFO] [stdout] test parsers::smb::tests::test_e2e_smb1_detected_suspicious ... ok [INFO] [stdout] test parsers::smb::tests::test_e2e_smb2_signed_session_not_suspicious ... ok [INFO] [stdout] test parsers::smb::tests::test_e2e_smb2_unsigned_create_suspicious ... ok [INFO] [stdout] test parsers::smb::tests::test_is_smb_port_standard ... ok [INFO] [stdout] test parsers::smb::tests::test_is_smb_port_non_smb ... ok [INFO] [stdout] test parsers::smb::tests::test_not_suspicious_normal_session ... ok [INFO] [stdout] test parsers::smb::tests::test_not_suspicious_signed_write ... ok [INFO] [stdout] test parsers::smb::tests::test_not_suspicious_null_session_on_negotiate ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_garbage_returns_none ... ok [INFO] [stdout] test parsers::smb::tests::test_not_suspicious_unsigned_read ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_bare_smb2_header ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_is_response_flag ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_nbt_wrapped_smb2 ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_partial_header_returns_some ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_signed_session_not_flagged_unsigned ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_smb1_magic_detected ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_smb1_with_nbt_wrapper ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_status_field ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_too_short_returns_none ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_unsigned_session_flagged ... ok [INFO] [stdout] test parsers::smb::tests::test_parse_smb_tree_id_field ... ok [INFO] [stdout] test parsers::smb::tests::test_smb2_command_name_unknown ... ok [INFO] [stdout] test parsers::smb::tests::test_smb2_command_name_all_known ... ok [INFO] [stdout] test parsers::smb::tests::test_suspicious_smb1_always_flagged ... ok [INFO] [stdout] test parsers::smb::tests::test_suspicious_unsigned_create ... ok [INFO] [stdout] test parsers::smb::tests::test_suspicious_unsigned_ioctl ... ok [INFO] [stdout] test parsers::smb::tests::test_suspicious_null_session_non_negotiate ... ok [INFO] [stdout] test parsers::smb::tests::test_suspicious_unsigned_write ... ok [INFO] [stdout] test parsers::ssh::tests::test_e2e_openssh_banner_not_suspicious ... ok [INFO] [stdout] test parsers::ssh::tests::test_e2e_paramiko_banner_suspicious ... ok [INFO] [stdout] test parsers::ssh::tests::test_e2e_ssh1_banner_suspicious ... ok [INFO] [stdout] test parsers::ssh::tests::test_is_ssh_port_non_ssh ... ok [INFO] [stdout] test parsers::ssh::tests::test_is_ssh_port_standard ... ok [INFO] [stdout] test parsers::ssh::tests::test_not_suspicious_ssh_no_banner_no_packet ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_is_client_heuristic ... ok [INFO] [stdout] test parsers::ssh::tests::test_not_suspicious_ssh_blocklist_no_match ... ok [INFO] [stdout] test parsers::ssh::tests::test_not_suspicious_ssh_normal_banner ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_lf_only_terminator ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_libssh ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_no_comment ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_software_version ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_proto_version ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_binary_packet_implausibly_large_rejected ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_with_comment ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_binary_packet_newkeys ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_banner_ssh1_proto ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_binary_packet_userauth ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_binary_packet_too_short ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_detects_banner ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_binary_packet_zero_length_rejected ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_detects_binary_packet ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_returns_none_on_empty ... ok [INFO] [stdout] test parsers::ssh::tests::test_parse_ssh_returns_none_on_garbage ... ok [INFO] [stdout] test parsers::ssh::tests::test_ssh_message_type_name_known ... ok [INFO] [stdout] test parsers::ssh::tests::test_ssh_message_type_name_unknown ... ok [INFO] [stdout] test parsers::ssh::tests::test_suspicious_ssh_blocklist_case_insensitive ... ok [INFO] [stdout] test parsers::ssh::tests::test_suspicious_ssh_blocklist_match ... ok [INFO] [stdout] test parsers::ssh::tests::test_suspicious_ssh_blocklist_partial_substring ... ok [INFO] [stdout] test parsers::ssh::tests::test_suspicious_ssh_proto_v1 ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_closing ... ok [INFO] [stdout] test parsers::ssh::tests::test_suspicious_ssh_empty_software_version ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_established ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_null_scan ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_opening ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_reset ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_syn_ack ... ok [INFO] [stdout] test parsers::tcp::tests::test_classify_phase_xmas_scan ... ok [INFO] [stdout] test parsers::tcp::tests::test_is_null_scan ... ok [INFO] [stdout] test parsers::tcp::tests::test_is_syn_only_false_for_syn_ack ... ok [INFO] [stdout] test parsers::tcp::tests::test_is_fin_scan ... ok [INFO] [stdout] test parsers::tcp::tests::test_is_syn_only_false_for_plain_ack ... ok [INFO] [stdout] test parsers::tcp::tests::test_is_xmas_scan ... ok [INFO] [stdout] test parsers::tcp::tests::test_normal_ack_is_not_a_scan ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_basic_ports ... ok [INFO] [stdout] test parsers::tcp::tests::test_is_syn_only_true_for_pure_syn ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_fin_flag ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_header_with_mss_option ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_eol_stops_parsing ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_malformed_truncated ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_combined_syn_opts ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_mss ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_nop_padding ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_sack_permitted ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_window_scale ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_options_timestamps ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_payload_extracts_data ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_payload_empty_for_no_data ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_rst_flag ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_syn_ack_flags ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_syn_flag ... ok [INFO] [stdout] test parsers::tcp::tests::test_parse_tcp_too_short_returns_none ... ok [INFO] [stdout] test parsers::tls::tests::test_e2e_extract_and_check_blocklisted_sni ... ok [INFO] [stdout] test parsers::tcp::tests::test_service_name_for_port_unknown ... ok [INFO] [stdout] test parsers::tcp::tests::test_service_name_for_port_known ... ok [INFO] [stdout] test parsers::tls::tests::test_e2e_extract_and_check_normal_sni ... ok [INFO] [stdout] test parsers::tls::tests::test_is_tls_port_non_tls_ports ... ok [INFO] [stdout] test parsers::tls::tests::test_is_tls_port_standard_ports ... ok [INFO] [stdout] test parsers::tls::tests::test_not_suspicious_sni_empty_blocklist ... ok [INFO] [stdout] test parsers::tls::tests::test_not_suspicious_sni_normal_hostname ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_client_hello_extracts_long_sni ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_client_hello_extracts_subdomain_sni ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_application_data_record ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_client_hello_extracts_sni ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_client_hello_record_version_fields ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_client_hello_sni_not_first_extension ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_handshake_non_client_hello ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_client_hello_without_sni_extension ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_non_handshake_record ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_too_short_returns_none ... ok [INFO] [stdout] test parsers::tls::tests::test_parse_tls_version_fields ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_blocklist_exact_match ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_blocklist_no_false_positive ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_blocklist_subdomain_match ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_empty_string ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_exactly_max_length_is_not_suspicious ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_ipv6_address ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_oversized_name ... ok [INFO] [stdout] test parsers::tls::tests::test_suspicious_sni_ipv4_address ... ok [INFO] [stdout] test parsers::tls::tests::test_tls_content_type_name_known_types ... ok [INFO] [stdout] test parsers::tls::tests::test_tls_service_name_known_ports ... ok [INFO] [stdout] test parsers::tls::tests::test_tls_service_name_unknown_ports ... ok [INFO] [stdout] test parsers::tls::tests::test_tls_version_name_from_parsed_info ... ok [INFO] [stdout] test parsers::tls::tests::test_tls_version_name_known_versions ... ok [INFO] [stdout] test parsers::tls::tests::test_tls_version_name_unknown ... ok [INFO] [stdout] test parsers::udp::tests::test_extract_payload_empty_for_header_only ... ok [INFO] [stdout] test parsers::udp::tests::test_extract_payload_empty_for_short_data ... ok [INFO] [stdout] test parsers::udp::tests::test_extract_payload_returns_data_after_header ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dhcp_port_false ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dhcp_port_client_to_server ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dhcp_port_server_to_client ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dns_port_false_for_other ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dns_port_dst_53 ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dns_port_mdns_5353 ... ok [INFO] [stdout] test parsers::udp::tests::test_parse_udp_dns_port_53 ... ok [INFO] [stdout] test parsers::udp::tests::test_parse_udp_basic_ports ... ok [INFO] [stdout] test parsers::udp::tests::test_is_dns_port_src_53 ... ok [INFO] [stdout] test parsers::udp::tests::test_parse_udp_too_short_returns_none ... ok [INFO] [stdout] test parsers::udp::tests::test_parse_udp_with_payload ... ok [INFO] [stdout] test parsers::udp::tests::test_service_name_for_port_known ... ok [INFO] [stdout] test parsers::udp::tests::test_service_name_for_port_unknown ... ok [INFO] [stdout] test resource::tests::test_clk_tck_is_positive ... ok [INFO] [stdout] test resource::tests::test_disabled_monitor_runs_immediately ... ok [INFO] [stdout] test resource::tests::test_monitor_new_returns_shared_snapshot ... ok [INFO] [stdout] test resource::tests::test_cpu_ticks_increase_over_time ... ok [INFO] [stdout] test resource::tests::test_read_cpu_ticks_returns_some ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_alert_fires_only_once_per_flow ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_multiple_flows_tracked_independently ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_below_min_packets_no_alert ... ok [INFO] [stdout] test resource::tests::test_rss_is_reasonable ... ok [INFO] [stdout] test resource::tests::test_snapshot_cpu_pct_conversion ... ok [INFO] [stdout] test resource::tests::test_snapshot_default_is_zero ... ok [INFO] [stdout] test resource::tests::test_snapshot_rss_mb_120mb ... ok [INFO] [stdout] test resource::tests::test_snapshot_cpu_pct_fractional ... ok [INFO] [stdout] test resource::tests::test_read_rss_kb_returns_some ... ok [INFO] [stdout] test resource::tests::test_snapshot_rss_mb_zero ... ok [INFO] [stdout] test resource::tests::test_snapshot_rss_mb_conversion ... ok [INFO] [stdout] test transport::http::tests::test_new_builds_successfully ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_empty_returns_ok_without_request ... ok [INFO] [stdout] test transport::http::tests::test_new_stores_config ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_multiple_events_in_one_request ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_includes_bearer_token_when_api_key_set ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_payload_is_json_array ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_no_auth_header_when_api_key_empty ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_posts_to_correct_path ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_returns_error_on_server_error ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_returns_error_on_client_error ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_serializes_ocsf_fields ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_uses_json_content_type ... ok [INFO] [stdout] test detectors::c2_beacon::tests::test_no_alert_after_alerted_flag ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_exhausts_retries_and_returns_error ... ok [INFO] [stdout] test transport::http::tests::test_send_batch_retries_on_failure_then_succeeds ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 604 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.76s [INFO] [stdout] [INFO] [stderr] Running tests/ipv6_packet.rs (/opt/rustwide/target/release/deps/ipv6_packet-eff99f4a5a8cd3f8) [INFO] [stdout] [INFO] [stdout] running 13 tests [INFO] [stdout] test test_ethertype_is_ipv6 ... ok [INFO] [stdout] test test_ipv6_destination_address_extracted ... ok [INFO] [stdout] test test_ipv6_next_header_is_udp ... ok [INFO] [stdout] test test_ipv6_loopback_addresses ... ok [INFO] [stdout] test test_ipv6_payload_too_short_returns_none ... ok [INFO] [stdout] test test_ipv6_source_address_extracted ... ok [INFO] [stdout] test test_ipv6_transport_payload_length ... ok [INFO] [stdout] test test_ocsf_alert_event_ipv6 ... ok [INFO] [stdout] test test_ocsf_endpoint_ipv6_address ... ok [INFO] [stdout] test test_ocsf_traffic_event_ipv6_endpoints ... ok [INFO] [stdout] test test_ocsf_traffic_event_ipv6_json_serialization ... ok [INFO] [stdout] test test_port_scan_detector_ipv6_src ... ok [INFO] [stdout] test test_udp_parser_works_on_ipv6_transport_payload ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Doc-tests mxwatch [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" "18336f0095436744db673a629f45a15171777f616d4a85080a1c980bec71a11e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "18336f0095436744db673a629f45a15171777f616d4a85080a1c980bec71a11e", kill_on_drop: false }` [INFO] [stdout] 18336f0095436744db673a629f45a15171777f616d4a85080a1c980bec71a11e