Ejemplo n.º 1
0
        public void SchedulesAllFutureExpirationWindowTest()
        {
            var schedule = new ScheduleTrigger
            {
                WindowExpiration = true,
                Windows          = "10:00, 10:10-10:20"
            };

            var fromDate  = new DateTime(1986, 4, 18, 0, 0, 0);
            var afterDate = new DateTime(1986, 4, 18, 0, 0, 0);

            var triggerTimes = schedule.GetTriggerTimes(fromDate, afterDate).Take(6).ToArray();

            Assert.AreEqual(new TimeSpan(0, 10, 0, 0), triggerTimes[0].TimeTill);
            Assert.IsTrue(new TimeSpan(0, 10, 10, 0) <= triggerTimes[1].TimeTill && triggerTimes[1].TimeTill <= new TimeSpan(0, 10, 20, 0));

            Assert.AreEqual(new TimeSpan(1, 10, 0, 0), triggerTimes[2].TimeTill);
            Assert.IsTrue(new TimeSpan(1, 10, 10, 0) <= triggerTimes[3].TimeTill && triggerTimes[3].TimeTill <= new TimeSpan(1, 10, 20, 0));

            Assert.AreEqual(new TimeSpan(2, 10, 0, 0), triggerTimes[4].TimeTill);
            Assert.IsTrue(new TimeSpan(2, 10, 10, 0) <= triggerTimes[5].TimeTill && triggerTimes[5].TimeTill <= new TimeSpan(2, 10, 20, 0));

            Assert.AreEqual(DateTime.MaxValue, triggerTimes[0].Expiration);
            Assert.AreEqual(new DateTime(1986, 4, 18, 10, 20, 00), triggerTimes[1].Expiration);
            Assert.AreEqual(DateTime.MaxValue, triggerTimes[2].Expiration);
            Assert.AreEqual(new DateTime(1986, 4, 19, 10, 20, 00), triggerTimes[3].Expiration);
            Assert.AreEqual(DateTime.MaxValue, triggerTimes[4].Expiration);
            Assert.AreEqual(new DateTime(1986, 4, 20, 10, 20, 00), triggerTimes[5].Expiration);
        }
