Skip to content

chore: refine testing infrastructure and tests exec time comparison#426

Open
maksymsur wants to merge 8 commits intomainfrom
maksymsur/feat/2902/tests-stats
Open

chore: refine testing infrastructure and tests exec time comparison#426
maksymsur wants to merge 8 commits intomainfrom
maksymsur/feat/2902/tests-stats

Conversation

@maksymsur
Copy link
Contributor

@maksymsur maksymsur commented Feb 18, 2026

Description of changes

Refined and improved existing testing infrastructure (CI + feature flags + architecture), improved parity between old VS new tests (incl. better logging for critical places), added k8s tests examples for the most critical scenarios: k8s_test_insecure_keygen_encrypt_and_public_decrypt and k8s_test_insecure_keygen_encrypt_multiple_types

kms-core-client Integration Tests

Section 1 — main/test-core-client-nightly (full nightly run)

Centralized — integration_test_isolated vs integration_test

Test Isolated Docker Delta Why
test_centralized_custodian_backup 1.387s 59.835s −58.4s Docker startup dominates; work identical
test_centralized_crsgen_secure 2.633s 33.144s −30.5s Docker startup dominates; work identical
test_centralized_restore_from_backup 3.845s 46.553s −42.7s Docker startup dominates; work identical
test_centralized_insecure 47.539s 289.109s −241.6s Isolated does 2× work (adds compressed-key round); still faster due to Docker overhead

Threshold — integration_test_isolated vs integration_test

Test Isolated Docker Delta Why
test_threshold_custodian_backup 1.915s 40.016s −38.1s Docker startup dominates; work identical
test_threshold_restore_from_backup 2.940s 65.522s −62.6s Docker startup dominates; work identical
test_threshold_concurrent_crs 8.223s 99.308s −91.1s Docker startup dominates; work identical
nightly_tests_threshold_sequential_crs 87.948s 695.293s −607.3s Docker startup dominates; work identical
full_gen_tests_default_threshold_sequential_crs 103.539s 1310.619s −1207.1s Docker startup dominates; work identical
test_threshold_mpc_context_init 801.570s 503.341s +298.2s ⚠️ Equivalent work; PRSS init is a network-heavy MPC protocol — 4 in-process server threads competing for CPU on the same scheduler is systematically slower than Docker's process-isolated containers (nightly run: higher base contention)
test_threshold_reshare 847.790s 414.868s +432.9s ⚠️ Equivalent work; nightly CI contention (38 concurrent tests); Section 2 shows only +114.6s
test_threshold_concurrent_preproc_keygen 910.521s 497.290s +413.2s ⚠️ Equivalent work; concurrent MPC sessions amplify CPU contention with in-process servers
nightly_tests_threshold_sequential_preproc_keygen 1444.899s 819.455s +625.4s ⚠️ Equivalent work; nightly CI contention (38 concurrent tests)
test_threshold_insecure 1807.361s 401.628s +1405.7s ⚠️ Isolated does 2× work (adds compressed-key round) + in-process CPU contention
test_threshold_mpc_context_switch_6 1821.073s 412.196s +1408.9s ⚠️ Isolated does 3× keygen (validates ctx1→ctx2→ctx1 round-trip); Docker tests ctx2 only then destroys ctx1

Section 2 — main/test-core-client (--features threshold_tests, threshold only)

Threshold — integration_test_isolated vs integration_test

Test Isolated Docker Delta Why
test_threshold_custodian_backup 0.646s 66.801s −66.2s Docker startup dominates; work identical
test_threshold_restore_from_backup 0.933s 36.271s −35.3s Docker startup dominates; work identical
test_threshold_mpc_context_init 446.908s 347.802s +99.1s ⚠️ Equivalent work; PRSS init is a network-heavy MPC protocol — 4 in-process server threads competing for CPU on the same scheduler is systematically slower than Docker's process-isolated containers
test_threshold_reshare 467.471s 352.844s +114.6s ⚠️ Equivalent work; PRSS init + preproc/keygen + reshare in-process (4 servers) vs Docker's process-isolated 6-server cluster; CPU contention
test_threshold_concurrent_preproc_keygen 711.698s 419.792s +291.9s ⚠️ Equivalent work; concurrent MPC sessions amplify CPU contention with in-process servers
test_threshold_insecure 879.375s 318.115s +561.3s ⚠️ Isolated does 2× work (adds compressed-key round) + in-process CPU contention
test_threshold_mpc_context_switch_6 1153.548s 350.326s +803.2s ⚠️ Isolated does 3× keygen (validates ctx1→ctx2→ctx1 round-trip); Docker tests ctx2 only then destroys ctx1

Threshold — Docker-only tests (no isolated counterpart in this section)

Test Docker Isolated (Section 7) Delta Notes
test_threshold_concurrent_crs 454.892s Isolated not in this section's feature gate; Section 7: isolated 9.615s vs Docker 104.643s (−95.0s)
test_threshold_insecure_compressed_keygen 417.938s 1.820s −416.1s Docker startup dominates
test_threshold_compressed_preproc_keygen 1604.113s 1598.132s −6.0s CPU-bound parity
test_threshold_mpc_context_switch 37.676s 2.980s −34.7s Docker startup dominates

Section 3 — main/test-core-client (--features testing, centralized only)

Centralized — integration_test_isolated vs integration_test

Test Isolated Docker Delta Why
test_centralized_custodian_backup 0.794s 476.965s −476.2s Cold Docker daemon on this CI job (centralized-only, no pre-warm); work identical
test_centralized_crsgen_secure 1.220s 773.106s −771.9s Cold Docker daemon on this CI job (centralized-only, no pre-warm); work identical
test_centralized_restore_from_backup 1.333s 33.505s −32.2s Docker startup dominates; work identical
test_centralized_insecure 41.973s 242.077s −200.1s Isolated does 2× work (adds compressed-key round); still faster due to Docker overhead

Centralized — newly added isolated tests

Test Isolated Docker Delta Why
test_centralized_insecure_compressed_keygen no data yet 541.814s Isolated counterpart added; Docker startup dominates (same pattern as other centralized tests)

kms Core Service Unit Tests

Section 4 — main/test-core-service (-F testing --lib)

Centralized — misc_tests_isolated vs misc_tests

Test Isolated Non-Isolated Delta Why
test_central_close_after_drop 0.220s 0.520s −0.3s Within noise
test_central_health_endpoint_availability 0.692s 0.566s +0.1s Within noise

Centralized — restore_from_backup_tests_isolated vs restore_from_backup_tests

Test Isolated Non-Isolated Delta Why
test_insecure_central_autobackup_after_deletion_isolated 1.402s Isolated only
test_insecure_central_dkg_backup_isolated 1.451s Isolated only

Threshold — key_gen_tests_isolated vs key_gen_tests

Test Isolated Non-Isolated Delta Why
test_insecure_dkg_isolated 5.008s 6.077s (test_insecure_dkg) −1.1s Within noise

Threshold — misc_tests_isolated vs misc_tests

Test Isolated Non-Isolated Delta Why
test_threshold_close_after_drop_isolated 0.899s 5.535s −4.6s Non-isolated starts servers without pre-generated material; isolated loads pre-generated
test_threshold_health_endpoint_availability_isolated 4.526s 4.998s −0.5s Within noise
test_threshold_shutdown_isolated 1.752s 6.329s −4.6s Non-isolated starts servers without pre-generated material; isolated loads pre-generated

Threshold — restore_from_backup_tests_isolated vs restore_from_backup_tests

Test Isolated Non-Isolated Delta Why
nightly_test_insecure_threshold_autobackup_after_deletion_isolated 4.878s Isolated only
nightly_test_insecure_threshold_dkg_backup_isolated 12.849s Isolated only
test_insecure_threshold_crs_backup_isolated 14.414s Isolated only

Section 5 — main/test-core-service (-F slow_tests -F s3_tests -F insecure threshold)

Threshold — key_gen_tests_isolated vs key_gen_tests

Test Isolated Non-Isolated Delta Why
test_insecure_dkg_isolated 5.061s 19.245s (test_insecure_dkg) −14.2s Non-isolated uses shared on-disk material (no per-test copy overhead)
default_insecure_dkg_isolated 189.955s 130.206s (default_insecure_dkg) +59.7s ⚠️ Isolated does more work: verify_keygen_responses reconstructs ClientKey + encrypt/decrypt with Default keys (~1.5 GB); non-isolated only runs check_conformance (structural check only). Also: per-test copy of ~10 GB Default material adds I/O
secure_threshold_keygen_isolated 231.069s 228.580s (secure_threshold_keygen_test) +2.5s Equivalent work; within noise
secure_threshold_keygen_crash_online_isolated 233.110s 233.718s (secure_threshold_keygen_test_crash_online) −0.6s Equivalent work; within noise
secure_threshold_keygen_crash_preprocessing_isolated 239.743s 224.897s (secure_threshold_keygen_test_crash_preprocessing) +14.8s Equivalent work; within noise
test_insecure_threshold_decompression_keygen_isolated 104.854s 215.346s −110.5s Equivalent work (both now call run_decompression_test); isolated skips server startup overhead from threshold_handles

Threshold — misc_tests_isolated vs misc_tests

Test Isolated Non-Isolated Delta Why
test_ratelimiter_isolated 21.106s 18.833s (test_ratelimiter) +2.3s Equivalent work; within noise
test_threshold_close_after_drop_isolated 0.908s 19.678s −18.8s Non-isolated starts servers without pre-generated material (runtime generation included); isolated loads pre-generated
test_threshold_health_endpoint_availability_isolated 4.536s 5.040s −0.5s Equivalent work; within noise
test_threshold_shutdown_isolated 1.774s 20.685s −18.9s Non-isolated starts servers without pre-generated material (runtime generation included); isolated loads pre-generated

Threshold — restore_from_backup_tests_isolated vs restore_from_backup_tests

Test Isolated Non-Isolated Delta Why
test_insecure_threshold_crs_backup_isolated 15.538s 77.839s −62.3s Non-isolated generates key material at runtime; isolated loads pre-generated

Centralized — misc_tests_isolated vs misc_tests

Test Isolated Non-Isolated Delta Why
test_central_close_after_drop_isolated 0.337s 0.616s −0.3s Equivalent work; within noise
test_central_health_endpoint_availability_isolated 0.705s 0.569s +0.1s Equivalent work; within noise
test_largecipher_isolated 6.901s 51.691s −44.8s Non-isolated generates key material at runtime (includes keygen); isolated loads pre-generated keys

Centralized — restore_from_backup_tests_isolated vs restore_from_backup_tests

Test Isolated Non-Isolated Delta Why
test_insecure_central_autobackup_after_deletion_isolated 1.448s 5.701s −4.3s Non-isolated generates key material at runtime; isolated loads pre-generated
test_insecure_central_dkg_backup_isolated 1.494s 59.289s −57.8s Non-isolated runs full DKG + backup at runtime; isolated loads pre-generated keys

kms-core-client Kubernetes Tests

Section 6 — build-and-test/kind-testing

Threshold — kubernetes_test_threshold_isolated vs kubernetes_test_threshold

Test Isolated (k8s) Non-Isolated (k8s) Delta Notes
k8s_test_crs_uniqueness 32.789s full_gen_tests_k8s_default_threshld_sequential_crs 32.861s −0.1s Same operation, different name (typo in non-isolated)
k8s_test_keygen_and_crs 191.382s test_k8s_threshld_insecure 193.545s −2.2s Functionally equivalent insecure keygen
k8s_test_insecure_keygen_encrypt_and_public_decrypt 196.996s Isolated only
k8s_test_insecure_keygen_encrypt_multiple_types 214.633s Isolated only
k8s_test_keygen_uniqueness 532.044s Isolated only

