public async Task StartPath2() { //Arrange var logEntries = new List <LogEntry>(); var log = new StubIFeedback <LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntries.Add(e); return(Task.FromResult(0)); } }; var cts = new CancellationTokenSource(); var tm = new ScheduledTaskRunner(log, new StubICommandProcessor(), new UnitTestDbConnection(), new CurrentTimeProvider()); //Act await tm.StartAsync(cts.Token); await tm.StartAsync(cts.Token); //Assert Assert.IsTrue(logEntries.Last().Level == LogEntryLevel.Warn); }
public async Task StopPath1() { //Arrange var logEntries = new List <LogEntry>(); var log = new StubIFeedback <LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntries.Add(e); return(Task.FromResult(0)); } }; var cts = new CancellationTokenSource(); var tm = new ScheduledTaskRunner(log, new StubICommandProcessor(), new UnitTestDbConnection(), new CurrentTimeProvider()); //Act await tm.StartAsync(cts.Token); await tm.StopAsync(cts.Token); //Assert Assert.IsTrue(logEntries.All(o => o.Level == LogEntryLevel.Info), "Expected only info type log entries"); Assert.IsTrue(logEntries.Any(o => o.Message.Contains("stopped")), "Manger not started or word started not in the log."); Assert.IsFalse(tm.IsRunning); }
public async Task StartPath1() { //Arrange var logEntries = new List<LogEntry>(); var log = new StubIFeedback<LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntries.Add(e); return Task.FromResult(0); } }; var cts = new CancellationTokenSource(); var tm = new ScheduledTaskRunner(log, new StubICommandProcessor(), new ZvsEntityContextConnection(), new CurrentTimeProvider()); //Act await tm.StartAsync(cts.Token); //Assert Assert.IsTrue(logEntries.All(o => o.Level == LogEntryLevel.Info), "Expected only info type log entries"); Assert.IsTrue(logEntries.Any(o => o.Message.Contains("started")), "Manger not started or word started not in the log."); }
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 async Task StartPath2() { //Arrange var logEntries = new List<LogEntry>(); var log = new StubIFeedback<LogEntry> { ReportAsyncT0CancellationToken = (e, c) => { Console.WriteLine(e.ToString()); logEntries.Add(e); return Task.FromResult(0); } }; var cts = new CancellationTokenSource(); var tm = new ScheduledTaskRunner(log, new StubICommandProcessor(), new ZvsEntityContextConnection(), new CurrentTimeProvider()); //Act await tm.StartAsync(cts.Token); await tm.StartAsync(cts.Token); //Assert Assert.IsTrue(logEntries.Last().Level == LogEntryLevel.Warn); }
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."); }