Ejemplo n.º 2
0
        public void DowNextWeekPriorToAfterTimeOfDayPlusIntervalBasedWindowTest()
        {
            var schedule = new ScheduleTrigger
            {
                WindowsString = "Su-8:34,10:00"  // this time of day is prior to the after time of day below. with day-interval-based scheduling, we would skip ahead to the next day (monday) at this time. with dow-based scheduling we will schedule at this exact time.
            };

            var reference = new DateTime(2017, 7, 10, 10, 0, 0);
            var after     = new DateTime(2017, 7, 10, 10, 0, 0); // 2017-7-10 was a Monday

            var triggerTimes = schedule.GetTriggerTimes(reference, after).Take(14).ToArray();

            Assert.AreEqual(14, triggerTimes.Length);

            // the 10am interval-based trigger should be scheduled for 10am each day, starting with tomorrow.
            Assert.AreEqual(triggerTimes[0].Trigger, reference + TimeSpan.FromDays(1));        // Tuesday
            Assert.AreEqual(triggerTimes[1].Trigger, reference + TimeSpan.FromDays(2));        // Wednesday
            Assert.AreEqual(triggerTimes[2].Trigger, reference + TimeSpan.FromDays(3));        // Thursday
            Assert.AreEqual(triggerTimes[3].Trigger, reference + TimeSpan.FromDays(4));        // Friday
            Assert.AreEqual(triggerTimes[4].Trigger, reference + TimeSpan.FromDays(5));        // Saturday
            Assert.AreEqual(triggerTimes[5].Trigger, reference + new TimeSpan(6, -2, 34, 0));  // On Sunday, the DOW-based window will be scheduled at 8:34am...
            Assert.AreEqual(triggerTimes[6].Trigger, reference + TimeSpan.FromDays(6));        // ...preceding our 10am interval-based trigger.
            Assert.AreEqual(triggerTimes[7].Trigger, reference + TimeSpan.FromDays(7));
            Assert.AreEqual(triggerTimes[8].Trigger, reference + new TimeSpan(13, -2, 34, 0)); // we only schedule 7 windows, so there are no more interval-based triggers left.
            Assert.AreEqual(triggerTimes[9].Trigger, reference + new TimeSpan(20, -2, 34, 0));
            Assert.AreEqual(triggerTimes[10].Trigger, reference + new TimeSpan(27, -2, 34, 0));
            Assert.AreEqual(triggerTimes[11].Trigger, reference + new TimeSpan(34, -2, 34, 0));
            Assert.AreEqual(triggerTimes[12].Trigger, reference + new TimeSpan(41, -2, 34, 0));
            Assert.AreEqual(triggerTimes[13].Trigger, reference + new TimeSpan(48, -2, 34, 0));
        }
        internal async Task ScheduleTrigger(ScheduledTriggerRequest request)
        {
            DataFactoryManagementClient client = await GetDataFactoryManagementClient();

            ScheduleTrigger scheduleTrigger = GetScheduledTrigger(request);

            if (scheduleTrigger != null)
            {
                // Now, create the trigger by invoking the CreateOrUpdate method
                TriggerResource triggerResource = new TriggerResource()
                {
                    Properties = scheduleTrigger
                };
                await client.Triggers.CreateOrUpdateAsync(request.ResourceGroup, request.DataFactoryName, request.TriggerName, triggerResource);

                if (request.Activate)
                {
                    // Activate the trigger
                    client.Triggers.Start(request.ResourceGroup, request.DataFactoryName, request.TriggerName);
                }
            }
            else
            {
                throw new Exception("Unable to create scheduled trigger");
            }
        }
        private StringBuilder RunOutput()
        {
            var esbMethod = new GetScheduledResources();

            _factory = new Mock <IServerSchedulerFactory>();
            var security = new Mock <ISecurityWrapper>();

            esbMethod.SecurityWrapper = security.Object;
            var model   = new Mock <IScheduledResourceModel>();
            var ws      = new Mock <IWorkspace>();
            var trigger = new ScheduleTrigger(TaskState.Disabled,
                                              new Dev2DailyTrigger(new TaskServiceConvertorFactory(), new DailyTrigger(21)),
                                              new Dev2TaskService(new TaskServiceConvertorFactory()),
                                              new TaskServiceConvertorFactory());
            var res = new ScheduledResource("a", SchedulerStatus.Enabled, DateTime.Now, trigger, "dave");

            _factory.Setup(
                a =>
                a.CreateModel(GlobalConstants.SchedulerFolderId, It.IsAny <ISecurityWrapper>())).Returns(model.Object);
            model.Setup(a => a.GetScheduledResources()).Returns(new ObservableCollection <IScheduledResource>()
            {
                res
            });

            esbMethod.SchedulerFactory = _factory.Object;
            var output = esbMethod.Execute(new Dictionary <string, StringBuilder>(), ws.Object);

            return(output);
        }
Ejemplo n.º 5
0
        public void SchedulesAllFutureNoExpirationsTest()
        {
            var schedule = new ScheduleTrigger {
                Windows = "10:00, 10:10-10:20"
            };

            var referenceDate = new DateTime(1986, 4, 18, 0, 0, 0);
            var afterDate     = new DateTime(1986, 4, 18, 0, 0, 0);

            var triggerTimes = schedule.GetTriggerTimes(referenceDate, afterDate).Take(6).ToArray();

            Assert.AreEqual(new TimeSpan(0, 10, 0, 0), triggerTimes[0].ReferenceTillTrigger);
            Assert.IsTrue(new TimeSpan(0, 10, 10, 0) <= triggerTimes[1].ReferenceTillTrigger && triggerTimes[1].ReferenceTillTrigger <= new TimeSpan(0, 10, 20, 0));

            Assert.AreEqual(new TimeSpan(1, 10, 0, 0), triggerTimes[2].ReferenceTillTrigger);
            Assert.IsTrue(new TimeSpan(1, 10, 10, 0) <= triggerTimes[3].ReferenceTillTrigger && triggerTimes[3].ReferenceTillTrigger <= new TimeSpan(1, 10, 20, 0));

            Assert.AreEqual(new TimeSpan(2, 10, 0, 0), triggerTimes[4].ReferenceTillTrigger);
            Assert.IsTrue(new TimeSpan(2, 10, 10, 0) <= triggerTimes[5].ReferenceTillTrigger && triggerTimes[5].ReferenceTillTrigger <= new TimeSpan(2, 10, 20, 0));

            Assert.AreEqual(null, triggerTimes[0].Expiration);
            Assert.AreEqual(null, triggerTimes[1].Expiration);
            Assert.AreEqual(null, triggerTimes[2].Expiration);
            Assert.AreEqual(null, triggerTimes[3].Expiration);
            Assert.AreEqual(null, triggerTimes[4].Expiration);
            Assert.AreEqual(null, triggerTimes[5].Expiration);
        }
