name: VantaDB Heavy Certification
on:
workflow_dispatch:
inputs:
include_sift:
description: "Run SIFT-1M validation (requires dataset download)"
type: boolean
default: false
include_competitive:
description: "Run competitive benchmarks"
type: boolean
default: false
schedule:
- cron: "0 3 * * 0"
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
jobs:
stress-protocol:
name: "Certification: stress_protocol"
runs-on: ubuntu-latest
timeout-minutes: 180
steps:
- uses: ./.github/actions/rust-setup
with:
swap-mb: 8192
free-disk: true
- name: Run stress protocol
timeout-minutes: 150
run: cargo test --release --test stress_protocol -- --nocapture --test-threads=1
hnsw-validation:
name: "Certification: hnsw_validation"
runs-on: ubuntu-latest
timeout-minutes: 120
steps:
- uses: ./.github/actions/rust-setup
with:
swap-mb: 8192
free-disk: true
- name: Run HNSW validation
run: cargo test --release --test hnsw_validation -- --nocapture --test-threads=1
hnsw-recall:
name: "Certification: hnsw_recall_certification"
runs-on: ubuntu-latest
timeout-minutes: 40
steps:
- uses: ./.github/actions/rust-setup
with:
free-disk: true
- name: Run HNSW recall certification
timeout-minutes: 25
run: cargo test --release --test hnsw_recall_certification -- --nocapture --test-threads=1
sift-validation:
name: "Certification: sift_validation"
if: ${{ github.event_name == 'workflow_dispatch' && inputs.include_sift == true }}
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: ./.github/actions/rust-setup
- name: Run SIFT validation
timeout-minutes: 30
run: cargo test --release --test sift_validation -- --nocapture --test-threads=1
competitive-bench:
name: "Certification: competitive_bench"
if: ${{ github.event_name == 'workflow_dispatch' && inputs.include_competitive == true }}
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: ./.github/actions/rust-setup
- name: Run competitive benchmark
timeout-minutes: 30
run: cargo test --release --test competitive_bench -- --nocapture --test-threads=1
failpoint-tests:
name: "Certification: failpoint_injections"
runs-on: ubuntu-latest
concurrency:
group: failpoints-${{ github.ref }}
cancel-in-progress: true
steps:
- uses: ./.github/actions/rust-setup
- name: Install nextest
uses: taiki-e/install-action@v2
with:
tool: nextest
- name: Run failpoint tests
env:
RUST_BACKTRACE: 1
run: |
cargo nextest run --test chaos_integrity --features failpoints --test-threads=1
cargo nextest run --test wal_resilience --test-threads=1
cargo nextest run --test crash_injection --test-threads=1
storage-persistence:
name: "Certification: storage_persistence"
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- uses: ./.github/actions/rust-setup
with:
swap-mb: 4096
free-disk: true
- name: Run storage persistence & recovery tests
timeout-minutes: 75
run: >
cargo test --release --features cli
--test backend_tests
--test storage
--test durability_recovery
--test derived_index_recovery
--test index_reconstruction
--test fjall_cold_copy_restore
--test property_durability
--test file_locking_stress
--test schema_evolution
--test gc
--test mmap_index
--test mutations
--test antilocality_layout
--test tombstone_ann_vstore
--test multi_process_lock
--test operational_metrics
--test prefetch_benchmark
--
--test-threads=1
text-index:
name: "Certification: text_index_recovery"
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: ./.github/actions/rust-setup
with:
swap-mb: 4096
- name: Run text index recovery tests
timeout-minutes: 45
run: cargo test --release --test text_index_recovery -- --test-threads=1 --nocapture
memory-concurrency:
name: "Certification: memory_concurrency"
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: ./.github/actions/rust-setup
with:
swap-mb: 4096
- name: Run memory & concurrency heavy tests
timeout-minutes: 45
run: >
cargo test --release
--test memory_brutality
--test memory_export_import
--test concurrency_parity
--test memory_api
--test memory_telemetry
--test edge_cases
--test fuzz_proptest
--
--test-threads=1
other-heavy:
name: "Certification: other_heavy"
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- uses: ./.github/actions/rust-setup
with:
swap-mb: 4096
free-disk: true
- name: Run remaining heavy tests
timeout-minutes: 45
run: |
cargo test --release --features cli,arrow \
--test benchmark_internal \
--test benchmark_datasets \
--test cli_tests \
--test structured_api_v2 \
--test python_sdk_boundary \
--test hybrid_ranking_metrics \
--test hybrid_retrieval_quality \
--test basic_node \
--test hardware_profiles \
--test vector_scale_check \
--test integration \
--test multilingual_tokenizer_integration \
--test columnar \
-- \
--test-threads=1
cargo test --release \
--package vantadb-server \
--test mcp_integration \
--test e2e \
--test benchmarks \
--test server \
-- \
--test-threads=1
cargo test --release \
--package vantadb-mcp \
--test mcp_tests \
-- \
--test-threads=1
cargo test --release \
--package vantadb \
--lib index::tests::concurrent_insert_preserves_hnsw_invariants \
-- \
--nocapture