Important
Under active development. Not production-ready.
# Check prerequisites
inferadb dev doctor
# Start development cluster
inferadb dev start
# Run tests
cargo test --test integration -- --test-threads=1
# Stop cluster (preserves data)
inferadb dev stop
# Destroy cluster completely
inferadb dev stop --destroyRun specific suites:
cargo test --test integration auth_jwt -- --test-threads=1
cargo test --test integration vault_isolation -- --test-threads=1
cargo test --test integration cache -- --test-threads=1| Category | Tests | Scope |
|---|---|---|
| Authentication | 7 | JWT validation, Ed25519, expiration, scopes |
| Vault Isolation | 4 | Multi-tenant separation, cross-vault prevention |
| Cache Behavior | 4 | Hit/miss patterns, expiration, concurrency |
| Concurrency | 5 | Parallel requests, race conditions |
| E2E Workflows | 2 | Registration → authorization flows |
| Management | 5 | Org suspension, client deactivation |
| Resilience | 6 | Recovery, degradation, error propagation |
The development cluster is managed via the InferaDB CLI:
| Command | Purpose |
|---|---|
inferadb dev doctor |
Check development prerequisites |
inferadb dev start |
Start local Talos cluster |
inferadb dev stop |
Pause cluster (preserves data) |
inferadb dev stop --destroy |
Destroy cluster and data |
inferadb dev status |
Show cluster status |
inferadb dev logs |
View cluster logs |
inferadb dev reset |
Reset all cluster data |
Tests use K8s service DNS. Override for local development:
| Variable | Default (in K8s) | Purpose |
|---|---|---|
CONTROL_URL |
http://inferadb-control:9090 |
Control HTTP endpoint |
ENGINE_URL |
http://inferadb-engine:8080 |
Engine HTTP endpoint |
ENGINE_GRPC_URL |
http://inferadb-engine:8081 |
Engine gRPC endpoint |
ENGINE_MESH_URL |
http://inferadb-engine:8082 |
Engine mesh endpoint |
#[tokio::test]
async fn test_my_feature() {
let fixture = TestFixture::create().await.expect("setup failed");
let jwt = fixture.generate_jwt(None, &["inferadb.check"]).unwrap();
let response = fixture
.call_engine_evaluate(&jwt, "document:1", "viewer", "user:alice")
.await
.unwrap();
assert_eq!(response.status(), StatusCode::OK);
}| Issue | Solution |
|---|---|
| Services not starting | inferadb dev status or inferadb dev logs |
| Port in use | inferadb dev stop --destroy && inferadb dev start |
| Tests timing out | Ensure Docker has 4GB+ RAM; check inferadb dev logs |
| Prerequisites missing | Run inferadb dev doctor to check requirements |
Join us on Discord for questions, discussions, and contributions.
Dual-licensed under MIT or Apache 2.0.