Ejemplo n.º 6
0
        public void SchedulesAllFutureExpirationWindowAndAgeTest()
        {
            var schedule = new ScheduleTrigger
            {
                WindowExpiration = true,
                Windows          = "10:00, 10:10-10:20"
            };

            var referenceDate = new DateTime(1986, 4, 18, 0, 0, 0);
            var afterDate     = new DateTime(1986, 4, 18, 0, 0, 0);

            var triggerTimes = schedule.GetTriggerTimes(referenceDate, afterDate, TimeSpan.FromMinutes(5)).Take(6).ToArray();

            Assert.AreEqual(new TimeSpan(0, 10, 0, 0), triggerTimes[0].ReferenceTillTrigger);
            Assert.IsTrue(new TimeSpan(0, 10, 10, 0) <= triggerTimes[1].ReferenceTillTrigger && triggerTimes[1].ReferenceTillTrigger <= new TimeSpan(0, 10, 20, 0));

            Assert.AreEqual(new TimeSpan(1, 10, 0, 0), triggerTimes[2].ReferenceTillTrigger);
            Assert.IsTrue(new TimeSpan(1, 10, 10, 0) <= triggerTimes[3].ReferenceTillTrigger && triggerTimes[3].ReferenceTillTrigger <= new TimeSpan(1, 10, 20, 0));

            Assert.AreEqual(new TimeSpan(2, 10, 0, 0), triggerTimes[4].ReferenceTillTrigger);
            Assert.IsTrue(new TimeSpan(2, 10, 10, 0) <= triggerTimes[5].ReferenceTillTrigger && triggerTimes[5].ReferenceTillTrigger <= new TimeSpan(2, 10, 20, 0));

            Assert.AreEqual(referenceDate + triggerTimes[0].ReferenceTillTrigger + TimeSpan.FromMinutes(5), triggerTimes[0].Expiration);
            Assert.AreEqual(new DateTime(1986, 4, 18, 10, 20, 00).Min(referenceDate + triggerTimes[1].ReferenceTillTrigger + TimeSpan.FromMinutes(5)), triggerTimes[1].Expiration);
            Assert.AreEqual(referenceDate + triggerTimes[2].ReferenceTillTrigger + TimeSpan.FromMinutes(5), triggerTimes[2].Expiration);
            Assert.AreEqual(new DateTime(1986, 4, 19, 10, 20, 00).Min(referenceDate + triggerTimes[3].ReferenceTillTrigger + TimeSpan.FromMinutes(5)), triggerTimes[3].Expiration);
            Assert.AreEqual(referenceDate + triggerTimes[4].ReferenceTillTrigger + TimeSpan.FromMinutes(5), triggerTimes[4].Expiration);
            Assert.AreEqual(new DateTime(1986, 4, 20, 10, 20, 00).Min(referenceDate + triggerTimes[5].ReferenceTillTrigger + TimeSpan.FromMinutes(5)), triggerTimes[5].Expiration);
        }
Ejemplo n.º 7
0
        public override Trigger ToSdkObject()
        {
            var trigger = new ScheduleTrigger(this.Recurrence?.ToSdkObject());

            this.Pipelines?.ForEach(item => trigger.Pipelines.Add(item));
            SetProperties(trigger);
            return(trigger);
        }
Ejemplo n.º 8
0
        public void DowDeserialize1PointTest()
        {
            var schedule = new ScheduleTrigger {
                WindowsString = "Su-10:00"
            };

            Assert.AreEqual(1, schedule.WindowCount);
            Assert.AreEqual("Su-10:00", schedule.WindowsString);
        }
Ejemplo n.º 9
0
        public void Deserialize1Point1WindowSpacesTest()
        {
            var schedule = new ScheduleTrigger {
                WindowsString = "10:00,                10:10-10:20"
            };

            Assert.Equal(2, schedule.WindowCount);
            Assert.Equal("10:00, 10:10-10:20", schedule.WindowsString);
        }
Ejemplo n.º 10
0
        public void Deserialize1WindowTest()
        {
            var schedule = new ScheduleTrigger {
                Windows = "10:00-10:30"
            };

            Assert.AreEqual(1, schedule.WindowCount);
            Assert.AreEqual("10:00-10:30", schedule.Windows);
        }
Ejemplo n.º 11
0
        public void Deserialize1Point1WindowTest()
        {
            var schedule = new ScheduleTrigger {
                Windows = "10:00,10:10-10:20"
            };

            Assert.AreEqual(2, schedule.WindowCount);
            Assert.AreEqual("10:00, 10:10-10:20", schedule.Windows);
        }
