Add DelayingSymbolRunner for testing
This commit is contained in:
parent
918e931728
commit
9200e83a0a
3 changed files with 41 additions and 2 deletions
|
|
@ -50,5 +50,6 @@ mod to_artifact;
|
|||
pub use builder::{DefaultBuilder, ImplementationBuilder};
|
||||
pub use locator::{DefaultLocator, DefaultPolicy, Policy, ResourceLocator};
|
||||
pub use setup::{
|
||||
DrySymbolRunner, InitializingSymbolRunner, ReportingSymbolRunner, Setup, SymbolRunner,
|
||||
DelayingSymbolRunner, DrySymbolRunner, InitializingSymbolRunner, ReportingSymbolRunner, Setup,
|
||||
SymbolRunner,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@ mod util;
|
|||
pub use util::{AddResult, AddableResource};
|
||||
mod symbol_runner;
|
||||
pub use symbol_runner::{
|
||||
DrySymbolRunner, InitializingSymbolRunner, ReportingSymbolRunner, SymbolRunner,
|
||||
DelayingSymbolRunner, DrySymbolRunner, InitializingSymbolRunner, ReportingSymbolRunner,
|
||||
SymbolRunner,
|
||||
};
|
||||
mod runnable;
|
||||
mod setup;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
use crate::async_utils::sleep;
|
||||
use crate::loggers::Logger;
|
||||
use crate::symbols::Symbol;
|
||||
use async_trait::async_trait;
|
||||
use std::error::Error;
|
||||
use std::fmt;
|
||||
use std::fmt::Debug;
|
||||
use std::time::Duration;
|
||||
|
||||
#[async_trait(?Send)]
|
||||
pub trait SymbolRunner {
|
||||
|
|
@ -96,6 +98,41 @@ impl SymbolRunner for InitializingSymbolRunner {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct DelayingSymbolRunner<R>(R);
|
||||
|
||||
impl<R> DelayingSymbolRunner<R> {
|
||||
pub fn new(symbol_runner: R) -> Self {
|
||||
Self(symbol_runner)
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait(?Send)]
|
||||
impl<R> SymbolRunner for DelayingSymbolRunner<R>
|
||||
where
|
||||
R: SymbolRunner,
|
||||
{
|
||||
async fn run_symbol<S: Symbol + Debug, L: Logger>(
|
||||
&self,
|
||||
symbol: &S,
|
||||
logger: &L,
|
||||
force: bool,
|
||||
) -> Result<bool, Box<dyn Error>> {
|
||||
sleep(Duration::from_millis(
|
||||
(((std::time::SystemTime::now()
|
||||
.duration_since(std::time::UNIX_EPOCH)
|
||||
.unwrap()
|
||||
.subsec_micros()
|
||||
% 20) as f32
|
||||
/ 2.0)
|
||||
.exp()
|
||||
/ 8.0) as u64,
|
||||
))
|
||||
.await;
|
||||
self.0.run_symbol(symbol, logger, force).await
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Default)]
|
||||
pub struct DrySymbolRunner;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue