[package]
name = "cdc"
version = "0.0.1"
edition = "2021"
publish = false
license = "Apache-2.0"

[features]
tcmalloc = ["tikv/tcmalloc"]
jemalloc = ["tikv/jemalloc"]
mimalloc = ["tikv/mimalloc"]
snmalloc = ["tikv/snmalloc"]
portable = ["tikv/portable"]
sse = ["tikv/sse"]
mem-profiling = ["tikv/mem-profiling"]
failpoints = ["tikv/failpoints"]

[dependencies]
api_version = { workspace = true }
bitflags = { workspace = true }
cloud_encryption = { workspace = true }
collections = { workspace = true }
concurrency_manager = { workspace = true }
crossbeam = { workspace = true }
engine_traits = { workspace = true }
fail = { workspace = true }
futures = { workspace = true }
getset = { workspace = true }
grpcio = { workspace = true }
keys = { workspace = true }
kvengine = { workspace = true }
kvenginepb = { workspace = true }
kvproto = { workspace = true }
lazy_static = { workspace = true }
log_wrappers = { workspace = true }
online_config = { workspace = true }
pd_client = { workspace = true }
prometheus = { workspace = true }
prometheus-static-metric = { workspace = true }
protobuf = { workspace = true }
raft = { workspace = true }
raftstore = { workspace = true }
resolved_ts = { workspace = true }
rfstore = { workspace = true }
security = { workspace = true }
semver = { workspace = true }
slog = { workspace = true }
slog-global = { workspace = true }
thiserror = { workspace = true }
tidb_query_datatype = { workspace = true }
tikv = { workspace = true }
tikv_kv = { workspace = true }
tikv_util = { workspace = true }
tokio = { workspace = true }
txn_types = { workspace = true }
workspace-hack = { version = "0.1", path = "../../workspace-hack" }

[dev-dependencies]
bytes = { workspace = true }
cloud_server = { workspace = true, features = ["testexport"] }
criterion = "0.3"
engine_traits = { workspace = true }
kvengine = { workspace = true, features = ["testexport"] }
matches = { workspace = true }
test_cloud_server = { workspace = true, features = ["testexport"] }
test_pd_client = { workspace = true }
test_raftstore = { workspace = true }
test_rfstore = { workspace = true }
test_util = { workspace = true }

[[test]]
name = "integrations"
path = "tests/integrations/mod.rs"

# To avoid failpoints interfere with normal tests, we separate them.
[[test]]
name = "failpoints"
path = "tests/failpoints/mod.rs"
required-features = ["failpoints"]

[[bench]]
name = "cdc_event"
path = "benches/cdc_event.rs"
harness = false

[lints.rust]
# The check_leader api is not fully tests and currently not used, so we use a
# custom flag to skip to tests.
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(NO_NEXT_GEN_COMPATIBLE)'] }
