[package]
name = "kimberlite-test-harness"
description = "Phase-1 test harness wrapping Kimberlite::open + in-process server behind a builder API"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true

[lints]
workspace = true

[dependencies]
# Internal crates. Regular (non-dev) deps REQUIRE a version on publish,
# so these use the workspace-versioned form. test-harness publishes
# LAST (after kimberlite-server) in release.yml's publish order — see
# the Tier 6 block there.
kimberlite.workspace = true
kimberlite-server.workspace = true
kimberlite-client.workspace = true
kimberlite-types.workspace = true
kimberlite-wire.workspace = true

# Core
tempfile.workspace = true
thiserror.workspace = true

[[bin]]
# ROADMAP v0.5.1 — thin IPC launcher that spins up a `TestKimberlite`
# and emits `ADDR=127.0.0.1:<port>` on stdout. Used by the
# `@kimberlitedb/testing` TS subpackage and the `kimberlite.testing`
# Python module so both SDKs can share a single Rust codebase.
name = "kimberlite-test-harness-cli"
path = "src/bin/harness.rs"

[[bench]]
# v0.6.0 Tier 1 #1 — cold spin-up + 1k INSERT + 1k SELECT timings for
# both `Backend::TempDir` and `Backend::InMemory`. Acceptance target:
# InMemory end-to-end under 200ms. Run via
# `cargo bench -p kimberlite-test-harness harness_memory_vs_tempdir`.
name = "harness_memory_vs_tempdir"
harness = false

[dev-dependencies]
tokio = { workspace = true, features = ["full"] }
# v0.6.0 — bench crate + client for the memory-vs-tempdir comparison
# (both for the Criterion bench and the `tests/memory_perf_gate.rs`
# integration test that acts as a CI-friendly acceptance gate).
criterion = { version = "0.8", features = ["html_reports"] }
kimberlite-client = { path = "../kimberlite-client" }
