From 64bfcc70ed35482f074b74b95e09f6a0eaf688a8 Mon Sep 17 00:00:00 2001 From: qima Date: Fri, 8 Nov 2024 05:29:40 +0800 Subject: [PATCH] chore(test): re-enable can_store_after_restart test --- .github/workflows/merge.yml | 17 +++++++++++++++-- sn_networking/src/record_store.rs | 17 +++++++++++------ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/.github/workflows/merge.yml b/.github/workflows/merge.yml index 14c2e55821..588d9750b3 100644 --- a/.github/workflows/merge.yml +++ b/.github/workflows/merge.yml @@ -128,13 +128,26 @@ jobs: timeout-minutes: 25 run: cargo test --release --package sn_node --lib + # The `can_store_after_restart` can be executed with other package tests together and passing + # on local machine. However keeps failing (when executed together) on CI machines. + # This is most likely due to the setup and cocurrency issues of the tests. + # As the `record_store` is used in a single thread style, get the test passing executed + # and passing standalone is enough. - name: Run network tests (with encrypt-records) timeout-minutes: 25 - run: cargo test --release --package sn_networking --features="open-metrics, encrypt-records" + run: cargo test --release --package sn_networking --features="open-metrics, encrypt-records" -- --skip can_store_after_restart + + - name: Run network tests (with encrypt-records) + timeout-minutes: 5 + run: cargo test --release --package sn_networking --features="open-metrics, encrypt-records" can_store_after_restart - name: Run network tests (without encrypt-records) timeout-minutes: 25 - run: cargo test --release --package sn_networking --features="open-metrics" + run: cargo test --release --package sn_networking --features="open-metrics" -- --skip can_store_after_restart + + - name: Run network tests (without encrypt-records) + timeout-minutes: 5 + run: cargo test --release --package sn_networking --features="open-metrics" can_store_after_restart - name: Run protocol tests timeout-minutes: 25 diff --git a/sn_networking/src/record_store.rs b/sn_networking/src/record_store.rs index e3eb672d6c..d5101a7a23 100644 --- a/sn_networking/src/record_store.rs +++ b/sn_networking/src/record_store.rs @@ -1043,7 +1043,10 @@ mod tests { use bls::SecretKey; use xor_name::XorName; - use assert_fs::TempDir; + use assert_fs::{ + fixture::{PathChild, PathCreateDir}, + TempDir, + }; use bytes::Bytes; use eyre::{bail, ContextCompat}; use libp2p::kad::K_VALUE; @@ -1245,11 +1248,13 @@ mod tests { } #[tokio::test] - #[ignore = "fails on ci"] async fn can_store_after_restart() -> eyre::Result<()> { - let temp_dir = TempDir::new().expect("Should be able to create a temp dir."); + let tmp_dir = TempDir::new()?; + let current_test_dir = tmp_dir.child("can_store_after_restart"); + current_test_dir.create_dir_all()?; + let store_config = NodeRecordStoreConfig { - storage_dir: temp_dir.to_path_buf(), + storage_dir: current_test_dir.to_path_buf(), encryption_seed: [1u8; 16], ..Default::default() }; @@ -1290,7 +1295,7 @@ mod tests { assert!(stored_record.is_some(), "Chunk should be stored"); // Sleep a while to let OS completes the flush to disk - sleep(Duration::from_secs(1)).await; + sleep(Duration::from_secs(5)).await; // Restart the store with same encrypt_seed drop(store); @@ -1311,7 +1316,7 @@ mod tests { // Restart the store with different encrypt_seed let self_id_diff = PeerId::random(); let store_config_diff = NodeRecordStoreConfig { - storage_dir: temp_dir.to_path_buf(), + storage_dir: current_test_dir.to_path_buf(), encryption_seed: [2u8; 16], ..Default::default() };