use super::FaultOperationType;
use crate::regions::Region;
#[derive(Clone, Default, Debug)]
pub struct FaultInjectionCondition {
pub operation_type: Option<FaultOperationType>,
pub region: Option<Region>,
pub container_id: Option<String>,
}
#[derive(Default)]
pub struct FaultInjectionConditionBuilder {
operation_type: Option<FaultOperationType>,
region: Option<Region>,
container_id: Option<String>,
}
impl FaultInjectionConditionBuilder {
pub fn new() -> Self {
Self {
operation_type: None,
region: None,
container_id: None,
}
}
pub fn with_operation_type(mut self, operation_type: FaultOperationType) -> Self {
self.operation_type = Some(operation_type);
self
}
pub fn with_region(mut self, region: Region) -> Self {
self.region = Some(region);
self
}
pub fn with_container_id(mut self, container_id: impl Into<String>) -> Self {
self.container_id = Some(container_id.into());
self
}
pub fn build(self) -> FaultInjectionCondition {
FaultInjectionCondition {
operation_type: self.operation_type,
region: self.region,
container_id: self.container_id,
}
}
}
#[cfg(test)]
mod tests {
use super::FaultInjectionConditionBuilder;
#[test]
fn builder_default() {
let builder = FaultInjectionConditionBuilder::default();
let condition = builder.build();
assert!(condition.operation_type.is_none());
assert!(condition.region.is_none());
assert!(condition.container_id.is_none());
}
}