diff --git a/Cargo.lock b/Cargo.lock index baff168..b314221 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -249,7 +249,7 @@ dependencies = [ [[package]] name = "nodrift" -version = "0.3.1" +version = "0.3.2" dependencies = [ "anyhow", "async-trait", diff --git a/crates/drift/src/lib.rs b/crates/drift/src/lib.rs index 751960e..8b247fd 100644 --- a/crates/drift/src/lib.rs +++ b/crates/drift/src/lib.rs @@ -35,22 +35,7 @@ where let drifter = drifter.clone(); async move { - let start = std::time::Instant::now(); - - tracing::debug!("running job"); - let child_token = cancellation_token.child_token(); - if let Err(e) = drifter.execute(child_token).await { - tracing::error!("drift job failed with error: {}, stopping routine", e); - cancellation_token.cancel(); - } - - let elapsed = start.elapsed(); - let mut wait = interval.saturating_sub(elapsed); - tracing::debug!( - "job took: {}ms, waiting: {}ms for next run", - elapsed.as_millis(), - wait.as_millis() - ); + let mut wait = Duration::default(); loop { let child_token = cancellation_token.child_token(); @@ -228,6 +213,23 @@ mod tests { assert!(logs_contain("running job")); assert!(logs_contain("job took:")); + Ok(()) + } + #[tokio::test] + #[traced_test] + async fn test_calls_trace_on_start_and_end_long() -> anyhow::Result<()> { + let token = schedule(Duration::from_millis(100), || async { + tokio::time::sleep(std::time::Duration::from_millis(50)).await; + + Ok(()) + }); + tokio::time::sleep(Duration::from_millis(500)).await; + + assert!(!token.is_cancelled()); + + assert!(logs_contain("running job")); + assert!(logs_contain("job took:")); + Ok(()) } }