From c5080b09bcc4a27eaa7ff4c9cae8f4126377b6aa Mon Sep 17 00:00:00 2001 From: Shariq Naiyer Date: Sun, 22 Feb 2026 19:46:11 -0700 Subject: [PATCH 1/3] fix: slow test --- .github/workflows/nightly.yml | 36 +++++++++++++++++++ .../src/lean_multisig/aggregate.rs | 1 + .../post_quantum/src/leansig/private_key.rs | 1 + .../post_quantum/src/leansig/signature.rs | 1 + 4 files changed, 39 insertions(+) create mode 100644 .github/workflows/nightly.yml diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 000000000..0a7b613c7 --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,36 @@ +name: Nightly + +on: + schedule: + - cron: "0 2 * * *" + workflow_dispatch: + +env: + CARGO_TERM_COLOR: always + +jobs: + slow-tests: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: Swatinem/rust-cache@v2 + with: + cache-on-failure: true + + - name: Run slow tests (generate_key_pair) + run: cargo test --release --workspace -- --ignored --nocapture + + slow-tests-devnet3: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: Swatinem/rust-cache@v2 + with: + cache-on-failure: true + + - name: Run slow tests devnet3 + run: cargo test --release --workspace --no-default-features --features "devnet3" -- --ignored --nocapture --test-threads=1 diff --git a/crates/crypto/post_quantum/src/lean_multisig/aggregate.rs b/crates/crypto/post_quantum/src/lean_multisig/aggregate.rs index 61b36c243..1a697c36b 100644 --- a/crates/crypto/post_quantum/src/lean_multisig/aggregate.rs +++ b/crates/crypto/post_quantum/src/lean_multisig/aggregate.rs @@ -87,6 +87,7 @@ mod tests { }; #[test] + #[ignore = "slow: uses generate_key_pair, run in nightly CI"] fn test_aggregate_and_verify() { setup_prover(); setup_verifier(); diff --git a/crates/crypto/post_quantum/src/leansig/private_key.rs b/crates/crypto/post_quantum/src/leansig/private_key.rs index 5444b3734..e443fa810 100644 --- a/crates/crypto/post_quantum/src/leansig/private_key.rs +++ b/crates/crypto/post_quantum/src/leansig/private_key.rs @@ -110,6 +110,7 @@ mod tests { use crate::leansig::private_key::PrivateKey; #[test] + #[ignore = "slow: uses generate_key_pair, run in nightly CI"] fn test_sign_and_verify() { let mut rng = rng(); let activation_epoch = 0; diff --git a/crates/crypto/post_quantum/src/leansig/signature.rs b/crates/crypto/post_quantum/src/leansig/signature.rs index daa3857a2..d9d3c8cf9 100644 --- a/crates/crypto/post_quantum/src/leansig/signature.rs +++ b/crates/crypto/post_quantum/src/leansig/signature.rs @@ -81,6 +81,7 @@ mod tests { use crate::leansig::{private_key::PrivateKey, signature::Signature}; #[test] + #[ignore = "slow: uses generate_key_pair, run in nightly CI"] fn test_serialization_roundtrip() { let mut rng = rng(); let activation_epoch = 0; From 086bc97e28a7e9acc75b09f4c8549791a1b635c2 Mon Sep 17 00:00:00 2001 From: Shariq Naiyer Date: Sun, 22 Feb 2026 19:56:16 -0700 Subject: [PATCH 2/3] fix: turn off logs and run in parallel --- Makefile | 2 +- bin/ream/src/main.rs | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index dd9383b33..b0dac718c 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,7 @@ test-devnet2: # Run all tests for for Devnet 2. .PHONY: test-devnet3 test-devnet3: # Run all tests for for Devnet 3. - cargo test --workspace --no-default-features --features "devnet3" -- --nocapture --test-threads=1 + cargo test --workspace --no-default-features --features "devnet3" -- --nocapture .PHONY: fmt diff --git a/bin/ream/src/main.rs b/bin/ream/src/main.rs index 699d24a3b..ab903480d 100644 --- a/bin/ream/src/main.rs +++ b/bin/ream/src/main.rs @@ -881,10 +881,12 @@ mod tests { #[test] fn test_lean_node_finalizes() { - let _ = tracing_subscriber::fmt() - .with_env_filter(Verbosity::Info.directive()) - .with_test_writer() - .try_init(); + if false { + let _ = tracing_subscriber::fmt() + .with_env_filter(Verbosity::Info.directive()) + .with_test_writer() + .try_init(); + } let cli = Cli::parse_from([ "ream", @@ -994,7 +996,7 @@ mod tests { } fn run_multi_node_finalization_test(topology: Vec>, test_name: &str) { - if true { + if false { let _ = tracing_subscriber::fmt() .with_env_filter(Verbosity::Info.directive()) .with_test_writer() @@ -1183,7 +1185,7 @@ mod tests { let topology = [vec![], vec![0], vec![0, 1]]; let test_name = "late_joiner_sync"; - if true { + if false { let _ = tracing_subscriber::fmt() .with_env_filter(Verbosity::Info.directive()) .with_test_writer() From 6140e99aeb9db765ee3c0feaed903dd62d4ca2a0 Mon Sep 17 00:00:00 2001 From: Shariq Naiyer Date: Sun, 22 Feb 2026 19:59:31 -0700 Subject: [PATCH 3/3] fix: remove logs --- bin/ream/src/main.rs | 2 +- testing/lean-spec-tests/tests/tests.rs | 19 ------------------- 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/bin/ream/src/main.rs b/bin/ream/src/main.rs index ab903480d..021e1087e 100644 --- a/bin/ream/src/main.rs +++ b/bin/ream/src/main.rs @@ -1453,7 +1453,7 @@ mod tests { "REAM_KNOWN_GOOD_BIN path does not exist: {known_good_bin}" ); - if true { + if false { let _ = tracing_subscriber::fmt() .with_env_filter(Verbosity::Info.directive()) .with_test_writer() diff --git a/testing/lean-spec-tests/tests/tests.rs b/testing/lean-spec-tests/tests/tests.rs index 0172a501d..c9acd011c 100644 --- a/testing/lean-spec-tests/tests/tests.rs +++ b/testing/lean-spec-tests/tests/tests.rs @@ -4,7 +4,6 @@ use std::{env, fs, path::PathBuf}; use lean_spec_tests::fork_choice::{load_fork_choice_test, run_fork_choice_test}; use lean_spec_tests::state_transition::{load_state_transition_test, run_state_transition_test}; use tracing::{debug, error, info, warn}; -use tracing_subscriber::EnvFilter; /// Helper to find all JSON files in a directory recursively fn find_json_files(dir: &str) -> Vec { @@ -37,15 +36,6 @@ fn find_json_files(dir: &str) -> Vec { #[tokio::test] #[cfg(feature = "devnet2")] async fn test_all_fork_choice_fixtures() { - // Initialize tracing subscriber for test output - let env_filter = match env::var(EnvFilter::DEFAULT_ENV) { - Ok(filter) => EnvFilter::builder().parse_lossy(filter), - Err(_) => EnvFilter::new("info"), - }; - let _ = tracing_subscriber::fmt() - .with_env_filter(env_filter) - .try_init(); - let fixtures = find_json_files("fixtures/devnet2/fork_choice"); if fixtures.is_empty() { @@ -98,15 +88,6 @@ async fn test_all_fork_choice_fixtures() { #[test] fn test_all_state_transition_fixtures() { - // Initialize tracing subscriber for test output - let env_filter = match env::var(EnvFilter::DEFAULT_ENV) { - Ok(filter) => EnvFilter::builder().parse_lossy(filter), - Err(_) => EnvFilter::new("info"), - }; - let _ = tracing_subscriber::fmt() - .with_env_filter(env_filter) - .try_init(); - let fixtures = find_json_files("fixtures/devnet2/state_transition"); if fixtures.is_empty() {