Centralized — kubernetes_test_centralized_isolated vs kubernetes_test_centralized

Test Isolated (k8s) Non-Isolated (k8s) Delta
full_gen_tests_default_k8s_centralized_sequential_crs 1.664s full_gen_tests_k8s_default_centralzd_sequential_crs 1.696s −0.0s
k8s_test_centralized_insecure >60s (timeout) test_k8s_centralzd_insecure 171.417s

Summary: Isolated Speedup at a Glance

Group Trend Notable
Centralized integration (backup/restore/crsgen) Isolated much faster Up to −772s (test_centralized_crsgen_secure)
Threshold lightweight (backup/restore/crs) Isolated much faster Up to −1207s (full_gen_tests_default_threshold_sequential_crs)
Threshold heavy (preproc_keygen, insecure, mpc_context) Isolated slower in nightly ⚠️ 2 tests do more work than Docker; rest are CPU contention (in-process servers share host with test runner)
Core service misc/close/shutdown Isolated faster Up to −18.9s
Core service restore/backup Isolated faster Up to −62.3s
Core service secure keygen (slow_tests) Mixed, roughly equal ±15s variance
Kubernetes tests Non-overlapping test sets Direct comparison not possible

Section 7 — CI Run (mixed threshold_tests + testing features, 41 tests total)

This run includes the three newly added isolated tests for the first time and has both isolated and Docker timings, enabling direct side-by-side comparison.

Centralized — integration_test_isolated vs integration_test

Test Isolated Docker Delta Why
test_centralized_custodian_backup 1.459s 33.459s −32.0s Docker startup dominates; work identical
test_centralized_crsgen_secure 6.531s 33.481s −27.0s Docker startup dominates; work identical
test_centralized_restore_from_backup 7.330s 33.395s −26.1s Docker startup dominates; work identical
test_centralized_insecure 47.458s 264.352s −216.9s Isolated does 2× work (adds compressed-key round); still faster due to Docker overhead
test_centralized_insecure_compressed_keygen to add timing 575.919s -

Threshold — integration_test_isolated vs integration_test

Test Isolated Docker Delta Why
test_threshold_concurrent_crs 9.615s 104.643s −95.0s Docker startup dominates; work identical
test_threshold_custodian_backup 3.242s 40.392s −37.2s Docker startup dominates; work identical
test_threshold_restore_from_backup 5.381s 36.219s −30.8s Docker startup dominates; work identical
test_threshold_insecure_compressed_keygen 1.820s 521.363s −519.5s Docker startup dominates; work identical
test_threshold_mpc_context_switch 2.980s 38.048s −35.1s Docker startup dominates; work identical
test_threshold_mpc_context_init 888.870s 879.593s +9.3s Equivalent work; isolated+Docker run concurrently → CPU contention nearly cancels out
test_threshold_reshare 930.022s 408.276s +521.7s ⚠️ Equivalent work; concurrent nextest run — isolated servers compete with active Docker containers for CPU
test_threshold_concurrent_preproc_keygen 958.724s 445.022s +513.7s ⚠️ Equivalent work; concurrent MPC sessions amplify CPU contention (isolated+Docker competing)
test_threshold_insecure 1986.268s 386.887s +1599.4s ⚠️ Isolated does 2× work (adds compressed-key round) + CPU contention from concurrent nextest run
test_threshold_mpc_context_switch_6 1892.647s 403.972s +1488.7s ⚠️ Isolated does 3× keygen (validates ctx1→ctx2→ctx1 round-trip) + CPU contention
test_threshold_compressed_preproc_keygen 1598.132s 772.530s +825.6s ⚠️ Equivalent work; Docker got ∼2× more CPU in this concurrent run (isolated tests consumed most load)
nightly_tests_threshold_sequential_preproc_keygen 1609.021s 767.793s +841.2s ⚠️ Equivalent work; same concurrent-run CPU contention effect

CRS / Sequential — integration_test_isolated vs integration_test

Test Isolated Docker Delta
full_gen_tests_default_threshold_sequential_crs 127.398s Isolated only in this run
nightly_tests_threshold_sequential_crs 111.544s Isolated only in this run

⚠️ The isolated-slower tests in this run show higher deltas than Section 2. This run executes isolated and Docker tests concurrently (nextest parallel runner), so in-process isolated servers compete with active Docker containers for CPU — amplifying the contention effect seen in Section 1. Section 2 (threshold-only, sequential) remains the most reliable comparison baseline.

Newly Added Isolated Tests — Same-Run Docker Comparison

Test Isolated Docker (this run) Docker (Sec 2) Delta vs Sec 2 Why
test_threshold_insecure_compressed_keygen 1.820s 521.363s 417.938s −416.1s Docker startup dominates; work identical. Docker time varies by contention; isolated is stable
test_threshold_mpc_context_switch 2.980s 38.048s 37.676s −34.7s Docker startup dominates; work identical
test_threshold_compressed_preproc_keygen 1598.132s 772.530s 1604.113s −6.0s vs Sec 2 CPU-bound parity. Docker time halved in this run because Docker servers had more CPU (isolated tests consumed most load in concurrent nextest run)

Issue ticket number and link

https://github.com/zama-ai/planning-blockchain/issues/901

PR Checklist

