use std::sync::Arc;
use std::time::Duration;
use processmanager::{
CtrlFuture, ProcFuture, ProcessControlHandler, ProcessManagerBuilder, Runnable, RuntimeError,
};
#[derive(Default)]
struct NoopSvc;
impl Runnable for NoopSvc {
fn process_start(&self) -> ProcFuture<'_> {
Box::pin(async { Ok::<(), RuntimeError>(()) })
}
fn process_handle(&self) -> Arc<dyn ProcessControlHandler> {
Arc::new(StubHandle)
}
}
struct StubHandle;
impl ProcessControlHandler for StubHandle {
fn shutdown(&self) -> CtrlFuture<'_> {
Box::pin(async {})
}
fn reload(&self) -> CtrlFuture<'_> {
Box::pin(async {})
}
}
#[test]
fn builder_sets_custom_name() {
let mgr = ProcessManagerBuilder::default()
.name("my-supervisor")
.pre_insert(NoopSvc)
.build();
assert_eq!(mgr.process_name(), "my-supervisor");
}
#[test]
fn builder_sets_shutdown_grace_period() {
let mgr = ProcessManagerBuilder::default()
.shutdown_grace_period(Duration::from_millis(250))
.pre_insert(NoopSvc)
.build();
assert_eq!(mgr.shutdown_grace_period(), Duration::from_millis(250));
}