Expand description
This module contains some predefined duplicate trace models.
Enabled with feature duplicate-model
or model
.
§Predefined models
StaticDuplicate
: A trace model with static duplicate rate.RepeatedDuplicatePattern
: A trace model with a repeated duplicate pattern.
§Examples
An example to build model from configuration:
let mut static_duplicate = StaticDuplicateConfig::new()
.duplicate(vec![0.1, 0.2])
.duration(Duration::from_secs(1))
.build();
assert_eq!(static_duplicate.next_duplicate(), Some((vec![0.1, 0.2], Duration::from_secs(1))));
assert_eq!(static_duplicate.next_duplicate(), None);
A more common use case is to build model from a configuration file (e.g. json file):
// The content would be "{\"RepeatedDuplicatePatternConfig\":{\"pattern\":[{\"StaticDuplicateConfig\":{\"duplicate\":[0.1,0.2],\"duration\":{\"secs\":1,\"nanos\":0}}},{\"StaticDuplicateConfig\":{\"duplicate\":[0.2,0.4],\"duration\":{\"secs\":1,\"nanos\":0}}}],\"count\":2}}"
// if the `human` feature is not enabled.
let config_file_content = "{\"RepeatedDuplicatePatternConfig\":{\"pattern\":[{\"StaticDuplicateConfig\":{\"duplicate\":[0.1,0.2],\"duration\":{\"secs\":1,\"nanos\":0}}},{\"StaticDuplicateConfig\":{\"duplicate\":[0.2,0.4],\"duration\":{\"secs\":1,\"nanos\":0}}}],\"count\":2}}";
let des: Box<dyn DuplicateTraceConfig> = serde_json::from_str(config_file_content).unwrap();
let mut model = des.into_model();
assert_eq!(
model.next_duplicate(),
Some((vec![0.1, 0.2], Duration::from_secs(1)))
);
assert_eq!(
model.next_duplicate(),
Some((vec![0.2, 0.4], Duration::from_secs(1)))
);
assert_eq!(
model.next_duplicate(),
Some((vec![0.1, 0.2], Duration::from_secs(1)))
);
assert_eq!(
model.next_duplicate(),
Some((vec![0.2, 0.4], Duration::from_secs(1)))
);
assert_eq!(model.next_duplicate(), None);
Structs§
- Repeated
Duplicate Pattern - The model contains an array of duplicate trace models.
- Repeated
Duplicate Pattern Config - The configuration struct for
RepeatedDuplicatePattern
. - Static
Duplicate - The model of a static duplicate trace.
- Static
Duplicate Config - The configuration struct for
StaticDuplicate
Traits§
- Duplicate
Trace Config - This trait is used to convert a duplicate trace configuration into a duplicate trace model.