Ejemplo n.º 12
0
        public void DowDeserialize1WindowTest()
        {
            var schedule = new ScheduleTrigger {
                WindowsString = "Mo-10:00-10:30"
            };

            Assert.Equal(1, schedule.WindowCount);
            Assert.Equal("Mo-10:00-10:30", schedule.WindowsString);
        }
Ejemplo n.º 13
0
        public void Deserialize1PointTrailingCommaTest()
        {
            var schedule = new ScheduleTrigger {
                WindowsString = "10:00,"
            };

            Assert.Equal(1, schedule.WindowCount);
            Assert.Equal("10:00", schedule.WindowsString);
        }
Ejemplo n.º 14
0
        public void SchedulesPullsOnlySevenDays()
        {
            var schedule = new ScheduleTrigger {
                WindowsString = "10:00"
            };

            var triggerTimeCount = schedule.GetTriggerTimes(DateTime.Now).Count();

            Assert.Equal(7, triggerTimeCount);
        }
        public void ShouldMinimallyPopulateFromReflector()
        {
            string xml = string.Format(@"<scheduleTrigger time=""10:00:00"" />");

            trigger = (ScheduleTrigger)NetReflector.Read(xml);
            Assert.AreEqual("10:00:00", trigger.Time);
            Assert.AreEqual(7, trigger.WeekDays.Length);
            Assert.AreEqual(BuildCondition.IfModificationExists, trigger.BuildCondition);
            Assert.AreEqual("ScheduleTrigger", trigger.Name);
        }
        private ScheduleTrigger GetScheduledTrigger(ScheduledTriggerRequest request)
        {
            ScheduleTrigger trigger = new ScheduleTrigger()
            {
                Pipelines  = GetPipelineForScheduleTrigger(request.Pipelines),
                Recurrence = GetScheduledTriggerRecurrence(request)
            };

            return(trigger);
        }
Ejemplo n.º 17
0
        ExecuteMessage RunOutput(bool expectCorrectInput, bool hasUserNameAndPassword, bool delete)
        {
            const string username  = "******";
            const string password  = "******";
            var          esbMethod = new SaveScheduledResource();
            var          security  = new Mock <ISecurityWrapper>();

            esbMethod.SecurityWrapper = security.Object;
            var factory = new Mock <IServerSchedulerFactory>();
            var model   = new Mock <IScheduledResourceModel>();
            var ws      = new Mock <IWorkspace>();
            var trigger = new ScheduleTrigger(TaskState.Disabled,
                                              new Dev2DailyTrigger(new TaskServiceConvertorFactory(), new DailyTrigger(21)),
                                              new Dev2TaskService(new TaskServiceConvertorFactory()),
                                              new TaskServiceConvertorFactory());
            var res = new ScheduledResource("a", SchedulerStatus.Enabled, DateTime.Now, trigger, "dave", Guid.NewGuid().ToString());
            var inp = new Dictionary <string, StringBuilder>();

            factory.Setup(
                a =>
                a.CreateModel(GlobalConstants.SchedulerFolderId, It.IsAny <ISecurityWrapper>())).Returns(model.Object);
            var serialiser = new Dev2JsonSerializer();

            if (expectCorrectInput)
            {
                model.Setup(a => a.Save(It.IsAny <ScheduledResource>(), username, password)).Verifiable();
                inp.Add("Resource", serialiser.SerializeToBuilder(res));
            }

            if (hasUserNameAndPassword)
            {
                inp.Add("UserName", new StringBuilder("user"));
                inp.Add("Password", new StringBuilder("pass"));
            }
            if (delete)
            {
                model.Setup(a => a.DeleteSchedule(It.IsAny <IScheduledResource>())).Verifiable();
                inp.Add("PreviousResource", serialiser.SerializeToBuilder(res));
            }
            esbMethod.SchedulerFactory = factory.Object;

            var output = esbMethod.Execute(inp, ws.Object);

            if (expectCorrectInput && hasUserNameAndPassword)
            {
                model.Verify(a => a.Save(It.IsAny <ScheduledResource>(), username, password));
            }

            if (delete)
            {
                model.Verify(a => a.DeleteSchedule(It.IsAny <IScheduledResource>()));
            }

            return(serialiser.Deserialize <ExecuteMessage>(output));
        }
