use super::{LeadershipProvider, LeadershipState, LeadershipStatus};
use crate::error::Result;
pub struct NoopLeader;
impl NoopLeader {
pub fn new() -> Self {
Self
}
}
impl Default for NoopLeader {
fn default() -> Self {
Self::new()
}
}
#[async_trait::async_trait]
impl LeadershipProvider for NoopLeader {
async fn start(&self) -> Result<LeadershipStatus> {
let (status, _updater) = LeadershipStatus::new(LeadershipState::Leader);
Ok(status)
}
async fn stop(&self) {
}
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn test_noop_leader_always_leader() {
let provider = NoopLeader::new();
let status = provider.start().await.unwrap();
assert!(status.is_leader());
assert_eq!(status.state(), LeadershipState::Leader);
}
#[tokio::test]
async fn test_noop_leader_default() {
let status = NoopLeader.start().await.unwrap();
assert!(status.is_leader());
}
}