pub mod consumer;
pub mod metrics;
pub mod producer;
pub mod settings;
pub use consumer::{consumer_settings, OffsetReset};
pub use producer::producer_settings;
pub use settings::{KafkaSettings, Setting};
#[cfg(test)]
mod tests {
use super::*;
use std::collections::HashMap;
fn settings() -> KafkaSettings {
KafkaSettings {
brokers: "b:9092".into(),
security_protocol: Some("SASL_SSL".into()),
sasl_mechanism: Some("PLAIN".into()),
sasl_username: Some("u".into()),
sasl_password: Some("p".into()),
ssl_ca_pem: None,
session_timeout_ms: 30_000,
}
}
fn map(s: Vec<Setting>) -> HashMap<&'static str, String> {
s.into_iter().collect()
}
#[test]
fn producer_is_durable_and_idempotent() {
let m = map(producer_settings(&settings()));
assert_eq!(m["acks"], "all");
assert_eq!(m["enable.idempotence"], "true");
assert_eq!(m["security.protocol"], "SASL_SSL");
assert_eq!(m["bootstrap.servers"], "b:9092");
}
#[test]
fn consumer_is_manual_commit_read_committed() {
let m = map(consumer_settings(&settings(), "cex-history", OffsetReset::Earliest));
assert_eq!(m["group.id"], "cex-history");
assert_eq!(m["enable.auto.commit"], "false");
assert_eq!(m["isolation.level"], "read_committed");
assert_eq!(m["auto.offset.reset"], "earliest");
assert_eq!(m["sasl.username"], "u");
}
#[test]
fn dev_plaintext_needs_only_brokers() {
let s = KafkaSettings {
brokers: "b:9092".into(),
security_protocol: None,
sasl_mechanism: None,
sasl_username: None,
sasl_password: None,
ssl_ca_pem: None,
session_timeout_ms: 30_000,
};
let m = map(consumer_settings(&s, "g", OffsetReset::Latest));
assert!(!m.contains_key("security.protocol"));
assert_eq!(m["auto.offset.reset"], "latest");
}
}