use crate::{
Balancer,
Registry,
Router,
};
#[derive(Default)]
pub struct Builder {
registry: Registry,
balancer: Balancer,
}
impl Builder {
pub fn registry(mut self, registry: Registry) -> Self {
self.registry = registry;
self
}
pub fn balancer(mut self, strategy: &str) -> Self {
self.balancer = Balancer::new(strategy);
self
}
pub fn build(self) -> Router {
Router {
registry: self.registry,
balancer: self.balancer,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_router_builder() {
let builder = Builder::default();
assert!(builder.registry.0.is_empty());
assert_eq!(builder.balancer.strategy(), "round_robin");
}
#[test]
fn build_default_router() {
let builder = Router::builder();
assert_eq!(builder.balancer.strategy(), "round_robin");
assert!(
builder
.registry
.list()
.is_empty()
);
let router = builder.build();
assert_eq!(router.balancing_strategy(), "round_robin");
assert!(
router
.registry()
.list()
.is_empty()
);
}
}