Quick Test Guide - Multi-Tenancy¶
Quick reference for running multi-tenancy tests in HeliosDB-Lite.
Quick Commands¶
# Run all multi-tenancy tests (fastest)
cargo test --test multi_tenancy_tests
# Run REPL command tests
cargo test --test repl_tenant_commands
# Run unit tests in tenant module
cargo test --lib tenant::tests
# Run everything related to tenancy
cargo test tenant
# Run with output
cargo test --test multi_tenancy_tests -- --nocapture
# Run specific test
cargo test test_rls_prevents_cross_tenant_select
# Run benchmarks
cargo bench --bench multi_tenancy_bench
Test Categories¶
🔒 Critical Security Tests (MUST PASS)¶
# These tests ensure no data leakage between tenants
cargo test test_rls_prevents_cross_tenant_select
cargo test test_rls_prevents_cross_tenant_update
cargo test test_rls_prevents_cross_tenant_delete
cargo test test_cdc_multi_tenant_isolation
📊 Quota Enforcement Tests¶
cargo test test_connection_limit_enforced
cargo test test_storage_limit_enforced
cargo test test_qps_limit_enforced
cargo test test_quota_window_reset
📝 CDC Tests¶
cargo test test_cdc_captures_insert
cargo test test_cdc_captures_update
cargo test test_cdc_captures_delete
🔄 Migration Tests¶
Performance Benchmarks¶
# All benchmarks
cargo bench --bench multi_tenancy_bench
# RLS performance
cargo bench --bench multi_tenancy_bench -- rls
# Quota performance
cargo bench --bench multi_tenancy_bench -- quota
# CDC performance
cargo bench --bench multi_tenancy_bench -- cdc
# Save baseline for comparison
cargo bench --bench multi_tenancy_bench -- --save-baseline main
Coverage Report¶
# Install tarpaulin (first time only)
cargo install cargo-tarpaulin
# Generate coverage
cargo tarpaulin --out Html --output-dir coverage/ -- tenant
# Open coverage report
open coverage/index.html # macOS
xdg-open coverage/index.html # Linux
Continuous Integration¶
# CI-style test run (what GitHub Actions runs)
cargo test --test multi_tenancy_tests --test repl_tenant_commands --lib tenant::tests
cargo bench --bench multi_tenancy_bench --no-run
Test Statistics¶
- Total Integration Tests: 43
- Total Unit Tests: 35
- Total REPL Tests: 50+
- Total Benchmark Suites: 8
- Overall Coverage: ~100% for multi-tenancy features
Test Files¶
| File | Purpose | Test Count |
|---|---|---|
tests/multi_tenancy_tests.rs |
Integration tests | 43 |
tests/repl_tenant_commands.rs |
REPL command parsing | 50+ |
src/tenant/mod.rs (tests module) |
Unit tests | 35 |
benches/multi_tenancy_bench.rs |
Performance benchmarks | 8 groups |
Expected Test Duration¶
- Unit tests: ~0.5 seconds
- Integration tests: ~2-5 seconds
- REPL tests: ~1 second
- Benchmarks: ~5-10 minutes (all suites)
Common Issues¶
Tests Fail with "tenant_manager not found"¶
This usually means the EmbeddedDatabase hasn't been updated to include the tenant_manager field. Check that src/lib.rs exports the tenant module.
Benchmarks Take Too Long¶
Run specific benchmark groups:
Coverage Tool Errors¶
Ensure you're using a compatible Rust toolchain:
Next Steps¶
After running tests:
- Check test output for failures
- Run benchmarks to establish baseline
- Generate coverage report
- Review coverage gaps
- Add tests for any uncovered scenarios
Pre-Commit Checklist¶
Before committing changes:
# Format code
cargo fmt
# Run linter
cargo clippy -- -D warnings
# Run tests
cargo test tenant
# Run benchmarks (no-run to save time)
cargo bench --bench multi_tenancy_bench --no-run
Resources¶
- Full coverage report:
docs/testing/MULTI_TENANCY_TEST_COVERAGE.md - Test source:
tests/multi_tenancy_tests.rs - Benchmarks:
benches/multi_tenancy_bench.rs
Quick Tip: Use cargo test tenant -- --test-threads=1 to run tests serially if you encounter race conditions.