[INFO] fetching crate szrsql-security 1.0.0-rc.1... [INFO] testing szrsql-security-1.0.0-rc.1 against 1.99.0-beta.8+cargoflags=--release for beta-release-1.100-2 [INFO] extracting crate szrsql-security 1.0.0-rc.1 into /workspace/builds/worker-2-tc1/source [INFO] started tweaking crates.io crate szrsql-security 1.0.0-rc.1 [INFO] finished tweaking crates.io crate szrsql-security 1.0.0-rc.1 [INFO] tweaked toml for crates.io crate szrsql-security 1.0.0-rc.1 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate szrsql-security 1.0.0-rc.1 on toolchain 1.99.0-beta.8 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate szrsql-security 1.0.0-rc.1 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.99.0-beta.8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded szrsql-types v1.0.0-rc.1 [INFO] [stderr] Downloaded rustls-pki-types v1.15.0 [INFO] [stderr] Downloaded lexical-core v1.0.6 [INFO] [stderr] Downloaded cc v1.2.67 [INFO] [stderr] Downloaded twox-hash v2.1.3 [INFO] [stderr] Downloaded crc32c v0.6.8 [INFO] [stderr] Downloaded flatbuffers v25.12.19 [INFO] [stderr] Downloaded arrow-data v59.1.0 [INFO] [stderr] Downloaded arrow-string v59.1.0 [INFO] [stderr] Downloaded arrow-csv v59.1.0 [INFO] [stderr] Downloaded arrow-arith v59.1.0 [INFO] [stderr] Downloaded arrow-row v59.1.0 [INFO] [stderr] Downloaded arrow-ord v59.1.0 [INFO] [stderr] Downloaded lexical-parse-integer v1.0.6 [INFO] [stderr] Downloaded zerocopy-derive v0.8.54 [INFO] [stderr] Downloaded arrow-schema v59.1.0 [INFO] [stderr] Downloaded lexical-write-integer v1.0.6 [INFO] [stderr] Downloaded arrow-buffer v59.1.0 [INFO] [stderr] Downloaded arrow v59.1.0 [INFO] [stderr] Downloaded arrow-json v59.1.0 [INFO] [stderr] Downloaded lexical-write-float v1.0.6 [INFO] [stderr] Downloaded arrow-select v59.1.0 [INFO] [stderr] Downloaded arrow-ipc v59.1.0 [INFO] [stderr] Downloaded lexical-util v1.0.7 [INFO] [stderr] Downloaded arrow-cast v59.1.0 [INFO] [stderr] Downloaded szrsql-tx v1.0.0-rc.1 [INFO] [stderr] Downloaded szrsql-storage v1.0.0-rc.1 [INFO] [stderr] Downloaded lexical-parse-float v1.0.6 [INFO] [stderr] Downloaded arrow-array v59.1.0 [INFO] [stderr] Downloaded zerocopy v0.8.54 [INFO] [stderr] Downloaded tokio v1.53.0 [INFO] [stderr] Downloaded parquet v59.1.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 93a8ec2208946fdfdbe72a90d2aa8eb064534b7917868d9acd4a399bc235f612 [INFO] running `Command { std: "docker" "start" "93a8ec2208946fdfdbe72a90d2aa8eb064534b7917868d9acd4a399bc235f612", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "93a8ec2208946fdfdbe72a90d2aa8eb064534b7917868d9acd4a399bc235f612", 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" "93a8ec2208946fdfdbe72a90d2aa8eb064534b7917868d9acd4a399bc235f612" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "93a8ec2208946fdfdbe72a90d2aa8eb064534b7917868d9acd4a399bc235f612", 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" "93a8ec2208946fdfdbe72a90d2aa8eb064534b7917868d9acd4a399bc235f612" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.186 [INFO] [stderr] Compiling quote v1.0.46 [INFO] [stderr] Compiling libm v0.2.16 [INFO] [stderr] Compiling zerocopy v0.8.54 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling iana-time-zone v0.1.65 [INFO] [stderr] Compiling arrow-schema v59.1.0 [INFO] [stderr] Compiling semver v1.0.28 [INFO] [stderr] Compiling lexical-util v1.0.7 [INFO] [stderr] Compiling rustls-pki-types v1.15.0 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling serde_json v1.0.150 [INFO] [stderr] Compiling bitflags v2.13.1 [INFO] [stderr] Compiling csv-core v0.1.13 [INFO] [stderr] Compiling inout v0.1.4 [INFO] [stderr] Compiling simdutf8 v0.1.5 [INFO] [stderr] Compiling syn v2.0.119 [INFO] [stderr] Compiling zstd-safe v7.2.4 [INFO] [stderr] Compiling twox-hash v2.1.3 [INFO] [stderr] Compiling seq-macro v0.3.6 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling webpki-roots v1.0.9 [INFO] [stderr] Compiling webpki-roots v0.26.11 [INFO] [stderr] Compiling flatbuffers v25.12.19 [INFO] [stderr] Compiling crc32c v0.6.8 [INFO] [stderr] Compiling lexical-parse-integer v1.0.6 [INFO] [stderr] Compiling lexical-write-integer v1.0.6 [INFO] [stderr] Compiling lexical-parse-float v1.0.6 [INFO] [stderr] Compiling lexical-write-float v1.0.6 [INFO] [stderr] Compiling lexical-core v1.0.6 [INFO] [stderr] Compiling jobserver v0.1.35 [INFO] [stderr] Compiling cc v1.2.67 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling errno v0.3.14 [INFO] [stderr] Compiling mio v1.2.2 [INFO] [stderr] Compiling socket2 v0.6.5 [INFO] [stderr] Compiling signal-hook-registry v1.4.8 [INFO] [stderr] Compiling rand_core v0.9.5 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling universal-hash v0.5.1 [INFO] [stderr] Compiling cipher v0.4.4 [INFO] [stderr] Compiling aead v0.5.2 [INFO] [stderr] Compiling polyval v0.6.2 [INFO] [stderr] Compiling ghash v0.5.1 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling hmac v0.12.1 [INFO] [stderr] Compiling aes v0.8.4 [INFO] [stderr] Compiling ctr v0.9.2 [INFO] [stderr] Compiling regex-automata v0.4.16 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling num-complex v0.4.6 [INFO] [stderr] Compiling atoi v2.0.0 [INFO] [stderr] Compiling aes-gcm v0.10.3 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling zstd-sys v2.0.16+zstd.1.5.7 [INFO] [stderr] Compiling num-bigint v0.4.8 [INFO] [stderr] Compiling csv v1.4.0 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerocopy-derive v0.8.54 [INFO] [stderr] Compiling zerofrom-derive v0.1.7 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling yoke-derive v0.8.2 [INFO] [stderr] Compiling zerofrom v0.1.8 [INFO] [stderr] Compiling zerovec-derive v0.11.3 [INFO] [stderr] Compiling yoke v0.8.3 [INFO] [stderr] Compiling displaydoc v0.2.6 [INFO] [stderr] Compiling regex v1.13.1 [INFO] [stderr] Compiling zerotrie v0.2.4 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling zerovec v0.11.6 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling tinystr v0.8.3 [INFO] [stderr] Compiling icu_locale_core v2.2.0 [INFO] [stderr] Compiling potential_utf v0.1.5 [INFO] [stderr] Compiling icu_collections v2.2.0 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling tokio-macros v2.7.1 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling tracing v0.1.44 [INFO] [stderr] Compiling tokio v1.53.0 [INFO] [stderr] Compiling icu_provider v2.2.0 [INFO] [stderr] Compiling chrono v0.4.45 [INFO] [stderr] Compiling icu_normalizer v2.2.0 [INFO] [stderr] Compiling icu_properties v2.2.0 [INFO] [stderr] Compiling idna_adapter v1.2.2 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling rustls v0.23.42 [INFO] [stderr] Compiling szrsql-types v1.0.0-rc.1 [INFO] [stderr] Compiling url v2.5.8 [INFO] [stderr] Compiling half v2.7.1 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling arrow-buffer v59.1.0 [INFO] [stderr] Compiling rand v0.9.5 [INFO] [stderr] Compiling rustls-webpki v0.103.13 [INFO] [stderr] Compiling arrow-data v59.1.0 [INFO] [stderr] Compiling arrow-array v59.1.0 [INFO] [stderr] Compiling zstd v0.13.3 [INFO] [stderr] Compiling arrow-select v59.1.0 [INFO] [stderr] Compiling arrow-arith v59.1.0 [INFO] [stderr] Compiling arrow-row v59.1.0 [INFO] [stderr] Compiling ureq v2.12.1 [INFO] [stderr] Compiling arrow-ord v59.1.0 [INFO] [stderr] Compiling arrow-ipc v59.1.0 [INFO] [stderr] Compiling arrow-string v59.1.0 [INFO] [stderr] Compiling parquet v59.1.0 [INFO] [stderr] Compiling arrow-cast v59.1.0 [INFO] [stderr] Compiling arrow-json v59.1.0 [INFO] [stderr] Compiling arrow-csv v59.1.0 [INFO] [stderr] Compiling arrow v59.1.0 [INFO] [stderr] Compiling szrsql-storage v1.0.0-rc.1 [INFO] [stderr] Compiling szrsql-tx v1.0.0-rc.1 [INFO] [stderr] Compiling szrsql-security v1.0.0-rc.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 5m 29s [INFO] running `Command { std: "docker" "inspect" "93a8ec2208946fdfdbe72a90d2aa8eb064534b7917868d9acd4a399bc235f612", 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" "93a8ec2208946fdfdbe72a90d2aa8eb064534b7917868d9acd4a399bc235f612" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }` [INFO] [stderr] Compiling szrsql-security v1.0.0-rc.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `release` profile [optimized] target(s) in 11.05s [INFO] running `Command { std: "docker" "inspect" "93a8ec2208946fdfdbe72a90d2aa8eb064534b7917868d9acd4a399bc235f612", 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" "93a8ec2208946fdfdbe72a90d2aa8eb064534b7917868d9acd4a399bc235f612" "/opt/rustwide/cargo-home/bin/cargo" "+1.99.0-beta.8" "test" "--frozen" "--release", kill_on_drop: false }` [INFO] [stderr] Finished `release` profile [optimized] target(s) in 0.18s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/release/deps/szrsql_security-93621f2d2cf52ec3) [INFO] [stdout] [INFO] [stdout] running 540 tests [INFO] [stdout] test audit::tests::test_7c3_command_as_str ... ok [INFO] [stdout] test audit::tests::test_7c3_command_is_ddl ... ok [INFO] [stdout] test audit::tests::test_7c3_event_builder_with_tenant ... ok [INFO] [stdout] test audit::tests::test_7c3_command_is_dml ... ok [INFO] [stdout] test audit::tests::test_7c3_audit_log_creation ... ok [INFO] [stdout] test audit::tests::test_7c3_command_display ... ok [INFO] [stdout] test audit::tests::test_7c3_audit_log_immutability ... ok [INFO] [stdout] test audit::tests::test_7c3_event_builder ... ok [INFO] [stdout] test audit::tests::test_7c3_audit_log_with_tenant ... ok [INFO] [stdout] test audit::tests::test_7c3_event_compute_hash_different_detail ... ok [INFO] [stdout] test audit::tests::test_7c3_events_with_hashes ... ok [INFO] [stdout] test audit::tests::test_7c3_filter_by_command ... ok [INFO] [stdout] test audit::tests::test_7c3_audit_log_get_not_found ... ok [INFO] [stdout] test audit::tests::test_7c3_event_builder_default_command ... ok [INFO] [stdout] test audit::tests::test_7c3_count_by_user ... ok [INFO] [stdout] test audit::tests::test_7c3_csv_escape ... ok [INFO] [stdout] test audit::tests::test_7c3_event_compute_hash_deterministic ... ok [INFO] [stdout] test audit::tests::test_7c3_filter_by_object ... ok [INFO] [stdout] test audit::tests::test_7c3_count_by_command ... ok [INFO] [stdout] test audit::tests::test_7c3_audit_log_enable_disable ... ok [INFO] [stdout] test audit::tests::test_7c3_query_by_object ... ok [INFO] [stdout] test audit::tests::test_7c3_full_workflow_with_filter ... ok [INFO] [stdout] test audit::tests::test_7c3_query_combined ... ok [INFO] [stdout] test audit::tests::test_7c3_query_by_user ... ok [INFO] [stdout] test audit::tests::test_7c3_hash_chain_sequential ... ok [INFO] [stdout] test audit::tests::test_7c3_query_by_time_range ... ok [INFO] [stdout] test audit::tests::test_7c3_record_disabled ... ok [INFO] [stdout] test audit::tests::test_7c3_query_with_limit ... ok [INFO] [stdout] test audit::tests::test_7c3_record_event_id_increment ... ok [INFO] [stdout] test audit::tests::test_7c3_record_basic ... ok [INFO] [stdout] test audit::tests::test_7c3_hash_chain_independent ... ok [INFO] [stdout] test audit::tests::test_7c3_record_filtered_out ... ok [INFO] [stdout] test audit::tests::test_7c3_report_empty ... ok [INFO] [stdout] test audit::tests::test_7c3_report_export_by_format ... ok [INFO] [stdout] test audit::tests::test_7c3_report_export_csv ... ok [INFO] [stdout] test audit::tests::test_7c3_report_export_csv_with_comma ... ok [INFO] [stdout] test audit::tests::test_7c3_report_export_json ... ok [INFO] [stdout] test audit::tests::test_7c3_hash_chain_verify_empty ... ok [INFO] [stdout] test audit::tests::test_7c3_hash_chain_verify_ok ... ok [INFO] [stdout] test audit::tests::test_7c3_hash_chain_verify_tampered ... ok [INFO] [stdout] test audit::tests::test_7c3_time_range ... ok [INFO] [stdout] test audit::tests::test_7c3_time_range_empty ... ok [INFO] [stdout] test audit::tests::test_7c3_report_from_log ... ok [INFO] [stdout] test audit_hash::tests::test_audit_entry_new ... ok [INFO] [stdout] test audit_hash::tests::test_audit_entry_display ... ok [INFO] [stdout] test audit_hash::tests::test_audit_entry_to_bytes_distinguishes_different ... ok [INFO] [stdout] test audit::tests::test_7c3_json_escape ... ok [INFO] [stdout] test audit_hash::tests::test_audit_entry_to_bytes_stable ... ok [INFO] [stdout] test audit_hash::tests::test_chain_append_increments_length ... ok [INFO] [stdout] test audit_hash::tests::test_chain_append_multiple ... ok [INFO] [stdout] test audit_hash::tests::test_chain_clear ... ok [INFO] [stdout] test audit_hash::tests::test_chain_entries_returns_all ... ok [INFO] [stdout] test audit_hash::tests::test_chain_entry_prev_hash_hex_first_is_zero ... ok [INFO] [stdout] test audit_hash::tests::test_chain_new_empty ... ok [INFO] [stdout] test audit_hash::tests::test_chain_root_hash_changes_on_append ... ok [INFO] [stdout] test audit_hash::tests::test_chain_verify_detects_tampered_detail ... ok [INFO] [stdout] test audit_hash::tests::test_chain_entry_hash_hex ... ok [INFO] [stdout] test audit_hash::tests::test_chain_verify_detects_tampered_hash ... ok [INFO] [stdout] test audit_hash::tests::test_chain_verify_multiple_entries ... ok [INFO] [stdout] test audit_hash::tests::test_chain_verify_empty ... ok [INFO] [stdout] test audit_hash::tests::test_chain_verify_single_entry ... ok [INFO] [stdout] test audit::tests::test_7c3_query_all ... ok [INFO] [stdout] test audit_hash::tests::test_generate_test_entries_count ... ok [INFO] [stdout] test audit_hash::tests::test_hash_to_u64_takes_first_8_bytes ... ok [INFO] [stdout] test audit::tests::test_7c3_query_by_command ... ok [INFO] [stdout] test audit::tests::test_7c3_filter_by_user ... ok [INFO] [stdout] test audit::tests::test_7c3_hash_chain_append ... ok [INFO] [stdout] test audit::tests::test_7c3_hex_encode ... ok [INFO] [stdout] test audit_hash::tests::test_chain_with_empty_strings ... ok [INFO] [stdout] test audit_hash::tests::test_is_prime_composites ... ok [INFO] [stdout] test audit_hash::tests::test_large_chain_verify ... ok [INFO] [stdout] test audit_hash::tests::test_mod_pow_modulus_one ... ok [INFO] [stdout] test audit_hash::tests::test_mod_pow_zero_exponent ... ok [INFO] [stdout] test audit_hash::tests::test_mod_inverse_rsa_e_phi ... ok [INFO] [stdout] test audit::tests::test_7c3_filter_matches_all ... ok [INFO] [stdout] test audit_hash::tests::test_report_to_bytes_signed ... ok [INFO] [stdout] test audit_hash::tests::test_hex_encode_empty ... ok [INFO] [stdout] test audit_hash::tests::test_mod_pow_simple ... ok [INFO] [stdout] test audit_hash::tests::test_integration_full_workflow ... ok [INFO] [stdout] test audit_hash::tests::test_report_from_chain_empty ... ok [INFO] [stdout] test audit_hash::tests::test_mod_pow_identity ... ok [INFO] [stdout] test audit_hash::tests::test_current_timestamp_nonzero ... ok [INFO] [stdout] test audit_hash::tests::test_empty_chain_root_hash_is_initial ... ok [INFO] [stdout] test audit_hash::tests::test_hex_encode_known ... ok [INFO] [stdout] test audit_hash::tests::test_is_prime_small_primes ... ok [INFO] [stdout] test audit_hash::tests::test_report_verify_signature_wrong_key_returns_false ... ok [INFO] [stdout] test audit_hash::tests::test_report_verify_signature_unsigned_returns_false ... ok [INFO] [stdout] test audit_hash::tests::test_rsa_signature_is_empty ... ok [INFO] [stdout] test audit_hash::tests::test_report_from_chain_with_entries ... ok [INFO] [stdout] test audit_hash::tests::test_mod_inverse_coprime ... ok [INFO] [stdout] test audit_hash::tests::test_mod_inverse_not_coprime ... ok [INFO] [stdout] test audit_hash::tests::test_rsa_signer_sign_and_verify ... ok [INFO] [stdout] test audit_hash::tests::test_report_sign ... ok [INFO] [stdout] test audit_hash::tests::test_rsa_key_pair_from_primes ... ok [INFO] [stdout] test audit_hash::tests::test_rsa_sign_same_hash_same_signature ... ok [INFO] [stdout] test audit_hash::tests::test_rsa_key_pair_generate_demo ... ok [INFO] [stdout] test audit_hash::tests::test_report_to_bytes_unsigned ... ok [INFO] [stdout] test audit_hash::tests::test_report_verify_signature_signed ... ok [INFO] [stdout] test audit_hash::tests::test_rsa_sign_different_hashes_different_signatures ... ok [INFO] [stdout] test audit_hash::tests::test_rsa_key_pair_non_prime_p_panics - should panic ... ok [INFO] [stdout] test audit_hash::tests::test_rsa_key_pair_same_primes_panics - should panic ... ok [INFO] [stdout] test audit_hash::tests::test_rsa_signer_verify_tampered_signature ... ok [INFO] [stdout] test audit_hash::tests::test_rsa_signer_verify_with_public_key ... ok [INFO] [stdout] test audit_hash::tests::test_rsa_signer_verify_tampered_hash ... ok [INFO] [stdout] test audit_hash::tests::test_system_new ... ok [INFO] [stdout] test audit_hash::tests::test_system_record ... ok [INFO] [stdout] test audit_hash::tests::test_sha256_known_value ... ok [INFO] [stdout] test audit_hash::tests::test_system_clear ... ok [INFO] [stdout] test audit_hash::tests::test_single_entry_chain_verify ... ok [INFO] [stdout] test audit_hash::tests::test_tamper_last_entry_detected ... ok [INFO] [stdout] test audit_hash::tests::test_system_verify_chain_after_records ... ok [INFO] [stdout] test column_enc::tests::test_7c4_decrypt_ciphertext_too_short ... ok [INFO] [stdout] test audit_hash::tests::test_system_generate_report_signed ... ok [INFO] [stdout] test audit_hash::tests::test_system_record_increments_seq ... ok [INFO] [stdout] test column_enc::tests::test_7c4_encrypt_column_not_encrypted ... ok [INFO] [stdout] test column_enc::tests::test_7c4_decrypt_column_not_encrypted ... ok [INFO] [stdout] test audit_hash::tests::test_system_clear_resets_seq ... ok [INFO] [stdout] test audit_hash::tests::test_system_with_custom_key_pair ... ok [INFO] [stdout] test column_enc::tests::test_7c4_decrypt_tampered_nonce ... ok [INFO] [stdout] test column_enc::tests::test_7c4_engine_register_key ... ok [INFO] [stdout] test column_enc::tests::test_7c4_engine_register_column_without_key ... ok [INFO] [stdout] test column_enc::tests::test_7c4_engine_unregister_key ... ok [INFO] [stdout] test column_enc::tests::test_7c4_encrypt_decrypt_roundtrip ... ok [INFO] [stdout] test audit_hash::tests::test_tamper_first_entry_detected ... ok [INFO] [stdout] test column_enc::tests::test_7c4_decrypt_tampered_ciphertext ... ok [INFO] [stdout] test column_enc::tests::test_7c4_full_workflow_multiple_sensitive_columns ... ok [INFO] [stdout] test column_enc::tests::test_7c4_key_from_bytes_invalid_length ... ok [INFO] [stdout] test column_enc::tests::test_7c4_key_debug_no_leak ... ok [INFO] [stdout] test column_enc::tests::test_7c4_multiple_columns_different_keys ... ok [INFO] [stdout] test audit_hash::tests::test_rsa_key_pair_non_prime_q_panics - should panic ... ok [INFO] [stdout] test column_enc::tests::test_7c4_encrypt_ciphertext_differs_from_plaintext ... ok [INFO] [stdout] test column_enc::tests::test_7c4_no_key_user_sees_encrypted_value ... ok [INFO] [stdout] test column_enc::tests::test_7c4_multiple_tables_same_column_name ... ok [INFO] [stdout] test column_enc::tests::test_7c4_key_generate ... ok [INFO] [stdout] test column_enc::tests::test_7c4_registry_columns_for_table ... ok [INFO] [stdout] test column_enc::tests::test_7c4_registry_duplicate ... ok [INFO] [stdout] test column_enc::tests::test_7c4_decrypt_wrong_key ... ok [INFO] [stdout] test column_enc::tests::test_7c4_full_workflow_ssn_encrypted ... ok [INFO] [stdout] test column_enc::tests::test_7c4_key_fingerprint ... ok [INFO] [stdout] test column_enc::tests::test_7c4_registry_unregister ... ok [INFO] [stdout] test column_enc::tests::test_7c4_registry_get ... ok [INFO] [stdout] test column_enc::tests::test_7c4_encrypt_different_nonce_each_time ... ok [INFO] [stdout] test column_enc::tests::test_7c4_stats_reset ... ok [INFO] [stdout] test compliance::tests::test_7c7_apply_mode_custom ... ok [INFO] [stdout] test column_enc::tests::test_7c4_stats_tracking ... ok [INFO] [stdout] test compliance::tests::test_7c7_apply_mode_hipaa ... ok [INFO] [stdout] test compliance::tests::test_7c7_apply_mode_pci_dss ... ok [INFO] [stdout] test compliance::tests::test_7c7_apply_mode_gdpr ... ok [INFO] [stdout] test compliance::tests::test_7c7_config_default ... ok [INFO] [stdout] test column_enc::tests::test_7c4_encrypt_empty_plaintext ... ok [INFO] [stdout] test compliance::tests::test_7c7_config_disable_not_enabled ... ok [INFO] [stdout] test compliance::tests::test_7c7_config_enable_duplicate ... ok [INFO] [stdout] test compliance::tests::test_7c7_config_disable_rule ... ok [INFO] [stdout] test column_enc::tests::test_7c4_key_from_passphrase ... ok [INFO] [stdout] test column_enc::tests::test_7c4_engine_creation ... ok [INFO] [stdout] test column_enc::tests::test_7c4_engine_register_column_with_key ... ok [INFO] [stdout] test column_enc::tests::test_7c4_config_creation ... ok [INFO] [stdout] test column_enc::tests::test_7c4_registry_register ... ok [INFO] [stdout] test column_enc::tests::test_7c4_key_from_bytes ... ok [INFO] [stdout] test column_enc::tests::test_7c4_encrypt_large_value ... ok [INFO] [stdout] test compliance::tests::test_7c7_config_enable_rule ... ok [INFO] [stdout] test compliance::tests::test_7c7_config_new ... ok [INFO] [stdout] test compliance::tests::test_7c7_full_workflow_all_modes_satisfied ... ok [INFO] [stdout] test compliance::tests::test_7c7_config_enabled_rules ... ok [INFO] [stdout] test column_enc::tests::test_7c4_registry_len_is_empty ... ok [INFO] [stdout] test compliance::tests::test_7c7_full_workflow_hipaa_mode ... ok [INFO] [stdout] test compliance::tests::test_7c7_full_workflow_custom_mode ... ok [INFO] [stdout] test compliance::tests::test_7c7_full_workflow_gdpr_mode ... ok [INFO] [stdout] test compliance::tests::test_7c7_full_workflow_pci_dss_mode ... ok [INFO] [stdout] test compliance::tests::test_7c7_apply_mode_preserves_existing_rules ... ok [INFO] [stdout] test compliance::tests::test_7c7_full_workflow_mode_switch ... ok [INFO] [stdout] test compliance::tests::test_7c7_apply_mode_standard ... ok [INFO] [stdout] test compliance::tests::test_7c7_full_workflow_validation_failure_then_fix ... ok [INFO] [stdout] test compliance::tests::test_7c7_config_clear ... ok [INFO] [stdout] test compliance::tests::test_7c7_mode_from_name ... ok [INFO] [stdout] test compliance::tests::test_7c7_mode_name ... ok [INFO] [stdout] test compliance::tests::test_7c7_mode_standard_required_rules ... ok [INFO] [stdout] test compliance::tests::test_7c7_rule_from_name ... ok [INFO] [stdout] test compliance::tests::test_7c7_missing_rules_empty_when_satisfied ... ok [INFO] [stdout] test compliance::tests::test_7c7_rule_all_count ... ok [INFO] [stdout] test compliance::tests::test_7c7_mode_gdpr_required_rules ... ok [INFO] [stdout] test compliance::tests::test_7c7_full_workflow_standard_mode ... ok [INFO] [stdout] test compliance::tests::test_7c7_mode_from_name_unknown ... ok [INFO] [stdout] test compliance::tests::test_7c7_rule_from_name_unknown ... ok [INFO] [stdout] test compliance::tests::test_7c7_satisfies_false ... ok [INFO] [stdout] test compliance::tests::test_7c7_mode_pci_dss_required_rules ... ok [INFO] [stdout] test compliance::tests::test_7c7_rule_display ... ok [INFO] [stdout] test compliance::tests::test_7c7_mode_display ... ok [INFO] [stdout] test compliance::tests::test_7c7_rule_roundtrip ... ok [INFO] [stdout] test compliance::tests::test_7c7_satisfies_true ... ok [INFO] [stdout] test compliance::tests::test_7c7_validate_custom_satisfied ... ok [INFO] [stdout] test compliance::tests::test_7c7_validate_gdpr_satisfied ... ok [INFO] [stdout] test compliance::tests::test_7c7_mode_hipaa_required_rules ... ok [INFO] [stdout] test compliance::tests::test_7c7_mode_custom_required_rules ... ok [INFO] [stdout] test compliance::tests::test_7c7_validate_gdpr_missing_rules ... ok [INFO] [stdout] test compliance::tests::test_7c7_validate_custom_missing ... ok [INFO] [stdout] test compliance::tests::test_7c7_rule_as_str ... ok [INFO] [stdout] test compliance::tests::test_7c7_validate_standard_satisfied ... ok [INFO] [stdout] test compliance::tests::test_7c7_validate_hipaa_satisfied ... ok [INFO] [stdout] test compliance::tests::test_7c7_validate_hipaa_missing_rules ... ok [INFO] [stdout] test compliance::tests::test_7c7_validate_with_extra_rules ... ok [INFO] [stdout] test compliance::tests::test_7c7_validate_pci_dss_missing_rules ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_injection_blocked_or_1_eq_1 ... ok [INFO] [stdout] test firewall::tests::test_7c6_block_command ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_blocked_command_drop ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_blocked_command_not_blocked ... ok [INFO] [stdout] test compliance::tests::test_7c7_validate_pci_dss_satisfied ... ok [INFO] [stdout] test compliance::tests::test_7c7_validate_standard_missing_rule ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_blocked_command_truncate ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_empty_sql ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_injection_priority_over_blocked_command ... ok [INFO] [stdout] test firewall::tests::test_7c6_add_allowed_pattern_valid ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_clean_select_allowed ... ok [INFO] [stdout] test firewall::tests::test_7c6_add_allowed_pattern_invalid ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_whitelist_match ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_whitespace_only_sql ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_injection_blocked_stacked_query ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_display ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_alter ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_delete ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_empty ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_exec ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_grant ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_insert ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_revoke ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_select ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_drop ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_create ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_with_leading_whitespace ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_update ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_with_leading_comment ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_injection_blocked_union_select ... ok [INFO] [stdout] test firewall::tests::test_7c6_firewall_creation ... ok [INFO] [stdout] test firewall::tests::test_7c6_clear_blocked_commands ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_whitelist_empty_allows_all ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_truncate ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_as_str ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_injection_blocked_comment ... ok [INFO] [stdout] test firewall::tests::test_7c6_command_from_sql_unknown ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_whitelist_multiple_patterns ... ok [INFO] [stdout] test firewall::tests::test_7c6_firewall_default ... ok [INFO] [stdout] test firewall::tests::test_7c6_firewall_enable_disable ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_whitelist_no_match ... ok [INFO] [stdout] test firewall::tests::test_7c6_firewall_disabled_allows_all ... ok [INFO] [stdout] test firewall::tests::test_7c6_clear_allowed_patterns ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_whitelist_injection_priority ... ok [INFO] [stdout] test firewall::tests::test_7c6_check_sql_too_long ... ok [INFO] [stdout] test firewall::tests::test_7c6_full_workflow_drop_blocked ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_clean_select_with_subquery ... ok [INFO] [stdout] test firewall::tests::test_7c6_full_workflow_multi_layer_protection ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_always_true_or_true ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_always_true_or_quote ... ok [INFO] [stdout] test firewall::tests::test_7c6_full_workflow_disabled_allows_malicious ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_clean_sql_not_detected ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_block_comment ... ok [INFO] [stdout] test firewall::tests::test_7c6_full_workflow_injection_blocked ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_info_leak_load_file ... ok [INFO] [stdout] test firewall::tests::test_7c6_full_workflow_stats_accuracy ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_always_true_or_1_eq_1 ... ok [INFO] [stdout] test firewall::tests::test_7c6_full_workflow_whitelist_blocked_command_injection ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_clean_insert_not_detected ... ok [INFO] [stdout] test firewall::tests::test_7c6_full_workflow_massive_scale ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_info_leak_information_schema ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_concat_hex ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_union_all_select ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_line_comment_double_dash ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_stacked_query_drop ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_time_based_benchmark ... ok [INFO] [stdout] test firewall::tests::test_7c6_stats_reset ... ok [INFO] [stdout] test firewall::tests::test_7c6_matches_whitelist_non_empty_match ... ok [INFO] [stdout] test firewall::tests::test_7c6_matches_whitelist_empty ... ok [INFO] [stdout] test firewall::tests::test_7c6_stats_tracking_allowed ... ok [INFO] [stdout] test firewall::tests::test_7c6_stats_default ... ok [INFO] [stdout] test firewall::tests::test_7c6_stats_new ... ok [INFO] [stdout] test masking::tests::test_7c5_context_admin ... ok [INFO] [stdout] test firewall::tests::test_7c6_set_max_sql_len ... ok [INFO] [stdout] test masking::tests::test_7c5_context_new ... ok [INFO] [stdout] test masking::tests::test_7c5_authorized_user_sees_original ... ok [INFO] [stdout] test firewall::tests::test_7c6_matches_whitelist_non_empty_no_match ... ok [INFO] [stdout] test firewall::tests::test_7c6_unblock_command ... ok [INFO] [stdout] test firewall::tests::test_7c6_stats_tracking_injection ... ok [INFO] [stdout] test masking::tests::test_7c5_credit_card_standard ... ok [INFO] [stdout] test firewall::tests::test_7c6_stats_tracking_whitelist_block ... ok [INFO] [stdout] test masking::tests::test_7c5_custom_function ... ok [INFO] [stdout] test masking::tests::test_7c5_credit_card_digits_only ... ok [INFO] [stdout] test masking::tests::test_7c5_credit_card_too_short ... ok [INFO] [stdout] test masking::tests::test_7c5_email_empty_local ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_hex_long ... ok [INFO] [stdout] test masking::tests::test_7c5_engine_register_policy ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_clean_update_not_detected ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_into_outfile ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_stacked_query_delete ... ok [INFO] [stdout] test masking::tests::test_7c5_email_standard ... ok [INFO] [stdout] test masking::tests::test_7c5_engine_creation ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_time_based_sleep ... ok [INFO] [stdout] test masking::tests::test_7c5_engine_unregister_policy ... ok [INFO] [stdout] test masking::tests::test_7c5_email_no_at ... ok [INFO] [stdout] test masking::tests::test_7c5_email_single_char_local ... ok [INFO] [stdout] test masking::tests::test_7c5_full_workflow_masking_policy ... ok [INFO] [stdout] test masking::tests::test_7c5_mask_value_authorized_role ... ok [INFO] [stdout] test masking::tests::test_7c5_mask_row_admin ... ok [INFO] [stdout] test masking::tests::test_7c5_mask_row_unauthorized ... ok [INFO] [stdout] test firewall::tests::test_7c6_stats_tracking_blocked_command ... ok [INFO] [stdout] test masking::tests::test_7c5_mask_value_authorized_admin ... ok [INFO] [stdout] test firewall::tests::test_7c6_injection_union_select ... ok [INFO] [stdout] test masking::tests::test_7c5_mask_value_column_not_masked ... ok [INFO] [stdout] test masking::tests::test_7c5_fixed_custom ... ok [INFO] [stdout] test masking::tests::test_7c5_hash_different_inputs ... ok [INFO] [stdout] test masking::tests::test_7c5_fixed_default ... ok [INFO] [stdout] test masking::tests::test_7c5_policy_creation ... ok [INFO] [stdout] test masking::tests::test_7c5_phone_standard ... ok [INFO] [stdout] test masking::tests::test_7c5_phone_too_short ... ok [INFO] [stdout] test masking::tests::test_7c5_policy_default_admin_authorized ... ok [INFO] [stdout] test masking::tests::test_7c5_full_workflow_multiple_columns ... ok [INFO] [stdout] test masking::tests::test_7c5_hash_deterministic ... ok [INFO] [stdout] test masking::tests::test_7c5_id_card_standard ... ok [INFO] [stdout] test masking::tests::test_7c5_id_card_too_short ... ok [INFO] [stdout] test masking::tests::test_7c5_phone_boundary_8_chars ... ok [INFO] [stdout] test masking::tests::test_7c5_policy_with_roles ... ok [INFO] [stdout] test masking::tests::test_7c5_registry_duplicate ... ok [INFO] [stdout] test masking::tests::test_7c5_registry_masked_columns_for_table ... ok [INFO] [stdout] test masking::tests::test_7c5_registry_get ... ok [INFO] [stdout] test masking::tests::test_7c5_registry_policies ... ok [INFO] [stdout] test masking::tests::test_7c5_registry_is_masked ... ok [INFO] [stdout] test masking::tests::test_7c5_registry_register ... ok [INFO] [stdout] test masking::tests::test_7c5_registry_len_is_empty ... ok [INFO] [stdout] test masking::tests::test_7c5_registry_unregister_not_found ... ok [INFO] [stdout] test masking::tests::test_7c5_rule_debug_formats ... ok [INFO] [stdout] test masking::tests::test_7c5_stats_reset ... ok [INFO] [stdout] test masking::tests::test_7c5_registry_unregister ... ok [INFO] [stdout] test masking::tests::test_7c5_template_no_wildcard ... ok [INFO] [stdout] test masking::tests::test_7c5_template_short_value ... ok [INFO] [stdout] test masking::tests::test_7c5_unauthorized_user_sees_masked ... ok [INFO] [stdout] test masking::tests::test_7c5_stats_tracking ... ok [INFO] [stdout] test masking::tests::test_7c5_template_basic ... ok [INFO] [stdout] test masking::tests::test_7c5_mask_value_unauthorized_user ... ok [INFO] [stdout] test masking::tests::test_7c5_masking_policy_dynamically_added ... ok [INFO] [stdout] test password_profile::tests::test_bytes_to_hex ... ok [INFO] [stdout] test masking::tests::test_7c5_template_long_value ... ok [INFO] [stdout] test audit::tests::test_7c3_full_workflow_30000_events ... ok [INFO] [stdout] test password_profile::tests::test_admin_reset_invalid_password ... ok [INFO] [stdout] test password_profile::tests::test_change_password_new_invalid ... ok [INFO] [stdout] test password_profile::tests::test_constant_time_eq_equal ... ok [INFO] [stdout] test password_profile::tests::test_constant_time_eq_not_equal ... ok [INFO] [stdout] test password_profile::tests::test_e2e_create_password_profile_and_validate ... ok [INFO] [stdout] test password_profile::tests::test_change_password_same_as_old ... ok [INFO] [stdout] test firewall::tests::test_7c6_full_workflow_select_with_where_allowed ... ok [INFO] [stdout] test password_profile::tests::test_admin_reset_same_as_current ... ok [INFO] [stdout] test masking::tests::test_7c5_context_unauthorized ... ok [INFO] [stdout] test password_profile::tests::test_e2e_stress_1000_password_changes ... ignored, 压力测试:1000 次密码修改耗时较长,使用 --ignored 手动触发 [INFO] [stdout] test password_profile::tests::test_expires_in_secs_already_expired ... ok [INFO] [stdout] test password_profile::tests::test_e2e_lockout_after_5_failures ... ok [INFO] [stdout] test password_profile::tests::test_expires_in_secs_remaining ... ok [INFO] [stdout] test password_profile::tests::test_admin_reset_when_locked ... ok [INFO] [stdout] test password_profile::tests::test_admin_reset_unlocks_account ... ok [INFO] [stdout] test password_profile::tests::test_admin_reset_success ... ok [INFO] [stdout] test password_profile::tests::test_hash_display ... ok [INFO] [stdout] test password_profile::tests::test_hash_from_str_invalid_format ... ok [INFO] [stdout] test password_profile::tests::test_hash_to_string_format ... ok [INFO] [stdout] test password_profile::tests::test_change_password_wrong_old ... ok [INFO] [stdout] test password_profile::tests::test_change_password_resets_failures ... ok [INFO] [stdout] test password_profile::tests::test_hash_to_string_and_from_str_roundtrip ... ok [INFO] [stdout] test password_profile::tests::test_hash_with_salt_deterministic ... ok [INFO] [stdout] test password_profile::tests::test_hash_with_salt_different_iterations ... ok [INFO] [stdout] test password_profile::tests::test_hex_to_bytes_invalid ... ok [INFO] [stdout] test password_profile::tests::test_hex_to_bytes_valid ... ok [INFO] [stdout] test password_profile::tests::test_is_expired_exact_boundary ... ok [INFO] [stdout] test password_profile::tests::test_is_expired_expired ... ok [INFO] [stdout] test password_profile::tests::test_hash_and_verify_success ... ok [INFO] [stdout] test password_profile::tests::test_change_password_when_locked ... ok [INFO] [stdout] test password_profile::tests::test_is_expired_not_yet ... ok [INFO] [stdout] test password_profile::tests::test_is_expired_never ... ok [INFO] [stdout] test password_profile::tests::test_change_password_history_no_reuse_when_zero_count ... ok [INFO] [stdout] test password_profile::tests::test_lockout_verify_when_locked ... ok [INFO] [stdout] test password_profile::tests::test_hash_and_verify_failure ... ok [INFO] [stdout] test password_profile::tests::test_max_consecutive_repeating ... ok [INFO] [stdout] test password_profile::tests::test_password_error_to_string ... ok [INFO] [stdout] test password_profile::tests::test_password_profile_builder ... ok [INFO] [stdout] test password_profile::tests::test_password_profile_default ... ok [INFO] [stdout] test password_profile::tests::test_hash_verify_unicode_password ... ok [INFO] [stdout] test password_profile::tests::test_password_profile_new_custom_name ... ok [INFO] [stdout] test password_profile::tests::test_registry_get_mut ... ok [INFO] [stdout] test password_profile::tests::test_registry_is_empty ... ok [INFO] [stdout] test password_profile::tests::test_registry_list_sorted ... ok [INFO] [stdout] test password_profile::tests::test_registry_new_has_default ... ok [INFO] [stdout] test password_profile::tests::test_registry_register_duplicate ... ok [INFO] [stdout] test password_profile::tests::test_registry_register_empty_name ... ok [INFO] [stdout] test password_profile::tests::test_registry_register_success ... ok [INFO] [stdout] test password_profile::tests::test_registry_remove_default_fails ... ok [INFO] [stdout] test password_profile::tests::test_registry_remove_not_found ... ok [INFO] [stdout] test password_profile::tests::test_registry_remove_success ... ok [INFO] [stdout] test password_profile::tests::test_registry_upsert ... ok [INFO] [stdout] test password_profile::tests::test_user_state_is_expired_false ... ok [INFO] [stdout] test password_profile::tests::test_expires_in_secs_never ... ok [INFO] [stdout] test password_profile::tests::test_remaining_lock_secs ... ok [INFO] [stdout] test password_profile::tests::test_user_state_new_invalid_password ... ok [INFO] [stdout] test password_profile::tests::test_hash_unique_salt ... ok [INFO] [stdout] test password_profile::tests::test_lockout_auto_unlock_after_duration ... ok [INFO] [stdout] test password_profile::tests::test_user_state_is_expired_never ... ok [INFO] [stdout] test password_profile::tests::test_lockout_after_max_failures ... ok [INFO] [stdout] test password_profile::tests::test_user_state_new_success ... ok [INFO] [stdout] test password_profile::tests::test_validate_missing_digit ... ok [INFO] [stdout] test password_profile::tests::test_validate_max_repeating ... ok [INFO] [stdout] test password_profile::tests::test_validate_missing_lowercase ... ok [INFO] [stdout] test password_profile::tests::test_validate_missing_special ... ok [INFO] [stdout] test password_profile::tests::test_validate_multiple_requirements ... ok [INFO] [stdout] test password_profile::tests::test_validate_no_max_repeating ... ok [INFO] [stdout] test password_profile::tests::test_validate_missing_uppercase ... ok [INFO] [stdout] test password_profile::tests::test_validate_too_long ... ok [INFO] [stdout] test password_profile::tests::test_validate_too_short ... ok [INFO] [stdout] test password_profile::tests::test_validate_valid_password ... ok [INFO] [stdout] test password_profile::tests::test_validate_unicode_treated_as_special ... ok [INFO] [stdout] test password_profile::tests::test_user_state_verify_correct ... ok [INFO] [stdout] test password_profile::tests::test_user_state_is_expired_true ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_blind_if ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_boolean_and_a_a ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_blind_substring ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_all_multiple_types ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_comment_hash ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_comment_double_dash ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_encoding_char ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_encoding_hex ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_error_extractvalue ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_error_updatexml ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_literal_double_quote ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_os_into_outfile ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_literal_unmatched_quote ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_os_xp_cmdshell ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_stacked_drop ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_stacked_insert ... ok [INFO] [stdout] test sqli_detector::tests::test_case_insensitive_detection ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_boolean_or_1_1 ... ok [INFO] [stdout] test password_profile::tests::test_manual_unlock ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_time_waitfor ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_time_benchmark ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_time_sleep ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_union_select ... ok [INFO] [stdout] test sqli_detector::tests::test_detection_rate_blind_100 ... ok [INFO] [stdout] test sqli_detector::tests::test_detection_rate_comment_100 ... ok [INFO] [stdout] test sqli_detector::tests::test_detection_rate_boolean_100 ... ok [INFO] [stdout] test sqli_detector::tests::test_detect_union_all_select ... ok [INFO] [stdout] test sqli_detector::tests::test_detection_rate_literal_100 ... ok [INFO] [stdout] test sqli_detector::tests::test_detection_rate_os_100 ... ok [INFO] [stdout] test sqli_detector::tests::test_detection_rate_stacked_100 ... ok [INFO] [stdout] test sqli_detector::tests::test_detection_rate_union_100 ... ok [INFO] [stdout] test sqli_detector::tests::test_detection_rate_time_100 ... ok [INFO] [stdout] test sqli_detector::tests::test_empty_sql ... ok [INFO] [stdout] test sqli_detector::tests::test_enable_type ... ok [INFO] [stdout] test sqli_detector::tests::test_false_positive_rate_normal_100 ... ok [INFO] [stdout] test sqli_detector::tests::test_detection_rate_error_100 ... ok [INFO] [stdout] test sqli_detector::tests::test_disable_type ... ok [INFO] [stdout] test sqli_detector::tests::test_into_dumpfile_detection ... ok [INFO] [stdout] test sqli_detector::tests::test_detection_rate_encoding_100 ... ok [INFO] [stdout] test password_profile::tests::test_change_password_history_expired_after_interval ... ok [INFO] [stdout] test password_profile::tests::test_hash_verify_empty_password ... ok [INFO] [stdout] test sqli_detector::tests::test_load_file_detection ... ok [INFO] [stdout] test sqli_detector::tests::test_no_false_positive_insert ... ok [INFO] [stdout] test sqli_detector::tests::test_no_false_positive_group_by ... ok [INFO] [stdout] test sqli_detector::tests::test_no_false_positive_simple_select ... ok [INFO] [stdout] test sqli_detector::tests::test_normalize_sql ... ok [INFO] [stdout] test sqli_detector::tests::test_detection_rate_all_types ... ok [INFO] [stdout] test sqli_detector::tests::test_no_false_positive_delete ... ok [INFO] [stdout] test sqli_detector::tests::test_no_false_positive_join ... ok [INFO] [stdout] test sqli_detector::tests::test_no_false_positive_update ... ok [INFO] [stdout] test sqli_detector::tests::test_pg_sleep_detection ... ok [INFO] [stdout] test sqli_detector::tests::test_sqli_detection_new ... ok [INFO] [stdout] test sqli_detector::tests::test_sqli_type_display ... ok [INFO] [stdout] test sqli_detector::tests::test_sqli_type_as_str ... ok [INFO] [stdout] test sqli_detector::tests::test_whitespace_only ... ok [INFO] [stdout] test sqli_detector::tests::test_with_types_empty ... ok [INFO] [stdout] test tde::tests::test_7c1_block_aligned_page ... ok [INFO] [stdout] test tde::tests::test_7c1_ciphertext_differs_from_plaintext ... ok [INFO] [stdout] test sqli_detector::tests::test_sqli_type_all_has_10 ... ok [INFO] [stdout] test sqli_detector::tests::test_normal_sql_with_semicolon ... ok [INFO] [stdout] test tde::tests::test_7c1_decrypt_ciphertext_too_short ... ok [INFO] [stdout] test tde::tests::test_7c1_decrypt_with_wrong_key_fails ... ok [INFO] [stdout] test tde::tests::test_7c1_decrypt_invalid_magic ... ok [INFO] [stdout] test tde::tests::test_7c1_different_keys_different_ciphertext ... ok [INFO] [stdout] test tde::tests::test_7c1_different_pages_different_ciphertext ... ok [INFO] [stdout] test tde::tests::test_7c1_enable_already_enabled ... ok [INFO] [stdout] test tde::tests::test_7c1_enable_disable ... ok [INFO] [stdout] test tde::tests::test_7c1_enable_with_key_already_enabled ... ok [INFO] [stdout] test tde::tests::test_7c1_enable_with_master_key ... ok [INFO] [stdout] test password_profile::tests::test_e2e_full_lifecycle ... ok [INFO] [stdout] test tde::tests::test_7c1_empty_page ... ok [INFO] [stdout] test tde::tests::test_7c1_derive_master_key_from_passphrase ... ok [INFO] [stdout] test tde::tests::test_7c1_encrypt_decrypt_bytes_roundtrip ... ok [INFO] [stdout] test tde::tests::test_7c1_encrypt_decrypt_page_roundtrip ... ok [INFO] [stdout] test tde::tests::test_7c1_encrypted_data_unreadable_hexdump ... ok [INFO] [stdout] test tde::tests::test_7c1_generate_master_key ... ok [INFO] [stdout] test tde::tests::test_7c1_disable_not_enabled ... ok [INFO] [stdout] test tde::tests::test_7c1_enable_invalid_key_length ... ok [INFO] [stdout] test tde::tests::test_7c1_encrypt_page_not_enabled ... ok [INFO] [stdout] test tde::tests::test_7c1_engine_creation ... ok [INFO] [stdout] test tde::tests::test_7c1_master_key_fingerprint ... ok [INFO] [stdout] test tde::tests::test_7c1_master_key_from_bytes ... ok [INFO] [stdout] test tde::tests::test_7c1_master_key_from_passphrase ... ok [INFO] [stdout] test tde::tests::test_7c1_master_key_invalid_length ... ok [INFO] [stdout] test tde::tests::test_7c1_max_page_id ... ok [INFO] [stdout] test tde::tests::test_7c1_non_block_aligned_page ... ok [INFO] [stdout] test tde::tests::test_7c1_reset_stats ... ok [INFO] [stdout] test tde::tests::test_7c1_rotate_key ... ok [INFO] [stdout] test tde::tests::test_7c1_rotate_key_bytes ... ok [INFO] [stdout] test tde::tests::test_7c1_rotate_key_not_enabled ... ok [INFO] [stdout] test tde::tests::test_7c1_master_key_generate ... ok [INFO] [stdout] test tde::tests::test_7c1_increment_counter ... ok [INFO] [stdout] test tde::tests::test_7c1_same_page_same_ciphertext ... ok [INFO] [stdout] test tde::tests::test_7c1_master_key_debug_no_leak ... ok [INFO] [stdout] test tde::tests::test_7c1_stats_tracking ... ok [INFO] [stdout] test tde::tests::test_7c1_single_byte_page ... ok [INFO] [stdout] test tde::tests::test_7c2_full_rotation_workflow ... ok [INFO] [stdout] test tde::tests::test_7c2_disable_clears_rotation_state ... ok [INFO] [stdout] test tde::tests::test_7c2_finalize_no_active_rotation ... ok [INFO] [stdout] test tde::tests::test_7c1_ctr_large_data ... ok [INFO] [stdout] test tde::tests::test_7c2_is_rotating_status ... ok [INFO] [stdout] test tde::tests::test_7c1_decrypt_page_not_enabled ... ok [INFO] [stdout] test tde::tests::test_7c2_finalize_rotation ... ok [INFO] [stdout] test tde::tests::test_7c2_key_version_increment ... ok [INFO] [stdout] test tde::tests::test_7c2_multiple_rotations_coexistence ... ok [INFO] [stdout] test tde::tests::test_7c2_reencrypt_page ... ok [INFO] [stdout] test tde::tests::test_7c2_rotate_key_lazy_basic ... ok [INFO] [stdout] test tde::tests::test_7c2_reencrypt_too_short ... ok [INFO] [stdout] test tde::tests::test_7c2_key_version_overflow ... ok [INFO] [stdout] test tde::tests::test_7c2_rotate_key_lazy_bytes_invalid_length ... ok [INFO] [stdout] test tde::tests::test_7c2_unknown_key_version_after_immediate_rotate ... ok [INFO] [stdout] test tde::tests::test_7c2_rotate_key_lazy_not_enabled ... ok [INFO] [stdout] test tde::tests::test_7c2_old_key_versions ... ok [INFO] [stdout] test tde::tests::test_7c2_rotate_key_lazy_old_ciphertext_still_decryptable ... ok [INFO] [stdout] test password_profile::tests::test_user_state_verify_wrong ... ok [INFO] [stdout] test tde::tests::test_7c2_reencrypt_all_pages_workflow ... ok [INFO] [stdout] test tde::tests::test_7c2_reencrypt_already_current_version ... ok [INFO] [stdout] test tests::version_returns_nonempty ... ok [INFO] [stdout] test password_profile::tests::test_user_state_verify_resets_failures_on_success ... ok [INFO] [stdout] test password_profile::tests::test_lockout_not_triggered_when_below_threshold ... ok [INFO] [stdout] test password_profile::tests::test_change_password_history_truncated ... ok [INFO] [stdout] test password_profile::tests::test_change_password_success ... ok [INFO] [stdout] test password_profile::tests::test_e2e_multiple_profiles ... ok [INFO] [stdout] test password_profile::tests::test_change_password_history_prevents_reuse ... ok [INFO] [stdout] test password_profile::tests::test_e2e_password_history_not_reusable ... ok [INFO] [stdout] test tde::tests::test_7c1_full_workflow_large_scale ... ok [INFO] [stderr] Doc-tests szrsql_security [INFO] [stdout] [INFO] [stdout] test result: ok. 539 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.98s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 7 tests [INFO] [stdout] test src/audit.rs - audit::AuditLog (line 600) ... ignored [INFO] [stdout] test src/column_enc.rs - column_enc::ColumnEncryptionEngine (line 295) ... ignored [INFO] [stdout] test src/firewall.rs - firewall::SqlFirewall (line 318) ... ignored [INFO] [stdout] test src/password_profile.rs - password_profile::PasswordHash (line 566) ... ignored [INFO] [stdout] test src/password_profile.rs - password_profile::PasswordProfile (line 167) ... ignored [INFO] [stdout] test src/password_profile.rs - password_profile::PasswordProfileRegistry (line 456) ... ignored [INFO] [stdout] test src/password_profile.rs - password_profile::UserPasswordState (line 689) ... ignored [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 7 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "93a8ec2208946fdfdbe72a90d2aa8eb064534b7917868d9acd4a399bc235f612", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "93a8ec2208946fdfdbe72a90d2aa8eb064534b7917868d9acd4a399bc235f612", kill_on_drop: false }` [INFO] [stdout] 93a8ec2208946fdfdbe72a90d2aa8eb064534b7917868d9acd4a399bc235f612