Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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();
        }