Ejemplo n.º 18
0
        public void SchedulesPullsOnlySevenDays()
        {
            var schedule = new ScheduleTrigger {
                Windows = "10:00"
            };

            var referenceDate = new DateTime(1986, 4, 18, 0, 0, 0);
            var afterDate     = new DateTime(1986, 4, 19, 0, 0, 0);

            var triggerTimeCount = schedule.GetTriggerTimes(referenceDate, afterDate).Count();

            Assert.AreEqual(7, triggerTimeCount);
        }
Ejemplo n.º 19
0
        public static void createUpdateTrigger(DataFactoryManagementClient client)
        {
            TriggerPipelineReference[] triPipe;
            string[] tablas = DatosGrales.traerTablas(true);
            for (int o = 1; o < (tablas.Length) / 10; o++)
            {
                if (o != Convert.ToInt32(tablas.Length / 10))
                {
                    triPipe = new TriggerPipelineReference[o * 10];//tablas.Length
                }
                else
                {
                    triPipe = new TriggerPipelineReference[tablas.Length];
                }

                PipelineReference pipe;
                for (int i = 0; i < triPipe.Length; i++)
                {
                    if (!tablas[i].Contains("ccst"))
                    {
                        pipe       = new PipelineReference("Pipeline-Sql-DataLake-ConCompresion-Claim-" + tablas[i], "Pipeline-Sql-DataLake-ConCompresion-Claim-" + tablas[i]);
                        triPipe[i] = new TriggerPipelineReference(pipe);

                        //Agrego parametro dummy porque en realidad no uso, pero es obligatorio tener.
                        Dictionary <String, object> diccionarioParams = new Dictionary <String, object>();
                        diccionarioParams.Add("Param1", 1);
                        triPipe[i].Parameters = diccionarioParams;
                    }
                }
                DateTime hoy = DateTime.Now.AddDays(-2);
                DateTime fin = hoy.AddDays(15);
                ScheduleTriggerRecurrence str = new ScheduleTriggerRecurrence(null, "Day", 1, hoy, fin);
                str.TimeZone = "UTC";

                ScheduleTrigger schedule = new ScheduleTrigger(str, null, "Trigger para pipes con compresion", "Stopped", triPipe);

                TriggerResource trig = new TriggerResource(schedule, null, "CompresionSinCCST", "ScheduleTrigger");
                //trig.Proper
                try
                {
                    TriggerResource trig1 = client.Triggers.CreateOrUpdate(DatosGrales.resourceGroup, DatosGrales.dataFactoryName, "CompresionSinCCST", trig);
                    Console.WriteLine("Trigger creado con " + (o * 10) + " pipelines, a ver si se banca mas?");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Trigger con " + (o * 10) + " pipelines fallo, hacemos otro intento...");
                    o--;
                }
            }
            //var aor = client.Triggers.StartWithHttpMessagesAsync(resourceGroup, dataFactoryName, "Trigger prueba tarea");
        }
