示例#1
0
        public void Run_CreateOrUpdateRecurringJob_UpdatesExistingRecurringJob(string schema)
        {
            var queryService = new QueryService(new SqlServerStorageOptions()
            {
                SchemaName = schema
            });

            UseConnection((conn) =>
            {
                var sc = new Core.Common.ScheduledTask()
                {
                    Cron = "0 0 0 0",
                    Job  = new Core.Common.QueueJob()
                    {
                        Description = "test",
                        Job         = Job.FromExpression(() => Run_CreateOrUpdateRecurringJob_ReturnsNotNullWithJob_WhenExists("")),
                        ContextId   = Guid.NewGuid(),
                        MaxRetries  = 10,
                        QueueName   = "dflt"
                    },
                    Name = "recurring_name",
                    OnlyIfLastFinishedOrFailed = true,
                    LastInvocation             = DateTime.Today,
                    NextInvocation             = DateTime.Today
                };
                var result = queryService.CreateOrUpdateRecurringJob(sc, conn);
                var sc2    = new Core.Common.ScheduledTask()
                {
                    Cron = "0 0 0 0 0",
                    Job  = new Core.Common.QueueJob()
                    {
                        Description = "test 2",
                        Job         = Job.FromExpression(() => Run_CreateOrUpdateRecurringJob_ReturnsNotNullWithJob_WhenExists("")),
                        ContextId   = Guid.NewGuid(),
                        MaxRetries  = 2,
                        QueueName   = "dfdsasdlt"
                    },
                    Name = "recurring_name",
                    OnlyIfLastFinishedOrFailed = false,
                    LastInvocation             = DateTime.Today,
                    NextInvocation             = DateTime.Today
                };
                var result2 = queryService.CreateOrUpdateRecurringJob(sc2, conn);

                Assert.Equal(1, result2);
                var recurring = conn.Query <ScheduleEntity>($"SELECT * FROM [{schema}].Schedule").FirstOrDefault();
                Assert.Equal(sc2.Cron, recurring.Cron);
                Assert.Equal(sc2.OnlyIfLastFinishedOrFailed, recurring.OnlyIfLastFinishedOrFailed);
                Assert.Equal(sc2.LastInvocation, recurring.LastInvocation);
                Assert.Equal(sc2.Name, recurring.Name);
                Assert.Equal(sc2.NextInvocation, recurring.NextInvocation);
                Assert.Equal(JobHelper.ToJson(sc2.Workflow), recurring.WorkflowInvocationData);
                Assert.Equal(JobHelper.ToJson(ScheduledJobInvocationData.FromScheduledJob(sc2)), recurring.JobInvocationData);
            });
        }
示例#2
0
        public void Run_CreateOrUpdateRecurringJob_ReturnsNotNullWithWorkflow_WhenExists(string schema)
        {
            var queryService = new QueryService(new SqlServerStorageOptions()
            {
                SchemaName = schema
            });

            UseConnection((conn) =>
            {
                var job1 = WorkflowJob.MakeJob(() => Run_CreateOrUpdateRecurringJob_ReturnsNotNullWithWorkflow_WhenExists(""), "dflt2", Guid.NewGuid(), 4, "new");
                var job2 = WorkflowJob.MakeJob(() => Run_CreateOrUpdateRecurringJob_ReturnsNotNullWithWorkflow_WhenExists("asd"), "dfldasdt2", Guid.NewGuid(), 2, "new2");
                job1.ContinueWith(job2);
                var sc = new Core.Common.ScheduledTask()
                {
                    Cron     = "0 0 0 0",
                    Workflow = new Workflow(job1),
                    Name     = "recurring_name",
                    OnlyIfLastFinishedOrFailed = true,
                    LastInvocation             = DateTime.Today,
                    NextInvocation             = DateTime.Today
                };
                var result = queryService.CreateOrUpdateRecurringJob(sc, conn);
                Assert.Equal(1, result);
                var recurring = conn.Query <ScheduleEntity>($"SELECT * FROM [{schema}].Schedule").FirstOrDefault();
                Assert.Equal(sc.Cron, recurring.Cron);
                Assert.Equal(sc.OnlyIfLastFinishedOrFailed, recurring.OnlyIfLastFinishedOrFailed);
                Assert.Equal(sc.LastInvocation, recurring.LastInvocation);
                Assert.Equal(sc.Name, recurring.Name);
                Assert.Equal(sc.NextInvocation, recurring.NextInvocation);
                Assert.Equal(JobHelper.ToJson(sc.Workflow), recurring.WorkflowInvocationData);
                Assert.Equal(JobHelper.ToJson(ScheduledJobInvocationData.FromScheduledJob(sc)), recurring.JobInvocationData);
            });
        }