public void UntilWorksTest() { var storage = new InMemoryStorageEngine(); var executionEngine = ExecutionEngineFactory.StartNew(storage); executionEngine.Schedule(() => { var holder = new UntilTestHolder(); var task = holder.Start(); Roots.Entangle(holder); Roots.Entangle(task); return(Sync.Next()); }).Wait(); executionEngine.Dispose(); executionEngine = ExecutionEngineFactory.Continue(storage); executionEngine.Schedule(() => { var holder = Roots.Resolve <UntilTestHolder>(); holder.Stop = true; return(Roots.Resolve <CTask>()); }).Wait(); var completed = executionEngine.Schedule(() => Roots.Resolve <UntilTestHolder>().Completed).Result; completed.ShouldBe(true); }
public async Task StartWorkflowTwoWithDelayAndWaitForCompletion() { await Scheduler.ScheduleTask(() => { var workflow = new WorkflowTwo { Status = 100 }; Roots.Entangle(workflow); return(Sync.Next(false)); }); var scheduler = ExecutionEngine.ExecutionEngineFactory.Continue(StableStorageEngine); var status = await Scheduler.Schedule(() => Roots.Resolve <WorkflowTwo>().Status); status.ShouldBe(100); scheduler.Dispose(); }
public async Task CreateAndWaitForNonPersistentSleepThatCompletesBeforeSync() { var workflow = new Workflow(false); await Scheduler.Entangle(workflow); _ = Scheduler.Schedule(() => _ = workflow.Do()); await Task.Delay(2000); workflow.IsCompleted().ShouldBeTrue(); Scheduler.Dispose(); LoadAgain(); await Task.Delay(2000); var isCompleted = await Scheduler.Schedule(() => Roots.Resolve <Workflow>().IsCompleted()); isCompleted.ShouldBeFalse(); }