Adds two Criterion benchmarks targeting plan §8 requirements: - benches/rendezvous.rs: Rendezvous hash assignment performance - benches/merger.rs: Result merger performance These are microbenchmarks that don't require Docker. The end-to-end search latency and ingest throughput benchmarks are already covered by tests/integration_bench.rs which uses the full docker-compose stack. The benchmarks can be run with: cargo bench --bench rendezvous cargo bench --bench merger Closes: bf-3qv3n
126 lines
2.8 KiB
TOML
126 lines
2.8 KiB
TOML
[package]
|
|
name = "miroir-core"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
autobenches = false
|
|
|
|
[dependencies]
|
|
# Core serialization
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
serde_yaml = "0.9"
|
|
twox-hash = "2"
|
|
|
|
# Error handling and logging
|
|
thiserror = { workspace = true }
|
|
tracing = { workspace = true }
|
|
|
|
# UUIDs
|
|
uuid = { version = "1", features = ["v4", "serde"] }
|
|
|
|
# Configuration
|
|
config = "0.14"
|
|
|
|
# Crypto
|
|
rand = "0.8"
|
|
sha2 = "0.10"
|
|
hex = "0.4"
|
|
|
|
# Task store backends
|
|
rusqlite = { workspace = true }
|
|
redis = { version = "0.27", features = ["aio", "tokio-comp", "connection-manager"], optional = true }
|
|
|
|
# Async runtime
|
|
tokio = { version = "1", features = ["rt", "rt-multi-thread", "time", "sync", "macros", "fs", "io-util"] }
|
|
async-trait = "0.1"
|
|
futures-util = "0.3"
|
|
|
|
# HTTP
|
|
reqwest = { version = "0.12", features = ["json"], default-features = false }
|
|
urlencoding = "2"
|
|
|
|
# NATS (CDC sink)
|
|
async-nats = { version = "0.38", optional = true }
|
|
|
|
# Kafka (CDC sink)
|
|
rdkafka = { version = "0.37", features = ["tokio"], optional = true }
|
|
|
|
# Utilities
|
|
indexmap = "2"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
regex = "1"
|
|
|
|
# DNS peer discovery (optional)
|
|
trust-dns-resolver = { version = "0.12", optional = true }
|
|
|
|
# Axum integration (optional)
|
|
axum = { version = "0.7", optional = true }
|
|
|
|
# Raft prototype (P12.OP2 research) — not for production use
|
|
# openraft 0.9.22 fails on stable Rust 1.87 (validit uses let_chains).
|
|
# The prototype simulates Raft; only bincode is needed for serialization benchmarks.
|
|
bincode = { version = "2", features = ["serde"], optional = true }
|
|
|
|
[features]
|
|
default = []
|
|
raft-proto = ["bincode"]
|
|
redis-store = ["redis"]
|
|
axum = ["dep:axum"]
|
|
peer-discovery = ["trust-dns-resolver"]
|
|
nats-sink = ["async-nats"]
|
|
kafka-sink = ["rdkafka"]
|
|
test-helpers = []
|
|
|
|
# Enable when openraft compiles on stable Rust:
|
|
# raft-full = ["openraft", "bincode"]
|
|
# (openraft dep removed from manifest — restore when upstream fixes let_chains on stable)
|
|
|
|
[[bench]]
|
|
name = "reshard_load"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "score_comparability"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "merger_bench"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "router_bench"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "dfs_preflight_bench"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "end_to_end_bench"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "ingest_bench"
|
|
harness = false
|
|
|
|
# Plan §8 Criterion benchmarks
|
|
[[bench]]
|
|
name = "rendezvous"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "merger"
|
|
harness = false
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|
|
proptest = "1"
|
|
criterion = { workspace = true }
|
|
tokio = { version = "1", features = ["rt", "macros", "time"] }
|
|
testcontainers = "0.23"
|
|
testcontainers-modules = { version = "0.11", features = ["redis"] }
|
|
mockall = "0.13"
|
|
meilisearch-sdk = { workspace = true }
|
|
arbitrary = { version = "1", features = ["derive"] }
|