Module delay

Module delay 

Source
Expand description

This module contains some predefined delay trace models.

Enabled with feature delay-model or model.

§Predefined models

§Examples

An example to build model from configuration:

let mut static_delay = StaticDelayConfig::new()
    .delay(Delay::from_millis(10))
    .duration(Duration::from_secs(1))
    .build();
assert_eq!(static_delay.next_delay(), Some((Delay::from_millis(10), Duration::from_secs(1))));
assert_eq!(static_delay.next_delay(), None);

A more common use case is to build model from a configuration file (e.g. json file):

// The content would be "{\"RepeatedDelayPatternConfig\":{\"pattern\":[{\"StaticDelayConfig\":{\"delay\":{\"secs\":0,\"nanos\":10000000},\"duration\":{\"secs\":1,\"nanos\":0}}},{\"StaticDelayConfig\":{\"delay\":{\"secs\":0,\"nanos\":20000000},\"duration\":{\"secs\":1,\"nanos\":0}}}],\"count\":2}}"
// if the `human` feature is not enabled.
let config_file_content = "{\"RepeatedDelayPatternConfig\":{\"pattern\":[{\"StaticDelayConfig\":{\"delay\":{\"secs\":0,\"nanos\":10000000},\"duration\":{\"secs\":1,\"nanos\":0}}},{\"StaticDelayConfig\":{\"delay\":{\"secs\":0,\"nanos\":20000000},\"duration\":{\"secs\":1,\"nanos\":0}}}],\"count\":2}}";
let des: Box<dyn DelayTraceConfig> = serde_json::from_str(config_file_content).unwrap();
let mut model = des.into_model();
assert_eq!(
    model.next_delay(),
    Some((Delay::from_millis(10), Duration::from_secs(1)))
);
assert_eq!(
    model.next_delay(),
    Some((Delay::from_millis(20), Duration::from_secs(1)))
);
assert_eq!(
    model.next_delay(),
    Some((Delay::from_millis(10), Duration::from_secs(1)))
);
assert_eq!(
    model.next_delay(),
    Some((Delay::from_millis(20), Duration::from_secs(1)))
);
assert_eq!(model.next_delay(), None);

Structs§

RepeatedDelayPattern
The model contains an array of delay trace models.
RepeatedDelayPatternConfig
The configuration struct for RepeatedDelayPattern.
StaticDelay
The model of a static delay trace.
StaticDelayConfig
The configuration struct for StaticDelay.

Traits§

DelayTraceConfig
This trait is used to convert a delay trace configuration into a delay trace model.