I attest that all checked items are satisfied. Any deviation is clearly justified above.

  • Title follows conventional commits (e.g. chore: ...).
  • Tests added for every new pub item and test coverage has not decreased.
  • Public APIs and non-obvious logic documented; unfinished work marked as TODO(#issue).
  • unwrap/expect/panic only in tests or for invariant bugs (documented if present).
  • No dependency version changes OR (if changed) only minimal required fixes.
  • No architectural protocol changes OR linked spec PR/issue provided.
  • No breaking deployment config changes OR devops label + infra notified + infra-team reviewer assigned.
  • No breaking gRPC / serialized data changes OR commit marked with ! and affected teams notified.
  • No modifications to existing versionized structs OR backward compatibility tests updated.
  • No critical business logic / crypto changes OR ≥2 reviewers assigned.
  • No new sensitive data fields added OR Zeroize + ZeroizeOnDrop implemented.
  • No new public storage data OR data is verifiable (signature / digest).
  • No unsafe; if unavoidable: minimal, justified, documented, and test/fuzz covered.
  • Strongly typed boundaries: typed inputs validated at the edge; no untyped values or errors cross modules.
  • Self-review completed.

Dependency Update Questionnaire (only if deps changed or added)

Answer in the Cargo.toml next to the dependency (or here if updating):

  1. Ownership changes or suspicious concentration?
  2. Low popularity?
  3. Unusual version jump?
  4. Lacking documentation?
  5. Missing CI?
  6. No security / disclosure policy?
  7. Significant size increase?

More details and explanations for the checklist and dependency updates can be found in CONTRIBUTING.md

@maksymsur maksymsur self-assigned this Feb 18, 2026
@cla-bot cla-bot bot added the cla-signed The CLA has been signed. label Feb 18, 2026
@github-actions
Copy link

github-actions bot commented Feb 19, 2026

Consolidated Tests Results 2026-02-25 - 15:39:50

Test Results

passed 920 passed

Details

tests 920 tests
clock not captured
tool junit-to-ctrf
build main arrow-right test-reporter link #3156
pull-request chore: refine testing infrastructure link #426

test-reporter: Run #3156

Tests 📝 Passed ✅ Failed ❌ Skipped ⏭️ Pending ⏳ Other ❓ Flaky 🍂 Duration ⏱️
920 920 0 0 0 0 0 not captured

🎉 All tests passed!

Tests

View All Tests
Test Name Status Flaky Duration
backup::custodian::tests::invalid_threshold_should_fail 6ms
client::tests::testing_infra_tests::test_threshold_material_validation 6ms
client::tests::threshold::crs_gen_tests::secure_threshold_crs 7m 21s
client::tests::threshold::crs_gen_tests::test_crs_gen_threshold 53.3s
client::tests::threshold::crs_gen_tests::test_insecure_crs_gen_threshold 50.7s
client::tests::threshold::custodian_backup_tests::test_auto_update_backups_threshold::case_1 1m 36s
client::tests::threshold::custodian_backup_tests::test_auto_update_backups_threshold::case_2 1m 35s
client::tests::threshold::custodian_backup_tests::test_backup_after_crs_threshold::case_1 2m 10s
client::tests::threshold::custodian_backup_tests::test_backup_after_crs_threshold::case_2 2m 11s
client::tests::threshold::custodian_backup_tests::test_decrypt_after_recovery_threshold::case_1 11.2s
client::tests::threshold::custodian_backup_tests::test_decrypt_after_recovery_threshold::case_2 11.2s
client::tests::threshold::custodian_backup_tests::test_decrypt_after_recovery_threshold_negative 4.6s
client::tests::threshold::custodian_context_tests::test_new_custodian_context_threshold::case_1 8.0s
client::tests::threshold::custodian_context_tests::test_new_custodian_context_threshold::case_2 8.0s
client::tests::threshold::key_gen_tests::default_insecure_dkg::case_1 2m 9s
client::tests::threshold::key_gen_tests::secure_threshold_compressed_keygen_test 5m 36s
client::tests::threshold::key_gen_tests::secure_threshold_keygen_test 5m 38s
client::tests::threshold::key_gen_tests::secure_threshold_keygen_test_crash_online 5m 32s
client::tests::threshold::key_gen_tests::secure_threshold_keygen_test_crash_preprocessing 4m 51s
client::tests::threshold::key_gen_tests::test_insecure_compressed_dkg::case_1 19.6s
client::tests::threshold::key_gen_tests::test_insecure_dkg::case_1 19.7s
client::tests::threshold::key_gen_tests::test_insecure_threshold_decompression_keygen 4m 55s
client::tests::threshold::key_gen_tests_isolated::default_insecure_dkg_isolated 3m 16s
client::tests::threshold::key_gen_tests_isolated::secure_threshold_compressed_keygen_from_existing_isolated 10m 43s
client::tests::threshold::key_gen_tests_isolated::secure_threshold_keygen_crash_online_isolated 5m 30s
client::tests::threshold::key_gen_tests_isolated::secure_threshold_keygen_crash_preprocessing_isolated 4m 19s
client::tests::threshold::key_gen_tests_isolated::secure_threshold_keygen_isolated 5m 22s
client::tests::threshold::key_gen_tests_isolated::test_insecure_dkg_isolated 5.0s
client::tests::threshold::key_gen_tests_isolated::test_insecure_threshold_decompression_keygen_isolated 2m 21s
client::tests::threshold::misc_tests::test_ratelimiter 19.0s
client::tests::threshold::misc_tests::test_threshold_close_after_drop 19.4s
client::tests::threshold::misc_tests::test_threshold_health_endpoint_availability 5.0s
client::tests::threshold::misc_tests::test_threshold_shutdown 20.6s
client::tests::threshold::misc_tests_isolated::test_ratelimiter_isolated 21.1s
client::tests::threshold::misc_tests_isolated::test_threshold_close_after_drop_isolated 902ms
client::tests::threshold::misc_tests_isolated::test_threshold_health_endpoint_availability_isolated 4.5s
client::tests::threshold::misc_tests_isolated::test_threshold_shutdown_isolated 1.8s
client::tests::threshold::mpc_context_tests::test_context_switch_4p 23.6s
client::tests::threshold::mpc_epoch_tests::test_new_epoch_with_reshare 5m 49s
client::tests::threshold::public_decryption_tests::default_decryption_threshold::case_1 26.1s
client::tests::threshold::public_decryption_tests::default_decryption_threshold_precompute_sns::case_1::compression_1_true 23.6s
client::tests::threshold::public_decryption_tests::default_decryption_threshold_precompute_sns::case_1::compression_2_false 23.3s
client::tests::threshold::public_decryption_tests::default_decryption_threshold_with_crash::case_1 24.0s
client::tests::threshold::public_decryption_tests::test_decryption_threshold::case_1 55.4s
client::tests::threshold::public_decryption_tests::test_decryption_threshold::case_2 25.8s
client::tests::threshold::public_decryption_tests::test_decryption_threshold::case_3 25.7s
client::tests::threshold::public_decryption_tests::test_decryption_threshold_no_decompression::case_1 54.2s
client::tests::threshold::public_decryption_tests::test_decryption_threshold_no_decompression::case_2 22.9s
client::tests::threshold::public_decryption_tests::test_decryption_threshold_no_decompression::case_3 23.2s
client::tests::threshold::public_decryption_tests::test_decryption_threshold_precompute_sns::case_1::compression_1_true 26.3s
client::tests::threshold::public_decryption_tests::test_decryption_threshold_precompute_sns::case_1::compression_2_false 26.5s
client::tests::threshold::restore_from_backup_tests::test_insecure_threshold_crs_backup 1m 18s
client::tests::threshold::restore_from_backup_tests_isolated::test_insecure_threshold_crs_backup_isolated 16.2s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_1 5m 39s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_2 15.7s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_3 17.9s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_4 18.0s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_5 21.1s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_6 19.4s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_7 18.8s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_all_malicious_failure 16.3s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_malicious::case_1 18.2s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_malicious::case_2 17.9s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_malicious_failure 18.0s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_precompute_sns::case_1 17.9s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_precompute_sns::case_2 18.0s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_precompute_sns_legacy::case_1 17.8s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_precompute_sns_legacy::case_2 18.0s
conf::tests::test_threshold_config 8ms
conf::tests::test_threshold_config_negative 7ms
conf::threshold::test_pem_serialization 5ms
engine::migration::tests::s3_tests::test_migrate_threshold_s3 61ms
engine::migration::tests::test_migrate_threshold_file 9ms
engine::migration::tests::test_migrate_threshold_ram 6ms
engine::threshold::service::crs_generator::tests::already_exists 23.0s
engine::threshold::service::crs_generator::tests::internal_failure 8ms
engine::threshold::service::crs_generator::tests::invalid_argument 7ms
engine::threshold::service::crs_generator::tests::not_found 7ms
engine::threshold::service::crs_generator::tests::resource_exhausted 6ms
engine::threshold::service::crs_generator::tests::sunshine 46ms
engine::threshold::service::crs_generator::tests::unavailable 1m 23s
engine::threshold::service::epoch_manager::tests::already_exists 8ms
engine::threshold::service::epoch_manager::tests::invalid_argument 7ms
engine::threshold::service::epoch_manager::tests::load_all_prss 7ms
engine::threshold::service::epoch_manager::tests::not_found 6ms
engine::threshold::service::epoch_manager::tests::prss_from_storage_test 1m 15s
engine::threshold::service::epoch_manager::tests::sunshine 8ms
engine::threshold::service::epoch_manager::tests::test_destroy_epoch_not_found 7ms
engine::threshold::service::epoch_manager::tests::test_destroy_epoch_success 6ms
engine::threshold::service::epoch_manager::tests::test_resource_exhausted 7ms
engine::threshold::service::epoch_manager::tests::test_verify_epoch_info 6ms
engine::threshold::service::key_generator::tests::aborted 5ms
engine::threshold::service::key_generator::tests::already_exists 38.0s
engine::threshold::service::key_generator::tests::internal 8ms
engine::threshold::service::key_generator::tests::invalid_argument 32.0s
engine::threshold::service::key_generator::tests::not_found 32.0s
engine::threshold::service::key_generator::tests::resource_exhausted 32.0s
engine::threshold::service::key_generator::tests::sunshine 98ms
engine::threshold::service::preprocessor::tests::already_exists 26.0s
engine::threshold::service::preprocessor::tests::internal 9ms
engine::threshold::service::preprocessor::tests::invalid_argument 7ms
engine::threshold::service::preprocessor::tests::not_found 8ms
engine::threshold::service::preprocessor::tests::resource_exhausted 7ms
engine::threshold::service::preprocessor::tests::sunshine 694ms
engine::threshold::service::public_decryptor::tests::already_exists 83ms
engine::threshold::service::public_decryptor::tests::invalid_argument 80ms
engine::threshold::service::public_decryptor::tests::not_found 84ms
engine::threshold::service::public_decryptor::tests::sunshine 88ms
engine::threshold::service::public_decryptor::tests::test_resource_exhausted 78ms
engine::threshold::service::reshare_utils::tests::bad_digests_get_verified_public_materials 22ms
engine::threshold::service::reshare_utils::tests::bad_digests_get_verified_public_materials_compressed 88ms
engine::threshold::service::reshare_utils::tests::empty_storage_fetch_public_materials_from_peers 27ms
engine::threshold::service::reshare_utils::tests::sunshine_fetch_public_materials_from_peers 29ms
engine::threshold::service::reshare_utils::tests::sunshine_fetch_public_materials_from_peers_compressed 86ms
engine::threshold::service::reshare_utils::tests::sunshine_get_verified_public_materials 16ms
engine::threshold::service::reshare_utils::tests::sunshine_get_verified_public_materials_compressed 83ms
engine::threshold::service::reshare_utils::tests::test_find_region 7ms
engine::threshold::service::reshare_utils::tests::test_split_devnet_url 6ms
engine::threshold::service::reshare_utils::tests::wrong_digest_fetch_public_materials_from_peers 21ms
engine::threshold::service::reshare_utils::tests::wrong_digest_fetch_public_materials_from_peers_compressed 85ms
engine::threshold::service::user_decryptor::tests::already_exists 79ms
engine::threshold::service::user_decryptor::tests::invalid_argument 81ms
engine::threshold::service::user_decryptor::tests::not_found 89ms
engine::threshold::service::user_decryptor::tests::resource_exhausted 79ms
engine::threshold::service::user_decryptor::tests::sunshine 95ms
testing::material::manager::tests::test_setup_threshold_material 33ms
testing::material::spec::tests::test_threshold_basic_spec 7ms
testing::material::spec::tests::test_threshold_default_no_prss_spec 6ms
testing::material::spec::tests::test_threshold_default_spec_requires_prss 6ms
vault::storage::crypto_material::tests::read_guarded_threshold_fhe_keys_not_found 6ms
vault::storage::crypto_material::tests::write_threshold_empty_update 82ms
vault::storage::crypto_material::tests::write_threshold_keys_failed_storage 76ms
vault::storage::crypto_material::tests::write_threshold_keys_meta_update 75ms
vault::storage::file::tests::storage_helper_methods::threshold_1_true 16ms
vault::storage::file::tests::storage_helper_methods::threshold_2_false 14ms
test_backward_compatibility_threshold_fhe 119ms
kms_gen_keys_binary_test::gen_key_tempdir_threshold 615ms
kms_gen_keys_binary_test::gen_key_threshold 8.5s
kms_gen_keys_binary_test::threshold_signing_key 54ms
kms_gen_keys_binary_test::threshold_signing_key_wrong_party_id 25ms
kms_gen_keys_binary_test::threshold_wrong_num_parties 25ms
kms_server_binary_test::subcommand_dev_threshold 5.9s
test_threshold_custodian_backup 718ms
test_threshold_insecure_compressed_keygen 937ms
test_threshold_restore_from_backup 1.0s
test_threshold_mpc_context_switch 1.5s
test_threshold_mpc_context_init 6m 58s
test_threshold_reshare 7m 8s
test_threshold_concurrent_preproc_keygen 8m 42s
test_threshold_compressed_preproc_keygen 12m 23s
test_threshold_insecure 14m 47s
test_threshold_mpc_context_switch_6 16m 12s
test_threshold_compressed_preproc_keygen 26m 21s
test_threshold_concurrent_crs 8m 3s
test_threshold_concurrent_preproc_keygen 6m 26s
test_threshold_custodian_backup 40.7s
test_threshold_insecure 5m 20s
test_threshold_insecure_compressed_keygen 7m 5s
test_threshold_mpc_context_init 5m 33s
test_threshold_mpc_context_switch 37.4s
test_threshold_mpc_context_switch_6 5m 33s
test_threshold_reshare 5m 35s
test_threshold_restore_from_backup 36.1s
test_centralized_insecure_compressed_keygen 793ms
test_centralized_custodian_backup 820ms
test_centralized_crsgen_secure 1.2s
test_centralized_restore_from_backup 1.3s
test_centralized_insecure 41.9s
test_centralized_crsgen_secure 13m 6s
test_centralized_custodian_backup 8m 12s
test_centralized_insecure 4m 8s
test_centralized_insecure_compressed_keygen 9m 14s
test_centralized_restore_from_backup 32.7s
backup::custodian::tests::internal_custodian_context_duplicate_role_should_fail 7ms
backup::custodian::tests::internal_custodian_context_role_greater_than_nodes_should_fail 5ms
backup::custodian::tests::internal_custodian_context_zero_role_should_fail 5ms
backup::operator::tests::operator_new_fails_with_bad_n_t 5ms
backup::operator::tests::operator_new_fails_with_duplicate_roles 5ms
backup::operator::tests::operator_new_fails_with_insufficient_messages 5ms
backup::operator::tests::operator_new_fails_with_invalid_header 5ms
backup::operator::tests::operator_new_fails_with_invalid_role 5ms
backup::operator::tests::operator_new_fails_with_invalid_timestamp_future 5ms
backup::operator::tests::operator_new_fails_with_invalid_timestamp_past 5ms
backup::operator::tests::operator_new_fails_with_not_enough 5ms
backup::operator::tests::operator_new_fails_with_zero_n 5ms
backup::operator::tests::operator_new_fails_with_zero_t 5ms
backup::operator::tests::operator_timestamp_validation 5ms
backup::operator::tests::validate_recovery_validation_material 6ms
backup::secretsharing::pkcs7::tests::padding_sunshine 5ms
backup::secretsharing::pkcs7::tests::padding_wrong_data 6ms
backup::secretsharing::tests::sharing_missing_shares 90ms
backup::secretsharing::tests::sharing_no_error 154ms
backup::secretsharing::tests::sharing_randomness_test 14.3s
backup::secretsharing::tests::sharing_too_many_missing_shares 13ms
backup::secretsharing::tests::sharing_wrong_params 6ms
backup::secretsharing::tests::sharing_wrong_shares 14ms
backup::seed_phrase::tests::difference 6ms
backup::seed_phrase::tests::mnemonic_robustness 6ms
backup::seed_phrase::tests::sunshine 6ms
backup::tests::custodian_reencrypt 9ms
backup::tests::full_flow::case_1 40ms
backup::tests::full_flow::case_2 27ms
backup::tests::full_flow::case_3 73ms
backup::tests::full_flow_drop_msg 31ms
backup::tests::full_flow_malicious_custodian_init 10ms
backup::tests::full_flow_malicious_custodian_not_enough 14ms
backup::tests::full_flow_malicious_custodian_second 55ms
backup::tests::full_flow_malicious_operator 28ms
backup::tests::operator_setup 8ms
client::crs_gen::tests::process_distributed_crs_result_invalid_signature_does_not_insert_key 7.7s
client::crs_gen::tests::verify_pp_with_tfhers 16.0s
client::tests::centralized::crs_gen_tests::test_crs_gen_centralized 6m 37s
client::tests::centralized::crs_gen_tests::test_crs_gen_manual 2.0s
client::tests::centralized::crs_gen_tests::test_insecure_crs_gen_centralized 10.9s
client::tests::centralized::custodian_backup_tests::test_auto_update_backups_central 5.2s
client::tests::centralized::custodian_backup_tests::test_backup_after_crs_central 13.8s
client::tests::centralized::custodian_backup_tests::test_decrypt_after_recovery_central 6.5s
client::tests::centralized::custodian_backup_tests::test_decrypt_after_recovery_centralized_negative 5.1s
client::tests::centralized::custodian_context_tests::test_new_custodian_context_central 4.6s
client::tests::centralized::key_gen_tests::default_decompression_key_gen_centralized 1m 25s
client::tests::centralized::key_gen_tests::default_key_gen_centralized 38.8s
client::tests::centralized::key_gen_tests::test_compressed_key_gen_centralized 1.8s
client::tests::centralized::key_gen_tests::test_decompression_key_gen_centralized 1m 24s
client::tests::centralized::key_gen_tests::test_key_gen_centralized 1.7s
client::tests::centralized::misc_tests::test_central_close_after_drop 596ms
client::tests::centralized::misc_tests::test_central_health_endpoint_availability 545ms
client::tests::centralized::misc_tests::test_largecipher 48.8s
client::tests::centralized::misc_tests_isolated::test_central_close_after_drop_isolated 340ms
client::tests::centralized::misc_tests_isolated::test_central_health_endpoint_availability_isolated 696ms
client::tests::centralized::misc_tests_isolated::test_largecipher_isolated 6.8s
client::tests::centralized::public_decryption_tests::default_decryption_centralized::case_1 4.3s
client::tests::centralized::public_decryption_tests::default_decryption_centralized_precompute_sns::case_1 5.0s
client::tests::centralized::public_decryption_tests::test_decryption_central 1.7s
client::tests::centralized::public_decryption_tests::test_decryption_central_no_decompression 1.7s
client::tests::centralized::public_decryption_tests::test_decryption_central_precompute_sns 1.7s
client::tests::centralized::restore_from_backup_tests::test_insecure_central_autobackup_after_deletion 5.6s
client::tests::centralized::restore_from_backup_tests::test_insecure_central_dkg_backup 57.7s
client::tests::centralized::restore_from_backup_tests_isolated::test_insecure_central_autobackup_after_deletion_isolated 1.4s
client::tests::centralized::restore_from_backup_tests_isolated::test_insecure_central_dkg_backup_isolated 1.5s
client::tests::centralized::user_decryption_tests::default_user_decryption_centralized::secure_1_true 54.9s
client::tests::centralized::user_decryption_tests::default_user_decryption_centralized::secure_2_false 4.2s
client::tests::centralized::user_decryption_tests::default_user_decryption_centralized_no_compression::secure_1_true 4.2s
client::tests::centralized::user_decryption_tests::default_user_decryption_centralized_no_compression::secure_2_false 4.1s
client::tests::centralized::user_decryption_tests::default_user_decryption_centralized_precompute_sns::secure_1_true::compression_1_true 4.8s
client::tests::centralized::user_decryption_tests::default_user_decryption_centralized_precompute_sns::secure_1_true::compression_2_false 4.7s
client::tests::centralized::user_decryption_tests::default_user_decryption_centralized_precompute_sns::secure_2_false::compression_1_true 4.8s
client::tests::centralized::user_decryption_tests::default_user_decryption_centralized_precompute_sns::secure_2_false::compression_2_false 4.7s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized::secure_1_true 1.7s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized::secure_2_false 1.7s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns::secure_1_true::compression_1_true 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns::secure_1_true::compression_2_false 1.7s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns::secure_2_false::compression_1_true 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns::secure_2_false::compression_2_false 1.7s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns_legacy::secure_1_true::compression_1_true 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns_legacy::secure_1_true::compression_2_false 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns_legacy::secure_2_false::compression_1_true 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns_legacy::secure_2_false::compression_2_false 1.7s
client::tests::common::num_blocks_sunshine 6ms
client::tests::testing_infra_tests::test_centralized_material_validation 6ms
client::tests::testing_infra_tests::tests::test_material_spec_creation 5ms
client::tests::testing_infra_tests::tests::test_material_spec_serialization 6ms
conf::tests::test_centralized_config 6ms
cryptography::decompression::test::test_1024b 2.6s
cryptography::decompression::test::test_128b 1.5s
cryptography::decompression::test::test_16b 1.4s
cryptography::decompression::test::test_2048b 3.9s
cryptography::decompression::test::test_256b 1.7s
cryptography::decompression::test::test_32b 1.5s
cryptography::decompression::test::test_4b 1.4s
cryptography::decompression::test::test_512b 2.0s
cryptography::decompression::test::test_64b 1.5s
cryptography::decompression::test::test_8b 1.5s
cryptography::decompression::test::test_bad_ciphertext 1.2s
cryptography::decompression::test::test_bad_fhe_type 1.4s
cryptography::decompression::test::test_bool 1.5s
cryptography::decompression::test::test_full_chain_client_copro_kms_uint8::case_1 43ms
cryptography::decompression::test::test_full_chain_client_copro_kms_uint8::case_2 1.6s
cryptography::decompression::test::test_tolerate_non_compressed 514ms
cryptography::encryption::tests::nested_pke_sunshine 7ms
cryptography::encryption::tests::pke_wrong_ct_enc 7ms
cryptography::encryption::tests::pke_wrong_kem_key 7ms
cryptography::hybrid_ml_kem::tests::pke_sunshine 40ms
cryptography::hybrid_ml_kem::tests::pke_wrong_ct_hybrid 36ms
cryptography::hybrid_ml_kem::tests::pke_wrong_kem 36ms
cryptography::hybrid_ml_kem::tests::pke_wrong_key 44ms
cryptography::hybrid_ml_kem::tests::pke_wrong_nonce 36ms
cryptography::hybrid_ml_kem::tests::test_pke_serialize_size 7ms
cryptography::hybrid_ml_kem::tests::validate_consistent_cipher_encoding 6ms
cryptography::signatures::tests::bad_dsep 6ms
cryptography::signatures::tests::bad_signature 6ms
cryptography::signatures::tests::plain_signing 6ms
cryptography::signatures::tests::regression_consistent_enc 5ms
cryptography::signatures::tests::sunshine_verf_key_legacy_serialization 5ms
cryptography::signatures::tests::unnormalized_signature 6ms
cryptography::signatures::tests::validate_zeroize_signing_key 6ms
cryptography::signcryption::tests::bad_signcryption 7ms
cryptography::signcryption::tests::incorrect_server_verf_key 6ms
cryptography::signcryption::tests::signcryption_with_bad_link 6ms
cryptography::signcryption::tests::sunshine 7ms
cryptography::signcryption::tests::sunshine_encoding_decoding 6ms
cryptography::signcryption::tests::test_signcryption_payload_v0_serialization_locked 5ms
engine::backup_operator::tests::test_filter_custodian_data_invalid_custodian_role 7ms
engine::backup_operator::tests::test_filter_custodian_data_invalid_operator_role 6ms
engine::backup_operator::tests::test_filter_custodian_data_invalid_signature 7ms
engine::backup_operator::tests::test_filter_custodian_data_missing_verification_key 7ms
engine::backup_operator::tests::test_filter_custodian_missing_cus_output 7ms
engine::backup_operator::tests::test_update_backup_vault 5ms
engine::backup_operator::tests::test_update_backup_vault_with_overwrite 5ms
engine::backup_operator::tests::test_update_backup_vault_without_overwrite 6ms
engine::backup_operator::tests::test_update_epoch_backup_vault 6ms
engine::backup_operator::tests::test_update_epoch_backup_vault_with_overwrite 6ms
engine::backup_operator::tests::test_update_epoch_backup_vault_without_overwrite 6ms
engine::base::tests::sunshine_plaintext_as_u256 5ms
engine::base::tests::test_abi_encoding_fhevm_ebytes 6ms
engine::base::tests::test_compute_external_signature_preproc 7ms
engine::base::tests::test_compute_info_crs 749ms
engine::base::tests::test_compute_info_standard_keygen 120ms
engine::base::tests::test_compute_pt_message_hash 7ms
engine::base::tests::test_deserialize_ciphertext_missing_decompression_key 110ms
engine::base::tests::test_deserialize_ciphertext_wrong_ct_format 91ms
engine::base::tests::test_deserialize_ciphertext_wrong_type 89ms
engine::centralized::central_kms::tests::decrypt_with_bad_client_key 196ms
engine::centralized::central_kms::tests::multiple_default_keys_decrypt 5.8s
engine::centralized::central_kms::tests::multiple_default_keys_user_decrypt 5.9s
engine::centralized::central_kms::tests::multiple_test_keys_access 31ms
engine::centralized::central_kms::tests::multiple_test_keys_decrypt 54ms
engine::centralized::central_kms::tests::multiple_test_keys_user_decrypt 55ms
engine::centralized::central_kms::tests::sanity_check_sns_compression_test_params 67ms
engine::centralized::central_kms::tests::sunshine_default_decrypt 5.9s
engine::centralized::central_kms::tests::sunshine_default_user_decrypt 5.8s
engine::centralized::central_kms::tests::sunshine_test_decrypt 52ms
engine::centralized::central_kms::tests::sunshine_test_user_decrypt 57ms
engine::centralized::central_kms::tests::test_gen_keys 21.3s
engine::centralized::central_kms::tests::test_generate_compressed_fhe_keys 147ms
engine::centralized::central_kms::tests::user_decrypt_with_bad_client_key 61ms
engine::centralized::central_kms::tests::user_decrypt_with_bad_ephemeral_key 58ms
engine::centralized::central_kms::tests::user_decrypt_with_bad_sig_key 50ms
engine::centralized::service::crs_gen::tests::already_exists 21.0s
engine::centralized::service::crs_gen::tests::invalid_argument 9ms
engine::centralized::service::crs_gen::tests::not_found 9ms
engine::centralized::service::crs_gen::tests::resource_exhausted 8ms
engine::centralized::service::crs_gen::tests::sunshine 679ms
engine::centralized::service::decryption::test_user_decryption::already_exists 21.1s
engine::centralized::service::decryption::test_user_decryption::invalid_argument 105ms
engine::centralized::service::decryption::test_user_decryption::not_found 105ms
engine::centralized::service::decryption::test_user_decryption::resource_exhausted 109ms
engine::centralized::service::decryption::test_user_decryption::sunshine 111ms
engine::centralized::service::decryption::tests_public_decryption::already_exists 104ms
engine::centralized::service::decryption::tests_public_decryption::invalid_argument 109ms
engine::centralized::service::decryption::tests_public_decryption::not_found 107ms
engine::centralized::service::decryption::tests_public_decryption::resource_exhausted 107ms
engine::centralized::service::decryption::tests_public_decryption::sunshine 109ms
engine::centralized::service::initiator::tests::already_exists 8ms
engine::centralized::service::initiator::tests::invalid_argument 8ms
engine::centralized::service::initiator::tests::sunshine 7ms
engine::centralized::service::key_gen::tests::already_exists 102ms
engine::centralized::service::key_gen::tests::invalid_argument 9ms
engine::centralized::service::key_gen::tests::not_found 103ms
engine::centralized::service::key_gen::tests::resource_exhausted 8ms
engine::centralized::service::key_gen::tests::sunshine 102ms
engine::centralized::service::preprocessing::tests::already_exists 9ms
engine::centralized::service::preprocessing::tests::invalid_argument 7ms
engine::centralized::service::preprocessing::tests::not_found 7ms
engine::centralized::service::preprocessing::tests::resource_exhausted 7ms
engine::centralized::service::preprocessing::tests::sunshine 7ms
engine::context::tests::parse_software_semantic_version 6ms
engine::context::tests::test_context_info_duplicate_party_ids 6ms
engine::context::tests::test_software_version_display 5ms
engine::context::tests::test_software_version_equality 5ms
engine::context::tests::test_software_version_major_comparison 5ms
engine::context::tests::test_software_version_minor_comparison 5ms
engine::context::tests::test_software_version_no_tag 6ms
engine::context::tests::test_software_version_patch_comparison 5ms
engine::context::tests::test_software_version_unordered_tag 5ms
engine::context_manager::tests::test_centralized_context_cache 6ms
engine::context_manager::tests::test_centralized_context_exists_and_consistent 6ms
engine::context_manager::tests::test_centralized_multiple_contexts 7ms
engine::context_manager::tests::test_custodian_context 11ms
engine::context_manager::tests::test_gen_recovery_request_payloads 8ms
engine::context_manager::tests::test_kms_context 7ms
engine::context_manager::tests::test_kms_context_load_from_storage 6ms
engine::keyset_configuration::tests::test_internal_keyset_config_decompression_only_missing_added_info 4ms
engine::keyset_configuration::tests::test_internal_keyset_config_decompression_only_with_added_info_missing_ids 5ms
engine::keyset_configuration::tests::test_internal_keyset_config_decompression_only_with_added_info_with_ids 5ms
engine::keyset_configuration::tests::test_internal_keyset_config_none_defaults_to_standard 5ms
engine::keyset_configuration::tests::test_internal_keyset_config_standard_default 5ms
engine::keyset_configuration::tests::test_internal_keyset_config_standard_use_existing_missing_added_info 5ms
engine::keyset_configuration::tests::test_internal_keyset_config_standard_use_existing_with_added_info_missing_ids 5ms
engine::keyset_configuration::tests::test_internal_keyset_config_standard_use_existing_with_added_info_with_ids 5ms
engine::keyset_configuration::tests::test_new_decompression_only_unparseable_from_id 5ms
engine::keyset_configuration::tests::test_new_decompression_only_unparseable_to_id 5ms
engine::keyset_configuration::tests::test_new_use_existing_compression_sk_unparseable_epoch 5ms
engine::keyset_configuration::tests::test_new_use_existing_compression_sk_unparseable_key_id 5ms
engine::keyset_configuration::tests::test_new_use_existing_compression_sk_valid 5ms
engine::keyset_configuration::tests::test_new_use_existing_compression_sk_with_epoch 5ms
engine::keyset_configuration::tests::test_new_use_existing_unparseable_epoch_id 5ms
engine::migration::tests::legacy_prss 6ms
engine::migration::tests::s3_tests::test_migrate_centralized_s3 41ms
engine::migration::tests::s3_tests::test_migrate_idempotent_s3 31ms
engine::migration::tests::s3_tests::test_migrate_no_legacy_data_s3 13ms
engine::migration::tests::s3_tests::test_migrate_skips_existing_s3 31ms
engine::migration::tests::test_migrate_centralized_file 7ms
engine::migration::tests::test_migrate_centralized_ram 5ms
engine::migration::tests::test_migrate_idempotent_file 7ms
engine::migration::tests::test_migrate_idempotent_ram 5ms
engine::migration::tests::test_migrate_no_legacy_data_file 6ms
engine::migration::tests::test_migrate_no_legacy_data_ram 5ms
engine::migration::tests::test_migrate_skips_existing_file 6ms
engine::migration::tests::test_migrate_skips_existing_ram 5ms
engine::utils::tests::test_metriced_error_creation 5ms
engine::utils::tests::test_metriced_error_drop_logging 5ms
engine::utils::tests::test_metriced_error_no_dropping 5ms
engine::validation_non_wasm::tests::test_max_num_bits_verification 5ms
engine::validation_non_wasm::tests::test_select_most_common_dec 5ms
engine::validation_non_wasm::tests::test_validate_public_decrypt_meta_response 7ms
engine::validation_non_wasm::tests::test_validate_public_decrypt_req 5ms
engine::validation_non_wasm::tests::test_validate_public_decrypt_responses 7ms
engine::validation_non_wasm::tests::test_validate_public_decrypt_responses_against_request 7ms
engine::validation_non_wasm::tests::test_validate_request_id 5ms
engine::validation_non_wasm::tests::test_validate_user_decrypt_req 6ms
engine::validation_non_wasm::tests::test_verify_user_decrypt_eip712 6ms
engine::validation_wasm::tests::test_check_ext_user_decryption_signature 8ms
engine::validation_wasm::tests::test_select_most_common_user_dec 5ms
engine::validation_wasm::tests::test_validate_user_decrypt_meta_data_and_signature 7ms
engine::validation_wasm::tests::test_validate_user_decrypt_responses 23ms
engine::validation_wasm::tests::test_validate_user_decrypt_responses_against_request 8ms
grpc::tests::regression_tests::test_request_id_compile_time_interface_stability 5ms
grpc::tests::regression_tests::test_request_id_core_structure_and_api_consistency 5ms
grpc::tests::regression_tests::test_request_id_validation_and_error_handling 5ms
grpc::tests::unit_tests::test_get_meta_store_info_with_real_stores 5ms
grpc::tests::unit_tests::test_get_meta_store_info_with_unavailable_stores 5ms
grpc::tests::unit_tests::test_list_requests_invalid_store_type 5ms
grpc::tests::unit_tests::test_list_requests_pagination 5ms
grpc::tests::unit_tests::test_list_requests_with_real_stores 5ms
grpc::tests::unit_tests::test_list_requests_with_unavailable_stores 5ms
grpc::tests::unit_tests::test_service_with_mixed_store_availability 6ms
testing::material::manager::tests::test_setup_centralized_material 18ms
testing::material::spec::tests::test_centralized_basic_spec 5ms
testing::material::spec::tests::test_comprehensive_spec 5ms
testing::material::spec::tests::test_key_type_covers_all_priv_data_types 5ms
testing::material::spec::tests::test_key_type_covers_all_pub_data_types 5ms
testing::material::spec::tests::test_serialization 5ms
testing::utils::test_purge 8ms
util::file_handling::tests::read_write_element 6ms
util::file_handling::tests::read_write_text 6ms
util::key_setup::tests::test_max_num_bits 4.1s
util::meta_store::tests::auto_remove 7ms
util::meta_store::tests::delete 6ms
util::meta_store::tests::double_insert 5ms
util::meta_store::tests::sunshine 6ms
util::meta_store::tests::test_kickout_of_errors 6ms
util::meta_store::tests::test_subscription 5.0s
util::meta_store::tests::too_many_elements 7ms
util::random_free_port::tests::test_random_free_ports 6ms
util::rate_limiter::tests::test_rate_limiting_1 5ms
util::rate_limiter::tests::test_rate_limiting_more 6ms
util::rate_limiter::tests::test_rate_limiting_refusal 6ms
util::retry::tests::fatal_loop_fails 50ms
util::retry::tests::retry_loop_fails 51ms
util::retry::tests::sunshine_fatal_loop 62ms
util::retry::tests::sunshine_retry_loop 62ms
vault::keychain::secretsharing::tests::test_encrypt_and_decrypt_roundtrip 7ms
vault::keychain::secretsharing::tests::test_new_keychain_without_pub_storage 6ms
vault::keychain::secretsharing::tests::test_operator_public_key_bytes_error 5ms
vault::keychain::secretsharing::tests::test_set_and_get_backup_enc_key 6ms
vault::keychain::tests::test_verify_root_key_measurements 6ms
vault::storage::crypto_material::tests::read_guarded_crypto_material_from_cache_not_found 5ms
vault::storage::crypto_material::tests::read_public_key 6ms
vault::storage::crypto_material::tests::write_central_keys 18ms
vault::storage::crypto_material::tests::write_crs 388ms
vault::storage::file::tests::test_all_data_ids_from_all_epochs_file 10ms
vault::storage::file::tests::test_delete_at_epoch_keeps_dir_when_not_empty 8ms
vault::storage::file::tests::test_delete_at_epoch_removes_empty_epoch_dir 7ms
vault::storage::file::tests::test_epoch_storage 7ms
vault::storage::file::tests::test_overwrite_logic_files 7ms
vault::storage::file::tests::test_store_bytes_at_epoch_does_not_overwrite_file 6ms
vault::storage::file::tests::test_store_load_bytes_at_epoch_file 7ms
vault::storage::ram::tests::storage_helper_methods 6ms
vault::storage::ram::tests::test_all_data_ids_from_all_epochs_ram 5ms
vault::storage::ram::tests::test_overwrite_logic_ram 6ms
vault::storage::ram::tests::test_overwrite_logic_ram_on_epoch 6ms
vault::storage::ram::tests::test_store_load_bytes_at_epoch_ram 6ms
vault::storage::s3::tests::s3_storage_helper_methods 129ms
vault::storage::s3::tests::test_all_data_ids_from_all_epochs_s3 78ms
vault::storage::s3::tests::test_epoch_methods_in_s3 49ms
vault::storage::s3::tests::test_overwrite_logic_files 30ms
vault::storage::s3::tests::test_s3_anon 137ms
vault::storage::s3::tests::test_store_bytes_at_epoch_does_not_overwrite_s3 26ms
vault::storage::s3::tests::test_store_load_bytes_at_epoch_s3 47ms
vault::storage::tests::ordered_map 6ms
vault::tests::regression_test_vault_data_type_serialization 5ms
test_backward_compatibility_kms 733ms
test_backward_compatibility_kms_grpc 10ms
kms_custodian_binary_tests::sunshine_decrypt_custodian 170ms
kms_custodian_binary_tests::sunshine_generate 24ms
kms_custodian_binary_tests::sunshine_verify 22ms
kms_gen_keys_binary_test::central_s3 42ms
kms_gen_keys_binary_test::central_signing_address_format 22ms
kms_gen_keys_binary_test::central_signing_keys_overwrite 36ms
kms_gen_keys_binary_test::gen_key_centralized 6.6s
kms_gen_keys_binary_test::gen_key_tempdir_centralized 566ms
kms_gen_keys_binary_test::help 36ms
kms_init_binary_test::help 11ms
kms_init_binary_test::init 16ms
kms_server_binary_test::help 7ms
kms_server_binary_test::subcommand_dev_centralized 5.7s
kms_server_binary_test::test_cert_paths 40ms
client::tests::threshold::user_decryption_tests::default_user_decryption_threshold::case_1::secure_1_true 6m 37s
client::tests::threshold::user_decryption_tests::default_user_decryption_threshold::case_2::secure_1_true 18.0s
client::tests::threshold::user_decryption_tests::default_user_decryption_threshold_precompute_sns::case_1::secure_1_true 18.2s
client::tests::threshold::user_decryption_tests::default_user_decryption_threshold_with_crash::case_1::secure_1_true 18.9s
client::tests::threshold::user_decryption_tests::default_user_decryption_threshold_with_crash::case_1::secure_2_false 18.5s
backup::custodian::tests::internal_custodian_context_duplicate_role_should_fail 7ms
backup::custodian::tests::internal_custodian_context_role_greater_than_nodes_should_fail 6ms
backup::custodian::tests::internal_custodian_context_zero_role_should_fail 5ms
backup::custodian::tests::invalid_threshold_should_fail 5ms
backup::operator::tests::operator_new_fails_with_bad_n_t 5ms
backup::operator::tests::operator_new_fails_with_duplicate_roles 5ms
backup::operator::tests::operator_new_fails_with_insufficient_messages 5ms
backup::operator::tests::operator_new_fails_with_invalid_header 5ms
backup::operator::tests::operator_new_fails_with_invalid_role 6ms
backup::operator::tests::operator_new_fails_with_invalid_timestamp_future 5ms
backup::operator::tests::operator_new_fails_with_invalid_timestamp_past 6ms
backup::operator::tests::operator_new_fails_with_not_enough 6ms
backup::operator::tests::operator_new_fails_with_zero_n 5ms
backup::operator::tests::operator_new_fails_with_zero_t 5ms
backup::operator::tests::operator_timestamp_validation 5ms
backup::operator::tests::validate_recovery_validation_material 6ms
backup::secretsharing::pkcs7::tests::padding_sunshine 6ms
backup::secretsharing::pkcs7::tests::padding_wrong_data 6ms
backup::secretsharing::tests::sharing_missing_shares 92ms
backup::secretsharing::tests::sharing_no_error 158ms
backup::secretsharing::tests::sharing_randomness_test 14.2s
backup::secretsharing::tests::sharing_too_many_missing_shares 13ms
backup::secretsharing::tests::sharing_wrong_params 6ms
backup::secretsharing::tests::sharing_wrong_shares 13ms
backup::seed_phrase::tests::difference 6ms
backup::seed_phrase::tests::mnemonic_robustness 6ms
backup::seed_phrase::tests::sunshine 5ms
backup::tests::custodian_reencrypt 9ms
backup::tests::full_flow::case_1 40ms
backup::tests::full_flow::case_2 28ms
backup::tests::full_flow::case_3 73ms
backup::tests::full_flow_drop_msg 32ms
backup::tests::full_flow_malicious_custodian_init 11ms
backup::tests::full_flow_malicious_custodian_not_enough 14ms
backup::tests::full_flow_malicious_custodian_second 54ms
backup::tests::full_flow_malicious_operator 28ms
backup::tests::operator_setup 9ms
client::crs_gen::tests::process_distributed_crs_result_invalid_signature_does_not_insert_key 8.0s
client::crs_gen::tests::verify_pp_with_tfhers 16.5s
client::tests::centralized::crs_gen_tests::test_crs_gen_centralized 11.9s
client::tests::centralized::crs_gen_tests::test_crs_gen_manual 1.9s
client::tests::centralized::crs_gen_tests::test_insecure_crs_gen_centralized 9.7s
client::tests::centralized::custodian_backup_tests::test_auto_update_backups_central 3.8s
client::tests::centralized::custodian_backup_tests::test_backup_after_crs_central 11.5s
client::tests::centralized::custodian_backup_tests::test_decrypt_after_recovery_central 5.1s
client::tests::centralized::custodian_backup_tests::test_decrypt_after_recovery_centralized_negative 3.8s
client::tests::centralized::custodian_context_tests::test_new_custodian_context_central 3.3s
client::tests::centralized::key_gen_tests::test_decompression_key_gen_centralized 1m 24s
client::tests::centralized::key_gen_tests::test_key_gen_centralized 1.7s
client::tests::centralized::misc_tests::test_central_close_after_drop 570ms
client::tests::centralized::misc_tests::test_central_health_endpoint_availability 522ms
client::tests::centralized::misc_tests_isolated::test_central_close_after_drop_isolated 231ms
client::tests::centralized::misc_tests_isolated::test_central_health_endpoint_availability_isolated 701ms
client::tests::centralized::public_decryption_tests::test_decryption_central 1.6s
client::tests::centralized::public_decryption_tests::test_decryption_central_no_decompression 1.6s
client::tests::centralized::public_decryption_tests::test_decryption_central_precompute_sns 1.6s
client::tests::centralized::restore_from_backup_tests_isolated::test_insecure_central_autobackup_after_deletion_isolated 1.4s
client::tests::centralized::restore_from_backup_tests_isolated::test_insecure_central_dkg_backup_isolated 1.5s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized::secure_1_true 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized::secure_2_false 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns::secure_1_true::compression_1_true 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns::secure_1_true::compression_2_false 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns::secure_2_false::compression_1_true 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns::secure_2_false::compression_2_false 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns_legacy::secure_1_true::compression_1_true 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns_legacy::secure_1_true::compression_2_false 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns_legacy::secure_2_false::compression_1_true 1.6s
client::tests::centralized::user_decryption_tests::test_user_decryption_centralized_precompute_sns_legacy::secure_2_false::compression_2_false 1.6s
client::tests::common::num_blocks_sunshine 6ms
client::tests::testing_infra_tests::test_centralized_material_validation 7ms
client::tests::testing_infra_tests::test_threshold_material_validation 6ms
client::tests::testing_infra_tests::tests::test_material_spec_creation 5ms
client::tests::testing_infra_tests::tests::test_material_spec_serialization 5ms
client::tests::threshold::crs_gen_tests::test_insecure_crs_gen_threshold 37.1s
client::tests::threshold::custodian_backup_tests::test_auto_update_backups_threshold::case_1 5.2s
client::tests::threshold::custodian_backup_tests::test_auto_update_backups_threshold::case_2 5.2s
client::tests::threshold::custodian_backup_tests::test_backup_after_crs_threshold::case_1 41.9s
client::tests::threshold::custodian_backup_tests::test_backup_after_crs_threshold::case_2 41.9s
client::tests::threshold::custodian_backup_tests::test_decrypt_after_recovery_threshold::case_1 11.2s
client::tests::threshold::custodian_backup_tests::test_decrypt_after_recovery_threshold::case_2 11.2s
client::tests::threshold::custodian_backup_tests::test_decrypt_after_recovery_threshold_negative 4.6s
client::tests::threshold::custodian_context_tests::test_new_custodian_context_threshold::case_1 6.9s
client::tests::threshold::custodian_context_tests::test_new_custodian_context_threshold::case_2 6.9s
client::tests::threshold::key_gen_tests::default_insecure_dkg::case_1 1m 42s
client::tests::threshold::key_gen_tests::test_insecure_compressed_dkg::case_1 6.0s
client::tests::threshold::key_gen_tests::test_insecure_dkg::case_1 6.0s
client::tests::threshold::key_gen_tests_isolated::test_insecure_dkg_isolated 5.1s
client::tests::threshold::misc_tests::test_threshold_close_after_drop 5.5s
client::tests::threshold::misc_tests::test_threshold_health_endpoint_availability 5.0s
client::tests::threshold::misc_tests::test_threshold_shutdown 6.4s
client::tests::threshold::misc_tests_isolated::test_threshold_close_after_drop_isolated 909ms
client::tests::threshold::misc_tests_isolated::test_threshold_health_endpoint_availability_isolated 4.5s
client::tests::threshold::misc_tests_isolated::test_threshold_shutdown_isolated 1.8s
client::tests::threshold::mpc_context_tests::test_context_switch_4p 9.6s
client::tests::threshold::public_decryption_tests::test_decryption_threshold::case_1 12.1s
client::tests::threshold::public_decryption_tests::test_decryption_threshold::case_2 11.7s
client::tests::threshold::public_decryption_tests::test_decryption_threshold::case_3 11.7s
client::tests::threshold::public_decryption_tests::test_decryption_threshold_no_decompression::case_1 8.7s
client::tests::threshold::public_decryption_tests::test_decryption_threshold_no_decompression::case_2 8.5s
client::tests::threshold::public_decryption_tests::test_decryption_threshold_no_decompression::case_3 8.6s
client::tests::threshold::public_decryption_tests::test_decryption_threshold_precompute_sns::case_1::compression_1_true 11.8s
client::tests::threshold::public_decryption_tests::test_decryption_threshold_precompute_sns::case_1::compression_2_false 11.8s
client::tests::threshold::restore_from_backup_tests_isolated::nightly_test_insecure_threshold_autobackup_after_deletion_isolated 4.9s
client::tests::threshold::restore_from_backup_tests_isolated::nightly_test_insecure_threshold_dkg_backup_isolated 12.9s
client::tests::threshold::restore_from_backup_tests_isolated::test_insecure_threshold_crs_backup_isolated 16.6s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_1 5.4s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_2 6.0s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_3 8.4s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_4 8.5s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_5 11.7s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_6 9.2s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold::case_7 10.8s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_all_malicious_failure 6.9s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_malicious::case_1 8.5s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_malicious::case_2 8.5s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_malicious_failure 8.3s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_precompute_sns::case_1 8.4s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_precompute_sns::case_2 8.4s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_precompute_sns_legacy::case_1 8.5s
client::tests::threshold::user_decryption_tests::test_user_decryption_threshold_precompute_sns_legacy::case_2 8.5s
conf::tests::test_centralized_config 7ms
conf::tests::test_threshold_config 7ms
conf::tests::test_threshold_config_negative 6ms
conf::threshold::test_pem_serialization 5ms
cryptography::decompression::test::test_1024b 2.8s
cryptography::decompression::test::test_128b 1.6s
cryptography::decompression::test::test_16b 1.5s
cryptography::decompression::test::test_2048b 4.1s
cryptography::decompression::test::test_256b 1.8s
cryptography::decompression::test::test_32b 1.6s
cryptography::decompression::test::test_4b 1.4s
cryptography::decompression::test::test_512b 2.1s
cryptography::decompression::test::test_64b 1.6s
cryptography::decompression::test::test_8b 1.5s
cryptography::decompression::test::test_bad_ciphertext 1.3s
cryptography::decompression::test::test_bad_fhe_type 1.5s
cryptography::decompression::test::test_bool 1.6s
cryptography::decompression::test::test_full_chain_client_copro_kms_uint8::case_1 36ms
cryptography::decompression::test::test_full_chain_client_copro_kms_uint8::case_2 1.6s
cryptography::decompression::test::test_tolerate_non_compressed 545ms
cryptography::encryption::tests::nested_pke_sunshine 7ms
cryptography::encryption::tests::pke_wrong_ct_enc 7ms
cryptography::encryption::tests::pke_wrong_kem_key 7ms
cryptography::hybrid_ml_kem::tests::pke_sunshine 42ms
cryptography::hybrid_ml_kem::tests::pke_wrong_ct_hybrid 38ms
cryptography::hybrid_ml_kem::tests::pke_wrong_kem 38ms
cryptography::hybrid_ml_kem::tests::pke_wrong_key 46ms
cryptography::hybrid_ml_kem::tests::pke_wrong_nonce 38ms
cryptography::hybrid_ml_kem::tests::test_pke_serialize_size 7ms
cryptography::hybrid_ml_kem::tests::validate_consistent_cipher_encoding 7ms
cryptography::signatures::tests::bad_dsep 7ms
cryptography::signatures::tests::bad_signature 7ms
cryptography::signatures::tests::plain_signing 6ms
cryptography::signatures::tests::regression_consistent_enc 6ms
cryptography::signatures::tests::sunshine_verf_key_legacy_serialization 5ms
cryptography::signatures::tests::unnormalized_signature 7ms
cryptography::signatures::tests::validate_zeroize_signing_key 6ms
cryptography::signcryption::tests::bad_signcryption 8ms
cryptography::signcryption::tests::incorrect_server_verf_key 6ms
cryptography::signcryption::tests::signcryption_with_bad_link 7ms
cryptography::signcryption::tests::sunshine 7ms
cryptography::signcryption::tests::sunshine_encoding_decoding 7ms
cryptography::signcryption::tests::test_signcryption_payload_v0_serialization_locked 5ms
engine::backup_operator::tests::test_filter_custodian_data_invalid_custodian_role 7ms
engine::backup_operator::tests::test_filter_custodian_data_invalid_operator_role 7ms
engine::backup_operator::tests::test_filter_custodian_data_invalid_signature 7ms
engine::backup_operator::tests::test_filter_custodian_data_missing_verification_key 20ms
engine::backup_operator::tests::test_filter_custodian_missing_cus_output 7ms
engine::backup_operator::tests::test_update_backup_vault 6ms
engine::backup_operator::tests::test_update_backup_vault_with_overwrite 6ms
engine::backup_operator::tests::test_update_backup_vault_without_overwrite 6ms
engine::backup_operator::tests::test_update_epoch_backup_vault 6ms
engine::backup_operator::tests::test_update_epoch_backup_vault_with_overwrite 6ms
engine::backup_operator::tests::test_update_epoch_backup_vault_without_overwrite 6ms
engine::base::tests::sunshine_plaintext_as_u256 5ms
engine::base::tests::test_abi_encoding_fhevm_ebytes 6ms
engine::base::tests::test_compute_external_signature_preproc 8ms
engine::base::tests::test_compute_info_crs 881ms
engine::base::tests::test_compute_info_standard_keygen 126ms
engine::base::tests::test_compute_pt_message_hash 7ms
engine::base::tests::test_deserialize_ciphertext_missing_decompression_key 95ms
engine::base::tests::test_deserialize_ciphertext_wrong_ct_format 99ms
engine::base::tests::test_deserialize_ciphertext_wrong_type 98ms
engine::centralized::central_kms::tests::decrypt_with_bad_client_key 210ms
engine::centralized::central_kms::tests::multiple_test_keys_access 29ms
engine::centralized::central_kms::tests::multiple_test_keys_decrypt 50ms
engine::centralized::central_kms::tests::multiple_test_keys_user_decrypt 55ms
engine::centralized::central_kms::tests::sanity_check_sns_compression_test_params 64ms
engine::centralized::central_kms::tests::sunshine_test_decrypt 54ms
engine::centralized::central_kms::tests::sunshine_test_user_decrypt 54ms
engine::centralized::central_kms::tests::test_gen_keys 21.8s
engine::centralized::central_kms::tests::test_generate_compressed_fhe_keys 147ms
engine::centralized::central_kms::tests::user_decrypt_with_bad_client_key 62ms
engine::centralized::central_kms::tests::user_decrypt_with_bad_ephemeral_key 53ms
engine::centralized::central_kms::tests::user_decrypt_with_bad_sig_key 57ms
engine::centralized::service::crs_gen::tests::already_exists 21.0s
engine::centralized::service::crs_gen::tests::invalid_argument 9ms
engine::centralized::service::crs_gen::tests::not_found 8ms
engine::centralized::service::crs_gen::tests::resource_exhausted 8ms
engine::centralized::service::crs_gen::tests::sunshine 789ms
engine::centralized::service::decryption::test_user_decryption::already_exists 21.1s
engine::centralized::service::decryption::test_user_decryption::invalid_argument 114ms
engine::centralized::service::decryption::test_user_decryption::not_found 106ms
engine::centralized::service::decryption::test_user_decryption::resource_exhausted 112ms
engine::centralized::service::decryption::test_user_decryption::sunshine 110ms
engine::centralized::service::decryption::tests_public_decryption::already_exists 113ms
engine::centralized::service::decryption::tests_public_decryption::invalid_argument 107ms
engine::centralized::service::decryption::tests_public_decryption::not_found 108ms
engine::centralized::service::decryption::tests_public_decryption::resource_exhausted 110ms
engine::centralized::service::decryption::tests_public_decryption::sunshine 111ms
engine::centralized::service::initiator::tests::already_exists 9ms
engine::centralized::service::initiator::tests::invalid_argument 8ms
engine::centralized::service::initiator::tests::sunshine 7ms
engine::centralized::service::key_gen::tests::already_exists 101ms
engine::centralized::service::key_gen::tests::invalid_argument 9ms
engine::centralized::service::key_gen::tests::not_found 105ms
engine::centralized::service::key_gen::tests::resource_exhausted 9ms
engine::centralized::service::key_gen::tests::sunshine 103ms
engine::centralized::service::preprocessing::tests::already_exists 9ms
engine::centralized::service::preprocessing::tests::invalid_argument 8ms
engine::centralized::service::preprocessing::tests::not_found 8ms
engine::centralized::service::preprocessing::tests::resource_exhausted 7ms
engine::centralized::service::preprocessing::tests::sunshine 8ms
engine::context::tests::parse_software_semantic_version 6ms
engine::context::tests::test_context_info_duplicate_party_ids 7ms
engine::context::tests::test_software_version_display 5ms
engine::context::tests::test_software_version_equality 5ms
engine::context::tests::test_software_version_major_comparison 5ms
engine::context::tests::test_software_version_minor_comparison 5ms
engine::context::tests::test_software_version_no_tag 5ms
engine::context::tests::test_software_version_patch_comparison 6ms
engine::context::tests::test_software_version_unordered_tag 6ms
engine::context_manager::tests::test_centralized_context_cache 7ms
engine::context_manager::tests::test_centralized_context_exists_and_consistent 7ms
engine::context_manager::tests::test_centralized_multiple_contexts 8ms
engine::context_manager::tests::test_custodian_context 12ms
engine::context_manager::tests::test_gen_recovery_request_payloads 9ms
engine::context_manager::tests::test_kms_context 7ms
engine::context_manager::tests::test_kms_context_load_from_storage 7ms
engine::keyset_configuration::tests::test_internal_keyset_config_decompression_only_missing_added_info 5ms
engine::keyset_configuration::tests::test_internal_keyset_config_decompression_only_with_added_info_missing_ids 5ms
engine::keyset_configuration::tests::test_internal_keyset_config_decompression_only_with_added_info_with_ids 5ms
engine::keyset_configuration::tests::test_internal_keyset_config_none_defaults_to_standard 5ms
engine::keyset_configuration::tests::test_internal_keyset_config_standard_default 5ms
engine::keyset_configuration::tests::test_internal_keyset_config_standard_use_existing_missing_added_info 5ms
engine::keyset_configuration::tests::test_internal_keyset_config_standard_use_existing_with_added_info_missing_ids 5ms
engine::keyset_configuration::tests::test_internal_keyset_config_standard_use_existing_with_added_info_with_ids 5ms
engine::keyset_configuration::tests::test_new_decompression_only_unparseable_from_id 5ms
engine::keyset_configuration::tests::test_new_decompression_only_unparseable_to_id 6ms
engine::keyset_configuration::tests::test_new_use_existing_compression_sk_unparseable_epoch 5ms
engine::keyset_configuration::tests::test_new_use_existing_compression_sk_unparseable_key_id 5ms
engine::keyset_configuration::tests::test_new_use_existing_compression_sk_valid 5ms
engine::keyset_configuration::tests::test_new_use_existing_compression_sk_with_epoch 5ms
engine::keyset_configuration::tests::test_new_use_existing_unparseable_epoch_id 5ms
engine::migration::tests::legacy_prss 6ms
engine::migration::tests::test_migrate_centralized_file 7ms
engine::migration::tests::test_migrate_centralized_ram 5ms
engine::migration::tests::test_migrate_idempotent_file 7ms
engine::migration::tests::test_migrate_idempotent_ram 5ms
engine::migration::tests::test_migrate_no_legacy_data_file 5ms
engine::migration::tests::test_migrate_no_legacy_data_ram 5ms
engine::migration::tests::test_migrate_skips_existing_file 7ms
engine::migration::tests::test_migrate_skips_existing_ram 5ms
engine::migration::tests::test_migrate_threshold_file 7ms
engine::migration::tests::test_migrate_threshold_ram 5ms
engine::threshold::service::crs_generator::tests::already_exists 23.0s
engine::threshold::service::crs_generator::tests::internal_failure 8ms
engine::threshold::service::crs_generator::tests::invalid_argument 7ms
engine::threshold::service::crs_generator::tests::not_found 6ms
engine::threshold::service::crs_generator::tests::resource_exhausted 6ms
engine::threshold::service::crs_generator::tests::sunshine 47ms
engine::threshold::service::crs_generator::tests::unavailable 1m 23s
engine::threshold::service::epoch_manager::tests::already_exists 8ms
engine::threshold::service::epoch_manager::tests::invalid_argument 7ms
engine::threshold::service::epoch_manager::tests::load_all_prss 7ms
engine::threshold::service::epoch_manager::tests::not_found 6ms
engine::threshold::service::epoch_manager::tests::prss_from_storage_test 30.0s
engine::threshold::service::epoch_manager::tests::sunshine 8ms
engine::threshold::service::epoch_manager::tests::test_destroy_epoch_not_found 7ms
engine::threshold::service::epoch_manager::tests::test_destroy_epoch_success 7ms
engine::threshold::service::epoch_manager::tests::test_resource_exhausted 7ms
engine::threshold::service::epoch_manager::tests::test_verify_epoch_info 6ms
engine::threshold::service::key_generator::tests::aborted 6ms
engine::threshold::service::key_generator::tests::already_exists 38.0s
engine::threshold::service::key_generator::tests::internal 8ms
engine::threshold::service::key_generator::tests::invalid_argument 32.0s
engine::threshold::service::key_generator::tests::not_found 32.0s
engine::threshold::service::key_generator::tests::resource_exhausted 32.0s
engine::threshold::service::key_generator::tests::sunshine 102ms
engine::threshold::service::preprocessor::tests::already_exists 26.0s
engine::threshold::service::preprocessor::tests::internal 9ms
engine::threshold::service::preprocessor::tests::invalid_argument 7ms
engine::threshold::service::preprocessor::tests::not_found 7ms
engine::threshold::service::preprocessor::tests::resource_exhausted 7ms
engine::threshold::service::preprocessor::tests::sunshine 719ms
engine::threshold::service::public_decryptor::tests::already_exists 86ms
engine::threshold::service::public_decryptor::tests::invalid_argument 83ms
engine::threshold::service::public_decryptor::tests::not_found 86ms
engine::threshold::service::public_decryptor::tests::sunshine 90ms
engine::threshold::service::public_decryptor::tests::test_resource_exhausted 82ms
engine::threshold::service::reshare_utils::tests::bad_digests_get_verified_public_materials 26ms
engine::threshold::service::reshare_utils::tests::bad_digests_get_verified_public_materials_compressed 88ms
engine::threshold::service::reshare_utils::tests::empty_storage_fetch_public_materials_from_peers 30ms
engine::threshold::service::reshare_utils::tests::sunshine_fetch_public_materials_from_peers 30ms
engine::threshold::service::reshare_utils::tests::sunshine_fetch_public_materials_from_peers_compressed 89ms
engine::threshold::service::reshare_utils::tests::sunshine_get_verified_public_materials 14ms
engine::threshold::service::reshare_utils::tests::sunshine_get_verified_public_materials_compressed 86ms
engine::threshold::service::reshare_utils::tests::test_find_region 7ms
engine::threshold::service::reshare_utils::tests::test_split_devnet_url 6ms
engine::threshold::service::reshare_utils::tests::wrong_digest_fetch_public_materials_from_peers 21ms
engine::threshold::service::reshare_utils::tests::wrong_digest_fetch_public_materials_from_peers_compressed 90ms
engine::threshold::service::user_decryptor::tests::already_exists 80ms
engine::threshold::service::user_decryptor::tests::invalid_argument 85ms
engine::threshold::service::user_decryptor::tests::not_found 87ms
engine::threshold::service::user_decryptor::tests::resource_exhausted 79ms
engine::threshold::service::user_decryptor::tests::sunshine 109ms
engine::utils::tests::test_metriced_error_creation 7ms
engine::utils::tests::test_metriced_error_drop_logging 7ms
engine::utils::tests::test_metriced_error_no_dropping 6ms
engine::validation_non_wasm::tests::test_max_num_bits_verification 6ms
engine::validation_non_wasm::tests::test_select_most_common_dec 6ms
engine::validation_non_wasm::tests::test_validate_public_decrypt_meta_response 8ms
engine::validation_non_wasm::tests::test_validate_public_decrypt_req 6ms
engine::validation_non_wasm::tests::test_validate_public_decrypt_responses 8ms
engine::validation_non_wasm::tests::test_validate_public_decrypt_responses_against_request 9ms
engine::validation_non_wasm::tests::test_validate_request_id 5ms
engine::validation_non_wasm::tests::test_validate_user_decrypt_req 7ms
engine::validation_non_wasm::tests::test_verify_user_decrypt_eip712 7ms
engine::validation_wasm::tests::test_check_ext_user_decryption_signature 9ms
engine::validation_wasm::tests::test_select_most_common_user_dec 6ms
engine::validation_wasm::tests::test_validate_user_decrypt_meta_data_and_signature 7ms
engine::validation_wasm::tests::test_validate_user_decrypt_responses 24ms
engine::validation_wasm::tests::test_validate_user_decrypt_responses_against_request 10ms
grpc::tests::regression_tests::test_request_id_compile_time_interface_stability 6ms
grpc::tests::regression_tests::test_request_id_core_structure_and_api_consistency 6ms
grpc::tests::regression_tests::test_request_id_validation_and_error_handling 6ms
grpc::tests::unit_tests::test_get_meta_store_info_with_real_stores 6ms
grpc::tests::unit_tests::test_get_meta_store_info_with_unavailable_stores 6ms
grpc::tests::unit_tests::test_list_requests_invalid_store_type 6ms
grpc::tests::unit_tests::test_list_requests_pagination 5ms
grpc::tests::unit_tests::test_list_requests_with_real_stores 6ms
grpc::tests::unit_tests::test_list_requests_with_unavailable_stores 6ms
grpc::tests::unit_tests::test_service_with_mixed_store_availability 6ms
testing::material::manager::tests::test_setup_centralized_material 19ms
testing::material::manager::tests::test_setup_threshold_material 33ms
testing::material::spec::tests::test_centralized_basic_spec 6ms
testing::material::spec::tests::test_comprehensive_spec 6ms
testing::material::spec::tests::test_key_type_covers_all_priv_data_types 5ms
testing::material::spec::tests::test_key_type_covers_all_pub_data_types 6ms
testing::material::spec::tests::test_serialization 6ms
testing::material::spec::tests::test_threshold_basic_spec 5ms
testing::material::spec::tests::test_threshold_default_no_prss_spec 5ms
testing::material::spec::tests::test_threshold_default_spec_requires_prss 6ms
testing::utils::test_purge 8ms
util::file_handling::tests::read_write_element 6ms
util::file_handling::tests::read_write_text 6ms
util::key_setup::tests::test_max_num_bits 4.6s
util::meta_store::tests::auto_remove 7ms
util::meta_store::tests::delete 6ms
util::meta_store::tests::double_insert 6ms
util::meta_store::tests::sunshine 6ms
util::meta_store::tests::test_kickout_of_errors 6ms
util::meta_store::tests::test_subscription 5.0s
util::meta_store::tests::too_many_elements 7ms
util::random_free_port::tests::test_random_free_ports 7ms
util::rate_limiter::tests::test_rate_limiting_1 6ms
util::rate_limiter::tests::test_rate_limiting_more 6ms
util::rate_limiter::tests::test_rate_limiting_refusal 6ms
util::retry::tests::fatal_loop_fails 51ms
util::retry::tests::retry_loop_fails 52ms
util::retry::tests::sunshine_fatal_loop 63ms
util::retry::tests::sunshine_retry_loop 63ms
vault::keychain::secretsharing::tests::test_encrypt_and_decrypt_roundtrip 7ms
vault::keychain::secretsharing::tests::test_new_keychain_without_pub_storage 6ms
vault::keychain::secretsharing::tests::test_operator_public_key_bytes_error 6ms
vault::keychain::secretsharing::tests::test_set_and_get_backup_enc_key 6ms
vault::keychain::tests::test_verify_root_key_measurements 6ms
vault::storage::crypto_material::tests::read_guarded_crypto_material_from_cache_not_found 6ms
vault::storage::crypto_material::tests::read_guarded_threshold_fhe_keys_not_found 6ms
vault::storage::crypto_material::tests::read_public_key 6ms
vault::storage::crypto_material::tests::write_central_keys 17ms
vault::storage::crypto_material::tests::write_crs 419ms
vault::storage::crypto_material::tests::write_threshold_empty_update 83ms
vault::storage::crypto_material::tests::write_threshold_keys_failed_storage 74ms
vault::storage::crypto_material::tests::write_threshold_keys_meta_update 79ms
vault::storage::file::tests::storage_helper_methods::threshold_1_true 15ms
vault::storage::file::tests::storage_helper_methods::threshold_2_false 14ms
vault::storage::file::tests::test_all_data_ids_from_all_epochs_file 9ms
vault::storage::file::tests::test_delete_at_epoch_keeps_dir_when_not_empty 8ms
vault::storage::file::tests::test_delete_at_epoch_removes_empty_epoch_dir 8ms
vault::storage::file::tests::test_epoch_storage 8ms
vault::storage::file::tests::test_overwrite_logic_files 8ms
vault::storage::file::tests::test_store_bytes_at_epoch_does_not_overwrite_file 8ms
vault::storage::file::tests::test_store_load_bytes_at_epoch_file 8ms
vault::storage::ram::tests::storage_helper_methods 6ms
vault::storage::ram::tests::test_all_data_ids_from_all_epochs_ram 6ms
vault::storage::ram::tests::test_overwrite_logic_ram 6ms
vault::storage::ram::tests::test_overwrite_logic_ram_on_epoch 6ms
vault::storage::ram::tests::test_store_load_bytes_at_epoch_ram 6ms
vault::storage::tests::ordered_map 5ms
vault::tests::regression_test_vault_data_type_serialization 5ms
test_backward_compatibility_kms_grpc 4ms
test_backward_compatibility_threshold_fhe 67ms
test_backward_compatibility_kms 680ms
tests::test_parse_hex 4ms
tests::test_invalid_hex 4ms
tests::test_core_client_config 4ms
crsgen::tests::test_eip712_sigs 456ms

🍂 No flaky tests in this run.

Github Test Reporter by CTRF 💚

🔄 This comment has been updated

@maksymsur maksymsur force-pushed the maksymsur/feat/2902/tests-stats branch from 47de3da to e2e8779 Compare February 19, 2026 10:15
@maksymsur maksymsur changed the title chore: reactivate hanging test and add more logging for debug chore: reactivate hanging test and gather stats for old vs new tests infra Feb 19, 2026
@maksymsur maksymsur force-pushed the maksymsur/feat/2902/tests-stats branch 10 times, most recently from 3d1ecd9 to 2cab5f9 Compare February 25, 2026 10:36
@maksymsur maksymsur force-pushed the maksymsur/feat/2902/tests-stats branch from 2cab5f9 to 1f60535 Compare February 25, 2026 11:48
@maksymsur maksymsur changed the title chore: reactivate hanging test and gather stats for old vs new tests infra chore: refine testing infrastructure Feb 25, 2026
@maksymsur maksymsur marked this pull request as ready for review February 25, 2026 11:57
@maksymsur maksymsur requested review from a team as code owners February 25, 2026 11:57
@maksymsur maksymsur changed the title chore: refine testing infrastructure chore: refine testing infrastructure and tests exec time comparison Feb 25, 2026
Copy link
Contributor

@dvdplm dvdplm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Truly excellent documentation all around, nice.

Left some comments here and there.

fn wait_for_ports_free(ports: &[u16], timeout: Duration) {
let deadline = Instant::now() + timeout;
for &port in ports {
while Instant::now() < deadline {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't this mean that if one of the ports in ports is slow to free, then this single slow port will "consume" the deadline?
I think it's more correct to check all ports in the same iteration, sort of like so:

loop {
  if ports.iter().all(|&p| port_is_bindable(DOCKER_ADDR, p) { return Ok(()) }
  // Now check deadline, bail with error if reached
  if Instant::now() >= deadline { … … … }
  thread::sleep(sleep);
}

Overkill I guess but we should be able to check the ports in parallel too yeah?

let deadline = Instant::now() + timeout;
for &port in ports {
while Instant::now() < deadline {
if TcpStream::connect(("127.0.0.1", port)).is_err() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Isn't it faster and more accurate to bind() rather than connect? It should be roughly the same for most cases, but if there's any weirdness on the network, connect could be slow/fail, when bind succeeds. And bind is what we actually need yeah?
  • Are we positive that Docker binds to 127.0.0.1:PORT and not 0.0.0.0::PORT? By only probing loopback, wouldn't we miss services that bind to all interfaces?

DockerComposeCmd { root_path, mode }
}

fn ports_for_mode(&self) -> &'static [u16] {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe this function could be const?

#[test_context(DockerComposeThresholdDefault)]
#[tokio::test]
#[serial(docker)]
#[ignore]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So we run this manually only, i.e. someone must go in here and remove the #[ignore]?

Comment on lines +1850 to +1851
let temp_dir = tempfile::tempdir().unwrap();
let keys_folder = temp_dir.path();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🥇

}
}

/// Decrypt a ciphertext file via threshold MPC, verifying the result matches the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/// Decrypt a ciphertext file via threshold MPC, verifying the result matches the
/// Decrypt a ciphertext file via threshold MPC, verifying that the result matches the

Comment on lines +265 to +266
/// Mark test as passed and print summary.
fn pass(self) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe K8sTestContext should have a passed: bool member that defaults to false and that we can check here? Like it stands, if a sloppy developer calls ctx.pass() it is marked as passed even though it perhaps never even ran?

Comment on lines +308 to +310
let key1 = ctx.insecure_keygen().await;
let key2 = ctx.insecure_keygen().await;
let key3 = ctx.insecure_keygen().await;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't we tokio::join! on these and run them concurrently? If they do mostly I/O it might be a bit faster?

required-features = ["testing"]

[[test]]
name = "kubernetes_test_centralized"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider using k8s instead of the full kubernetes. :)

// Use the same longer wait window as preprocessing so each client poll
// covers more computation time.
pub const DURATION_WAITING_ON_KEYGEN_RESULT_SECONDS: u64 = 300;

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given these are pub values, why not use doc-comments (///)?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed The CLA has been signed.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants