public void EvaluateOneTimeScheduledTaskTest2()
        {
            //arrange
            var currentTime = new StubITimeProvider { TimeGet = () => DateTime.Parse("5/21/14 15:02:20") };
            var task = new StubIOneTimeScheduledTask { StartTimeGet = () => DateTime.Parse("5/21/14 15:02:21") };

            //act
            var result = task.EvalOneTimeTrigger(currentTime);

            //assert
            Assert.IsFalse(result);
        }
        public void LogEntryToStringTest()
        {
            //Arrange 
            var time = new StubITimeProvider {TimeGet = () => new DateTime(2000, 01, 02, 13, 1, 40, 100)};
            var entry = new LogEntry(time) {Source = "UnitTest", Message = "Sample log entry"};

            //Assert
            var result = entry.ToString();

            //Act
            Assert.AreEqual("2000-01-02-01:01:40:100|UnitTest            |Sample log entry", result);
        }
        public void IntervalTestBlock1()
        {
            //arrange
            var currentTime = new StubITimeProvider { TimeGet = () => DateTime.Parse("5/20/14 15:02:21 ") };
            var task = new StubIIntervalScheduledTask
            {
                StartTimeGet = () => DateTime.Parse("5/20/14 15:02:20"),
                IntevalGet = () => TimeSpan.FromMilliseconds(1)
            };

            //act
            var result = task.EvalIntervalTrigger(currentTime);

            //assert
            Assert.IsFalse(result);
        }
        public void EvaluateOneTimeScheduledTaskTest2()
        {
            //arrange
            var currentTime = new StubITimeProvider {
                TimeGet = () => DateTime.Parse("5/21/14 15:02:20")
            };
            var task = new StubIOneTimeScheduledTask {
                StartTimeGet = () => DateTime.Parse("5/21/14 15:02:21")
            };

            //act
            var result = task.EvalOneTimeTrigger(currentTime);

            //assert
            Assert.IsFalse(result);
        }
        public void MonthlyTestBlock1()
        {
            //arrange
            var currentTime = new StubITimeProvider { TimeGet = () => DateTime.Parse("5/20/14 15:02:20 ") };
            var task = new StubIMonthlyScheduledTask
            {
                StartTimeGet = () => DateTime.Parse("5/20/14 15:02:20"),
                RepeatIntervalInMonthsGet = () => 0
            };

            //act
            var result = task.EvalMonthlyTrigger(currentTime);

            //assert
            Assert.IsFalse(result);
        }
