| Crates.io | embeddenator-testkit |
| lib.rs | embeddenator-testkit |
| version | 0.20.0 |
| created_at | 2026-01-09 23:04:21.329074+00 |
| updated_at | 2026-01-25 18:29:00.153693+00 |
| description | Comprehensive testing utilities and performance benchmarking for embeddenator VSA operations |
| homepage | |
| repository | https://github.com/tzervas/embeddenator-testkit |
| max_upload_size | |
| id | 2033121 |
| size | 600,926 |
Comprehensive testing utilities and performance benchmarking for embeddenator VSA operations.
Independent component extracted from the Embeddenator monolithic repository. Part of the Embeddenator workspace.
Repository: https://github.com/tzervas/embeddenator-testkit
Add to your Cargo.toml:
[dev-dependencies]
embeddenator-testkit = { path = "../embeddenator-testkit" }
use embeddenator_testkit::*;
use rand::thread_rng;
// Generate random sparse vector
let mut rng = thread_rng();
let vec = random_sparse_vec(&mut rng, 10000, 200);
// Generate deterministic vector for reproducible tests
let vec = deterministic_sparse_vec(10000, 200, 42);
use embeddenator_testkit::*;
let mut metrics = TestMetrics::new("bind_operation");
// Time an operation
metrics.start_timing();
let result = a.bind(&b);
metrics.stop_timing();
// Or use closure
let result = metrics.time_operation(|| a.bind(&b));
println!("{}", metrics.summary());
use embeddenator_testkit::*;
let validator = IntegrityValidator::new();
// Validate bitsliced vector invariants
let report = validator.validate_bitsliced(&vec);
assert!(report.is_ok());
// Validate bind commutativity
let report = validator.validate_bind_invariants(&a, &b);
println!("{}", report.summary());
use embeddenator_testkit::*;
let injector = ChaosInjector::new(42);
// Inject bitflips for resilience testing
let mut vec = vec.clone();
let flipped = injector.inject_bitflips(&mut vec, 10);
// Create corrupted copy
let corrupted = injector.corrupt_copy(&vec, 0.05); // 5% error rate
use embeddenator_testkit::*;
// Create test data with specific pattern
let data = create_test_data(100, TestDataPattern::Random); // 100MB
// Create test harness with automatic cleanup
let harness = TestHarness::new();
let dataset_dir = harness.create_dataset(500); // 500MB dataset
// Create specific files
let file = harness.create_file("test.bin", b"test data");
generatorsrandom_sparse_vec() - Generate random sparse vectorsdeterministic_sparse_vec() - Reproducible vector generationsparse_dot() - Reference dot product implementationgenerate_noise_pattern() - Synthetic noise datametricsTestMetrics - Performance measurement and statisticsTimingStats - Timing analysis (mean, median, percentiles)integrityIntegrityValidator - Verify VSA operation propertiesIntegrityReport - Validation results and diagnosticschaosChaosInjector - Inject errors for resilience testingfixturesTestDataPattern - Data pattern typescreate_test_data() - Generate test datacreate_test_dataset() - Multi-file test datasetsharnessTestHarness - Unified test managementThis testkit extracts and consolidates test utilities from:
embeddenator/src/testing/mod.rs - Performance metrics and integrity validationembeddenator/tests/common/bt_migration.rs - Vector generators and helpersembeddenator/tests/qa_comprehensive.rs - Test harness and dataset generationExample measurements from v0.20.0-alpha.1 on Intel i7-14700K, 46GB RAM. Your results will vary based on hardware, data patterns, and system load.
Run
cargo benchto establish baselines for your system.
Run the testkit's own tests:
cargo test --manifest-path embeddenator-testkit/Cargo.toml
Run with specific features:
cargo test --manifest-path embeddenator-testkit/Cargo.toml --features large-scale
MIT