use std::time::Duration;
use crate::RetryPolicy;
pub(crate) fn enable_tracing() {
use tracing_subscriber::filter::LevelFilter;
let _ = tracing_subscriber::fmt()
.with_max_level(LevelFilter::TRACE)
.with_test_writer()
.try_init();
}
pub(crate) fn short_policy() -> RetryPolicy {
RetryPolicy {
max_attempts: 2,
per_attempt_deadline: Duration::from_millis(100),
overall_deadline: Duration::from_millis(300),
base_backoff: Duration::from_millis(1),
leader_ttl: Duration::from_secs(30),
}
}
pub(crate) fn make_status_with_hint(hint: tsoracle_proto::v1::LeaderHint) -> tonic::Status {
use prost::Message;
use tonic::metadata::{BinaryMetadataValue, MetadataKey};
let mut buf = Vec::new();
hint.encode(&mut buf)
.expect("LeaderHint encode is infallible");
let mut status = tonic::Status::failed_precondition("not leader");
let key = MetadataKey::from_bytes(tsoracle_proto::v1::LEADER_HINT_TRAILER_KEY.as_bytes())
.expect("static ASCII key parses");
status
.metadata_mut()
.insert_bin(key, BinaryMetadataValue::from_bytes(&buf));
status
}