pub mod tasks; use periodically::{IntervalSchedule, Scheduler}; use std::{sync::atomic::Ordering, thread::sleep, time::Duration}; use tasks::PanickingTask; use tokio::runtime::Runtime; #[test] fn panicking_sync_task_keeps_running() { let task = PanickingTask::with_modulo(2); let schedule = IntervalSchedule::every(Duration::from_millis(10)); let mut scheduler = Scheduler::tokio_scheduler(Runtime::new().unwrap()); let counter = task.counter(); scheduler.add_sync_task(task, schedule); sleep(Duration::from_millis(100)); assert!(counter.load(Ordering::Acquire) >= 5); } #[test] fn panicking_async_task_keeps_running() { let task = PanickingTask::with_modulo(2); let schedule = IntervalSchedule::every(Duration::from_millis(10)); let mut scheduler = Scheduler::tokio_scheduler(Runtime::new().unwrap()); let counter = task.counter(); scheduler.add_async_task(task, schedule); sleep(Duration::from_millis(100)); assert!(counter.load(Ordering::Acquire) >= 5); }