diff --git a/.github/workflows/long_fuzz_tests_btree.yml b/.github/workflows/long_fuzz_tests_btree.yml new file mode 100644 index 000000000..dbf8006ef --- /dev/null +++ b/.github/workflows/long_fuzz_tests_btree.yml @@ -0,0 +1,30 @@ +name: Run long fuzz tests on Btree + +on: + push: + paths: + - 'core/storage/btree.rs' + pull_request: + paths: + - 'core/storage/btree.rs' + +jobs: + run-long-tests: + runs-on: ubuntu-latest + timeout-minutes: 0 + + steps: + - uses: actions/checkout@v3 + - uses: Swatinem/rust-cache@v2 + with: + prefix-key: "v1-rust" # can be updated if we need to reset caches due to non-trivial change in the dependencies (for example, custom env var were set for single workspace project) + - name: Set up Python 3.10 + uses: actions/setup-python@v5 + with: + python-version: "3.10" + - name: Build + run: cargo build --verbose + - name: Run ignored long tests + run: cargo test -- --ignored fuzz_long + env: + RUST_BACKTRACE: 1 \ No newline at end of file diff --git a/core/storage/btree.rs b/core/storage/btree.rs index ee3d8e698..6fe8c655c 100644 --- a/core/storage/btree.rs +++ b/core/storage/btree.rs @@ -6121,6 +6121,47 @@ mod tests { btree_insert_fuzz_run(64, 32, |rng| (rng.next_u32() % 32 * 1024) as usize); } + #[test] + #[ignore] + pub fn fuzz_long_btree_insert_fuzz_run_equal_size() { + for size in 1..8 { + tracing::info!("======= size:{} =======", size); + btree_insert_fuzz_run(2, 10_000, |_| size); + } + } + + #[test] + #[ignore] + pub fn fuzz_long_btree_index_insert_fuzz_run_equal_size() { + btree_index_insert_fuzz_run(2, 10_000); + } + + #[test] + #[ignore] + pub fn fuzz_long_btree_insert_fuzz_run_random() { + btree_insert_fuzz_run(128, 10_000, |rng| (rng.next_u32() % 4096) as usize); + } + + #[test] + #[ignore] + pub fn fuzz_long_btree_insert_fuzz_run_small() { + btree_insert_fuzz_run(1, 10_000, |rng| (rng.next_u32() % 128) as usize); + } + + #[test] + #[ignore] + pub fn fuzz_long_btree_insert_fuzz_run_big() { + btree_insert_fuzz_run(64, 10_000, |rng| { + 3 * 1024 + (rng.next_u32() % 1024) as usize + }); + } + + #[test] + #[ignore] + pub fn fuzz_long_btree_insert_fuzz_run_overflow() { + btree_insert_fuzz_run(64, 10_000, |rng| (rng.next_u32() % 32 * 1024) as usize); + } + #[allow(clippy::arc_with_non_send_sync)] fn setup_test_env(database_size: u32) -> (Rc, Arc>) { let page_size = 512;