Nothing exercised the real record path: the acp tests use a mock sink and the cost tests only covered amount(). Split the counter construction and the add out of Otel::record so a test can run them against an in-memory exporter, and assert the counter name, the amount and the four labels. Dev-dependency: opentelemetry_sdk's `testing` feature (same crate; adds tokio to its lockfile entry).
40 lines
1.1 KiB
TOML
40 lines
1.1 KiB
TOML
[package]
|
|
name = "swarm-review-classifier"
|
|
version.workspace = true
|
|
readme = "README.md"
|
|
edition.workspace = true
|
|
|
|
[[bin]]
|
|
name = "swarm-review-classifier"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
anyhow.workspace = true
|
|
async-nats.workspace = true
|
|
# StreamExt::next on the subscription.
|
|
futures-util.workspace = true
|
|
# One `claude --print` per classification on the API key runtime.
|
|
hive-claude.workspace = true
|
|
hive-log.workspace = true
|
|
# One ACP session per classification on the ACP runtime.
|
|
hive-runtime.workspace = true
|
|
# The ACP runtime's cost counter (`cost`).
|
|
opentelemetry.workspace = true
|
|
opentelemetry_sdk.workspace = true
|
|
opentelemetry-otlp.workspace = true
|
|
serde.workspace = true
|
|
serde_json.workspace = true
|
|
# The try-out subject and the shapes the controller sends and reads back.
|
|
swarm-queue-client.workspace = true
|
|
# The API key and queue client secret paths, and the store login.
|
|
swarm-secret-client.workspace = true
|
|
tokio.workspace = true
|
|
tracing.workspace = true
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|
|
# `InMemoryMetricExporter` for the cost counter test.
|
|
opentelemetry_sdk = { workspace = true, features = ["testing"] }
|
|
|
|
[lints]
|
|
workspace = true
|