Ejemplo n.º 20
0
        public void SchedulesAllFutureNoExpirationsTest()
        {
            var schedule = new ScheduleTrigger {
                WindowsString = "10:00, 10:10-10:20"
            };

            var triggerTimes = schedule.GetTriggerTimes(DateTime.Now).Take(6).ToArray();

            Assert.Equal(null, triggerTimes[0].Expiration);
            Assert.Equal(null, triggerTimes[1].Expiration);
            Assert.Equal(null, triggerTimes[2].Expiration);
            Assert.Equal(null, triggerTimes[3].Expiration);
            Assert.Equal(null, triggerTimes[4].Expiration);
            Assert.Equal(null, triggerTimes[5].Expiration);
        }
        public static bool GenerateExceptions(Job job, Dictionary <string, List <Job> > convertedJobs, Guid jobUID)
        {
            bool jobProcessed;

            switch (job.JobName)
            {
            case "ATM Create CAF and PBF":
                jobProcessed = true;

                // Split that job into 2
                job.Elements.Clear();
                Job weekendJob = job.Clone() as Job;
                weekendJob.JobName = "ATM Create CAF and PBF - Weekend";

                // First Job
                ScheduleTrigger scheduleTrigger = new ScheduleTrigger("Weekdays", new TimeOfDay("2:30 AM"));
                JobDependency   jobDependency   = new JobDependency($@"\{ConversionBaseHelper.JamsArchonRootFolder}\ACH File Import");
                job.Elements.Add(scheduleTrigger);
                job.Elements.Add(jobDependency);

                // Second job
                ScheduleTrigger scheduleTriggerWeekend = new ScheduleTrigger("Saturday, Sunday", new TimeOfDay("12:00 AM"));
                JobDependency   jobDependencyWeekend   = new JobDependency($@"\{ConversionBaseHelper.JamsArchonRootFolder}\Bank - All\Enable PBF Creation - Update Bank Table");
                JobDependency   jobDependencyWeekend2  = new JobDependency($@"\{ConversionBaseHelper.JamsArchonRootFolder}\Bank - All\All Critical Processing Complete");
                weekendJob.Elements.Add(scheduleTriggerWeekend);
                weekendJob.Elements.Add(jobDependencyWeekend);
                weekendJob.Elements.Add(jobDependencyWeekend2);

                if (convertedJobs.TryGetValue(JobFolderName[jobUID]?.CategoryName ?? "", out var jobForFolder))
                {
                    jobForFolder.Add(job);
                    jobForFolder.Add(weekendJob);
                }
                else
                {
                    convertedJobs.Add(JobFolderName[jobUID]?.CategoryName ?? "", new List <Job> {
                        job, weekendJob
                    });
                }
                break;

            default:
                jobProcessed = false;
                break;
            }

            return(jobProcessed);
        }
        public void ShouldFullyPopulateFromReflector()
        {
            string xml = string.Format(@"<scheduleTrigger name=""nightly"" time=""12:00:00"" buildCondition=""ForceBuild"">
<weekDays>
	<weekDay>Monday</weekDay>
	<weekDay>Tuesday</weekDay>
</weekDays>
</scheduleTrigger>");

            trigger = (ScheduleTrigger)NetReflector.Read(xml);
            Assert.AreEqual("12:00:00", trigger.Time);
            Assert.AreEqual(DayOfWeek.Monday, trigger.WeekDays[0]);
            Assert.AreEqual(DayOfWeek.Tuesday, trigger.WeekDays[1]);
            Assert.AreEqual(BuildCondition.ForceBuild, trigger.BuildCondition);
            Assert.AreEqual("nightly", trigger.Name);
        }
Ejemplo n.º 23
0
        public void DowNextWeekTest()
        {
            var schedule = new ScheduleTrigger
            {
                WindowsString = "Su-12:34"
            };

            var reference = new DateTime(2017, 7, 10, 10, 0, 0);
            var after     = new DateTime(2017, 7, 10, 10, 0, 0); // 2017-7-10 was a Monday

            var triggerTimes = schedule.GetTriggerTimes(reference, after).Take(6).ToArray();

            Assert.AreEqual(triggerTimes[0].Trigger, reference + new TimeSpan(6, 2, 34, 0));
            Assert.AreEqual(triggerTimes[1].Trigger, reference + new TimeSpan(13, 2, 34, 0));
            Assert.AreEqual(triggerTimes[2].Trigger, reference + new TimeSpan(20, 2, 34, 0));
            Assert.AreEqual(triggerTimes[3].Trigger, reference + new TimeSpan(27, 2, 34, 0));
            Assert.AreEqual(triggerTimes[4].Trigger, reference + new TimeSpan(34, 2, 34, 0));
            Assert.AreEqual(triggerTimes[5].Trigger, reference + new TimeSpan(41, 2, 34, 0));
        }
Ejemplo n.º 24
0
        public void DowNextWeekPriorToAfterTimeOfDayTest()
        {
            var schedule = new ScheduleTrigger
            {
                WindowsString = "Su-8:34"  // this time of day is prior to the after time of day below. with day-interval-based scheduling, we would skip ahead to the next day (monday) at this time. with dow-based scheduling we will schedule at this exact time.
            };

            var reference = new DateTime(2017, 7, 10, 10, 0, 0);
            var after     = new DateTime(2017, 7, 10, 10, 0, 0); // 2017-7-10 was a Monday

            var triggerTimes = schedule.GetTriggerTimes(reference, after).Take(6).ToArray();

            Assert.AreEqual(triggerTimes[0].Trigger, reference + new TimeSpan(6, -2, 34, 0));
            Assert.AreEqual(triggerTimes[1].Trigger, reference + new TimeSpan(13, -2, 34, 0));
            Assert.AreEqual(triggerTimes[2].Trigger, reference + new TimeSpan(20, -2, 34, 0));
            Assert.AreEqual(triggerTimes[3].Trigger, reference + new TimeSpan(27, -2, 34, 0));
            Assert.AreEqual(triggerTimes[4].Trigger, reference + new TimeSpan(34, -2, 34, 0));
            Assert.AreEqual(triggerTimes[5].Trigger, reference + new TimeSpan(41, -2, 34, 0));
        }
Ejemplo n.º 25
0
        public void DowSameDayPriorToAfterTimeTest()
        {
            var schedule = new ScheduleTrigger
            {
                WindowsString = "Mo-8:34"  // this time is prior to the time of day specified in the after datetime. we allow this to be scheduled. in practice this will cause surveys (and other scheduled events) to trigger immediately.
            };

            var reference = new DateTime(2017, 7, 10, 10, 0, 0);
            var after     = new DateTime(2017, 7, 10, 10, 0, 0); // 2017-7-10 was a Monday

            var triggerTimes = schedule.GetTriggerTimes(reference, after).Take(6).ToArray();

            Assert.AreEqual(triggerTimes[0].Trigger, reference + new TimeSpan(0, -2, 34, 0));
            Assert.AreEqual(triggerTimes[1].Trigger, reference + new TimeSpan(7, -2, 34, 0));
            Assert.AreEqual(triggerTimes[2].Trigger, reference + new TimeSpan(14, -2, 34, 0));
            Assert.AreEqual(triggerTimes[3].Trigger, reference + new TimeSpan(21, -2, 34, 0));
            Assert.AreEqual(triggerTimes[4].Trigger, reference + new TimeSpan(28, -2, 34, 0));
            Assert.AreEqual(triggerTimes[5].Trigger, reference + new TimeSpan(35, -2, 34, 0));
        }
        public void  AddTriggers(
            BuildDefinition definition,
            CustomBuildDefinitionPayload payload)
        {
            if (payload.CITriggers != null)
            {
                foreach (var trg in payload.CITriggers)
                {
                    var trigger = new ContinuousIntegrationTrigger();
                    trigger.BranchFilters.AddRange(trg.BranchFilter);
                    trigger.PathFilters.AddRange(trg.PathFilter);
                    trigger.SettingsSourceType           = 1;
                    trigger.BatchChanges                 = false;
                    trigger.MaxConcurrentBuildsPerBranch = 1;
                    trigger.PollingInterval              = 0;

                    definition.Triggers.Add(trigger);
                }
            }


            if (payload.ScheduleTriggers != null)
            {
                var schTriggers = new ScheduleTrigger {
                    Schedules = new List <Schedule>()
                };

                foreach (var trg in payload.ScheduleTriggers)
                {
                    var sch = new Schedule();

                    sch.BranchFilters.AddRange(trg.BranchFilter);
                    sch.StartHours   = trg.Hours;
                    sch.StartMinutes = trg.Minutes;
                    sch.TimeZoneId   = trg.TimeZone;
                    sch.DaysToBuild  = GetScheduleDay(trg.DayOfTheWeek);
                    schTriggers.Schedules.Add(sch);
                }

                definition.Triggers.Add(schTriggers);
            }
        }
Ejemplo n.º 27
0
        public void SchedulesAfterOneDayTest()
        {
            var schedule = new ScheduleTrigger {
                Windows = "10:00, 10:20-10:30"
            };

            var referenceDate = new DateTime(1986, 4, 18, 10, 10, 0);
            var afterDate     = new DateTime(1986, 4, 19, 10, 10, 0);

            var triggerTimes = schedule.GetTriggerTimes(referenceDate, afterDate).Take(6).ToArray();

            Assert.IsTrue(new TimeSpan(1, 0, 10, 0) <= triggerTimes[0].ReferenceTillTrigger && triggerTimes[0].ReferenceTillTrigger <= new TimeSpan(1, 0, 20, 0));
            Assert.AreEqual(new TimeSpan(1, 23, 50, 0), triggerTimes[1].ReferenceTillTrigger);

            Assert.IsTrue(new TimeSpan(2, 0, 10, 0) <= triggerTimes[2].ReferenceTillTrigger && triggerTimes[2].ReferenceTillTrigger <= new TimeSpan(2, 0, 20, 0));
            Assert.AreEqual(new TimeSpan(2, 23, 50, 0), triggerTimes[3].ReferenceTillTrigger);

            Assert.IsTrue(new TimeSpan(3, 0, 10, 0) <= triggerTimes[4].ReferenceTillTrigger && triggerTimes[4].ReferenceTillTrigger <= new TimeSpan(3, 0, 20, 0));
            Assert.AreEqual(new TimeSpan(3, 23, 50, 0), triggerTimes[5].ReferenceTillTrigger);
        }
Ejemplo n.º 28
0
        public void ScheduleTrigger_AssertConstructor()
        {
            var t            = new Mock <ITrigger>();
            var service      = new Mock <IDev2TaskService>();
            var mockTask     = new Mock <IDev2TaskDefinition>();
            var mockTriggers = new Mock <ITriggerCollection>();
            var mockAction   = new Mock <IExecAction>();
            var mockFactory  = new Mock <ITaskServiceConvertorFactory>();

            mockTask.Setup(a => a.XmlText).Returns("bob").Verifiable();
            mockTask.Setup(a => a.Triggers).Returns(mockTriggers.Object);
            mockFactory.Setup(a => a.CreateExecAction(It.IsAny <IAction>())).Returns(mockAction.Object);
            mockTriggers.Setup(a => a.Add(t.Object)).Verifiable();
            service.Setup(a => a.NewTask()).Returns(mockTask.Object);

            var trigger = new ScheduleTrigger(TaskState.Disabled, t.Object, service.Object, mockFactory.Object);

            Assert.AreEqual(trigger.NativeXML, "bob");
            Assert.AreEqual(trigger.State, TaskState.Disabled);
        }
Ejemplo n.º 29
0
        public void SchedulesOneFutureTest()
        {
            var schedule = new ScheduleTrigger {
                Windows = "10:00, 10:20-10:30"
            };

            var fromDate  = new DateTime(1986, 4, 18, 10, 10, 0);
            var afterDate = new DateTime(1986, 4, 18, 10, 10, 0);

            var triggerTimes = schedule.GetTriggerTimes(fromDate, afterDate).Take(6).ToArray();

            Assert.IsTrue(new TimeSpan(0, 0, 10, 0) <= triggerTimes[0].TimeTill && triggerTimes[0].TimeTill <= new TimeSpan(0, 0, 20, 0));
            Assert.AreEqual(new TimeSpan(0, 23, 50, 0), triggerTimes[1].TimeTill);

            Assert.IsTrue(new TimeSpan(1, 0, 10, 0) <= triggerTimes[2].TimeTill && triggerTimes[2].TimeTill <= new TimeSpan(1, 0, 20, 0));
            Assert.AreEqual(new TimeSpan(1, 23, 50, 0), triggerTimes[3].TimeTill);

            Assert.IsTrue(new TimeSpan(2, 0, 10, 0) <= triggerTimes[4].TimeTill && triggerTimes[4].TimeTill <= new TimeSpan(2, 0, 20, 0));
            Assert.AreEqual(new TimeSpan(2, 23, 50, 0), triggerTimes[5].TimeTill);
        }
        private List <IResourceHistory> RunOutput(bool expectCorrectInput)
        {
            var esbMethod = new GetScheduledResourceHistory();
            var security  = new Mock <ISecurityWrapper>();

            esbMethod.SecurityWrapper = security.Object;
            var factory = new Mock <IServerSchedulerFactory>();
            var model   = new Mock <IScheduledResourceModel>();
            var ws      = new Mock <IWorkspace>();
            var history = new List <IResourceHistory>
            {
                new ResourceHistory("", new List <IDebugState> {
                    new DebugState()
                },
                                    new EventInfo(DateTime.MinValue, TimeSpan.MaxValue, DateTime.MaxValue, ScheduleRunStatus.Error, "115"),
                                    "leon")
            };
            var trigger = new ScheduleTrigger(TaskState.Disabled,
                                              new Dev2DailyTrigger(new TaskServiceConvertorFactory(), new DailyTrigger(21)),
                                              new Dev2TaskService(new TaskServiceConvertorFactory()),
                                              new TaskServiceConvertorFactory());
            var res = new ScheduledResource("a", SchedulerStatus.Enabled, DateTime.Now, trigger, "dave");
            Dictionary <string, StringBuilder> inp = new Dictionary <string, StringBuilder>();

            factory.Setup(
                a =>
                a.CreateModel(GlobalConstants.SchedulerFolderId, It.IsAny <ISecurityWrapper>())).Returns(model.Object);
            Dev2JsonSerializer serialiser = new Dev2JsonSerializer();

            if (expectCorrectInput)
            {
                model.Setup(a => a.CreateHistory(It.IsAny <ScheduledResource>())).Returns(history).Verifiable();
                inp.Add("Resource", serialiser.SerializeToBuilder(res));
            }

            esbMethod.SchedulerFactory = factory.Object;

            var output = esbMethod.Execute(inp, ws.Object);

            return(serialiser.Deserialize <List <IResourceHistory> >(output));
        }