Example #6
0
        public void LogEntryToStringTest()
        {
            //Arrange
            var time = new StubITimeProvider {
                TimeGet = () => new DateTime(2000, 01, 02, 13, 1, 40, 100)
            };
            var entry = new LogEntry(time)
            {
                Source = "UnitTest", Message = "Sample log entry"
            };

            //Assert
            var result = entry.ToString();

            //Act
            Assert.AreEqual("2000-01-02-01:01:40:100|UnitTest            |Info                |Sample log entry", result);
        }
        public void MonthlyTestBlock1()
        {
            //arrange
            var currentTime = new StubITimeProvider {
                TimeGet = () => DateTime.Parse("5/20/14 15:02:20 ")
            };
            var task = new StubIMonthlyScheduledTask
            {
                StartTimeGet = () => DateTime.Parse("5/20/14 15:02:20"),
                RepeatIntervalInMonthsGet = () => 0
            };

            //act
            var result = task.EvalMonthlyTrigger(currentTime);

            //assert
            Assert.IsFalse(result);
        }
        public void IntervalTestBlock1()
        {
            //arrange
            var currentTime = new StubITimeProvider {
                TimeGet = () => DateTime.Parse("5/20/14 15:02:21 ")
            };
            var task = new StubIIntervalScheduledTask
            {
                StartTimeGet = () => DateTime.Parse("5/20/14 15:02:20"),
                IntevalGet   = () => TimeSpan.FromMilliseconds(1)
            };

            //act
            var result = task.EvalIntervalTrigger(currentTime);

            //assert
            Assert.IsFalse(result);
        }
        public void EvaluateIntervalScheduledTaskTest6()
        {
            //arrange
            var currentTime = new StubITimeProvider {
                TimeGet = () => DateTime.Parse("6/5/14 17:02:20")
            };
            var task = new StubIIntervalScheduledTask
            {
                StartTimeGet = () => DateTime.Parse("5/20/14 15:02:20"),
                IntevalGet   = () => TimeSpan.FromSeconds(1)
            };


            //act
            var result = task.EvalIntervalTrigger(currentTime);

            //assert
            Assert.IsTrue(result);
        }
        public void EvaluateScheduledTaskSkipDaysInverseTest2()
        {
            //arrange
            var currentTime = new StubITimeProvider {
                TimeGet = () => DateTime.Parse("6/6/14 15:02:20")
            };
            var task = new StubIDailyScheduledTask
            {
                StartTimeGet            = () => DateTime.Parse("5/20/14 15:02:20"),
                RepeatIntervalInDaysGet = () => 3
            };


            //act
            var result = task.EvalDailyTrigger(currentTime);

            //assert
            Assert.IsFalse(result);
        }
        public void EvaluateScheduledTaskMilliSecondsTest4()
        {
            //arrange
            var currentTime = new StubITimeProvider {
                TimeGet = () => DateTime.Parse("5/20/14 15:02:21").AddMilliseconds(200)
            };
            var task = new StubIDailyScheduledTask
            {
                StartTimeGet            = () => DateTime.Parse("5/20/14 15:02:20").AddMilliseconds(100),
                RepeatIntervalInDaysGet = () => 1
            };


            //act
            var result = task.EvalDailyTrigger(currentTime);

            //assert
            Assert.IsFalse(result);
        }
        public void EvaluateMonthlyScheduledTaskTest6()
        {
            //arrange
            var currentTime = new StubITimeProvider {
                TimeGet = () => DateTime.Parse("7/1/14 15:02:20")
            };
            var task = new StubIMonthlyScheduledTask
            {
                StartTimeGet = () => DateTime.Parse("5/20/14 15:02:20"),
                RepeatIntervalInMonthsGet = () => 2,
                DaysOfMonthToActivateGet  = () => DaysOfMonth.All
            };


            //act
            var result = task.EvalMonthlyTrigger(currentTime);

            //assert
            Assert.IsTrue(result);
        }
        public void EvaluateWeekingScheduledTaskTest9()
        {
            //arrange
            var currentTime = new StubITimeProvider {
                TimeGet = () => DateTime.Parse("5/31/14 15:02:20")
            };
            var task = new StubIWeeklyScheduledTask
            {
                StartTimeGet             = () => DateTime.Parse("5/20/14 15:02:20"),
                RepeatIntervalInWeeksGet = () => 1,
                DaysOfWeekToActivateGet  = () => DaysOfWeek.All
            };


            //act
            var result = task.EvalWeeklyTrigger(currentTime);

            //assert
            Assert.IsTrue(result);
        }
        public async Task NewTaskExecutesTest()
        {
            var dbConnection = new UnitTestDbConnection();

            Database.SetInitializer(new CreateFreshDbInitializer());

            var logEntries        = new List <LogEntry>();
            var ranstoredCommands = new List <int>();

            //Arrange
            var log = new StubIFeedback <LogEntry>
            {
                ReportAsyncT0CancellationToken = (e, c) =>
                {
                    Console.WriteLine(e.ToString());
                    logEntries.Add(e);
                    return(Task.FromResult(0));
                }
            };

            var commandProcessor = new StubICommandProcessor
            {
                RunCommandAsyncNullableOfInt32StringStringCancellationToken = (commandId, argument, argument2, cancellationToken) =>
                {
                    if (commandId.HasValue)
                    {
                        ranstoredCommands.Add(commandId.Value);
                    }
                    return(Task.FromResult(Result.ReportSuccess()));
                }
            };
            var currentTime = new StubITimeProvider {
                TimeGet = () => DateTime.Parse("5/21/14 15:02:20")
            };


            var cts        = new CancellationTokenSource();
            var taskRunner = new ScheduledTaskRunner(log, commandProcessor, dbConnection, currentTime);

            var command = new Command();
            var commandScheduledTask = new DataModel.ScheduledTask
            {
                IsEnabled = true,
                Name      = "New Command added after start",
                Command   = command
            };

            using (var context = new ZvsContext(dbConnection))
            {
                context.ScheduledTasks.Add(commandScheduledTask);
                var r2 = await context.TrySaveChangesAsync(cts.Token);

                Assert.IsFalse(r2.HasError, r2.Message);

                await taskRunner.StartAsync(cts.Token);

                await Task.Delay(500, cts.Token);

                //Act
                commandScheduledTask.StartTime = DateTime.Parse("5/20/14 15:02:20");
                var r = await context.TrySaveChangesAsync(cts.Token);

                Assert.IsFalse(r.HasError, r.Message);

                await Task.Delay(1000, cts.Token);

                await taskRunner.StopAsync(cts.Token);
            }

            //Assert
            Assert.IsTrue(logEntries.All(o => o.Level == LogEntryLevel.Info), "Expected only info type log entries");
            Assert.IsTrue(ranstoredCommands.Count == 1, "Scheduled task runner did not run the correct amount of commands.");
        }
        public void EvaluateScheduledTaskMilliSecondsTest4()
        {
            //arrange
            var currentTime = new StubITimeProvider { TimeGet = () => DateTime.Parse("5/20/14 15:02:21").AddMilliseconds(200) };
            var task = new StubIDailyScheduledTask
            {
                StartTimeGet = () => DateTime.Parse("5/20/14 15:02:20").AddMilliseconds(100),
                RepeatIntervalInDaysGet = () => 1
            };
            

            //act
             var result = task.EvalDailyTrigger(currentTime);

            //assert
            Assert.IsFalse(result);
        }
        public async Task MultipleAsyncRequestsTest()
        {
            var dbConnection = new StubIEntityContextConnection { NameOrConnectionStringGet = () => "MultipleAsyncRequestsTest" };
            Database.SetInitializer(new CreateFreshDbInitializer());

            var logEntries = new List<LogEntry>();
            var ranstoredCommands = new List<int>();

            //Arrange 
            var log = new StubIFeedback<LogEntry>
            {
                ReportAsyncT0CancellationToken = (e, c) =>
                {
                    Console.WriteLine(e.ToString());
                    logEntries.Add(e);
                    return Task.FromResult(0);
                }
            };

            var commandProcessor = new StubICommandProcessor
            {
                RunCommandAsyncNullableOfInt32StringStringCancellationToken = (commandId, argument, argument2, cancellationToken) =>
                {
                    if (commandId.HasValue) ranstoredCommands.Add(commandId.Value);
                    return Task.FromResult(Result.ReportSuccess());
                }
            };
            var currentTime = new StubITimeProvider { TimeGet = () => DateTime.Parse("5/21/14 15:02:20") };


            var cts = new CancellationTokenSource();
            var taskRunner = new ScheduledTaskRunner(log, commandProcessor, dbConnection, currentTime);

            await taskRunner.StartAsync(cts.Token);

            var command = new Command();
            var commandScheduledTask = new DataModel.ScheduledTask
            {
                IsEnabled = true,
                Name = "New Command added after start",
                Command = command
            };
            using (var context = new ZvsContext(dbConnection))
            {
                context.ScheduledTasks.Add(commandScheduledTask);
                var r2 = await context.TrySaveChangesAsync(cts.Token);
                Assert.IsFalse(r2.HasError, r2.Message);

                commandScheduledTask.StartTime = DateTime.Parse("5/20/14 15:02:20");
                var r = await context.TrySaveChangesAsync(cts.Token);
                Assert.IsFalse(r.HasError, r.Message);

                commandScheduledTask.StartTime = DateTime.Parse("5/20/14 15:02:21");
                var r3 = await context.TrySaveChangesAsync(cts.Token);
                Assert.IsFalse(r3.HasError, r.Message);
            }
            //Act
            await Task.Delay(2000, cts.Token);
            await taskRunner.StopAsync(cts.Token);

            //Assert
            Assert.IsTrue(logEntries.All(o => o.Level == LogEntryLevel.Info), "Expected only info type log entries");
            Assert.IsTrue(ranstoredCommands.Count == 0, "Scheduled task runner did not run the correct amount of commands.");
        }
        public void EvaluateScheduledTaskSkipDaysInverseTest2()
        {
            //arrange
            var currentTime = new StubITimeProvider { TimeGet = () => DateTime.Parse("6/6/14 15:02:20") };
            var task = new StubIDailyScheduledTask
            {
                StartTimeGet = () => DateTime.Parse("5/20/14 15:02:20"),
                RepeatIntervalInDaysGet = () => 3
            };
            

            //act
             var result = task.EvalDailyTrigger(currentTime);

            //assert
            Assert.IsFalse(result);
        }
        public void EvaluateIntervalScheduledTaskTest6()
        {
            //arrange
            var currentTime = new StubITimeProvider { TimeGet = () => DateTime.Parse("6/5/14 17:02:20") };
            var task = new StubIIntervalScheduledTask
            {
                StartTimeGet = () => DateTime.Parse("5/20/14 15:02:20"),
                IntevalGet = () => TimeSpan.FromSeconds(1)
            };
            

            //act
             var result = task.EvalIntervalTrigger(currentTime);

            //assert
            Assert.IsTrue(result);
        }
        public void EvaluateWeekingScheduledTaskTest9()
        {
            //arrange
            var currentTime = new StubITimeProvider { TimeGet = () => DateTime.Parse("5/31/14 15:02:20") };
            var task = new StubIWeeklyScheduledTask
            {
                StartTimeGet = () => DateTime.Parse("5/20/14 15:02:20"),
                RepeatIntervalInWeeksGet = () => 1,
                DaysOfWeekToActivateGet = () => DaysOfWeek.All
            };
            

            //act
             var result = task.EvalWeeklyTrigger(currentTime);

            //assert
            Assert.IsTrue(result);
        }
        public void EvaluateMonthlyScheduledTaskTest6()
        {
            //arrange
            var currentTime = new StubITimeProvider { TimeGet = () => DateTime.Parse("7/1/14 15:02:20") };
            var task = new StubIMonthlyScheduledTask
            {
                StartTimeGet = () => DateTime.Parse("5/20/14 15:02:20"),
                RepeatIntervalInMonthsGet = () => 2,
                DaysOfMonthToActivateGet = () => DaysOfMonth.All
            };
            

            //act
             var result = task.EvalMonthlyTrigger(currentTime);

            //assert
            Assert.IsTrue(result);
        }