public async Task GetFinishedJobRuns_OutsideTimeWindow_ReturnsNoFinishedJobs() { // Arrange DateTimeOffset startWindow = BogusGenerator.Date.RecentOffset(); DateTimeOffset endWindow = BogusGenerator.Date.SoonOffset(); IEnumerable <Run> includedRuns = CreateRandomRuns(startWindow, endWindow); IEnumerable <Run> tooLateRuns = CreateRandomRuns(endWindow, BogusGenerator.Date.FutureOffset()); IEnumerable <Run> allRuns = includedRuns.Concat(tooLateRuns); IEnumerable <Job> jobs = includedRuns.Select(r => new Job { JobId = r.JobId, Settings = new JobSettings { Name = Guid.NewGuid().ToString() } }).ToArray(); DatabricksClient client = DatabricksClientFactory.Create(allRuns, jobs); var provider = new DatabricksInfoProvider(client, NullLogger.Instance); // Act IEnumerable <JobRun> finishedJobs = await provider.GetFinishedJobRunsAsync(BogusGenerator.Date.PastOffset(), startWindow); // Assert Assert.Empty(finishedJobs); }
public async Task GetFinishedJobRuns_WithEndTimeLessThanStartTime_Throws() { // Arrange DateTimeOffset startWindow = BogusGenerator.Date.SoonOffset(); DateTimeOffset endWindow = BogusGenerator.Date.RecentOffset(); DatabricksClient client = DatabricksClientFactory.Create(Enumerable.Empty <Run>(), Enumerable.Empty <Job>()); var provider = new DatabricksInfoProvider(client, NullLogger.Instance); // Act / Assert await Assert.ThrowsAnyAsync <ArgumentException>(() => provider.GetFinishedJobRunsAsync(startWindow, endWindow)); }
public async Task GetFinishedJobRuns_WithNoAvailableFinishedJobs_ReturnsNoFinishedJobs() { // Arrange DateTimeOffset startWindow = BogusGenerator.Date.RecentOffset(); DateTimeOffset endWindow = BogusGenerator.Date.SoonOffset(); DatabricksClient client = DatabricksClientFactory.Create(Enumerable.Empty <Run>(), Enumerable.Empty <Job>()); var provider = new DatabricksInfoProvider(client, NullLogger.Instance); // Act IEnumerable <JobRun> finishedJobs = await provider.GetFinishedJobRunsAsync(startWindow, endWindow); // Assert Assert.Empty(finishedJobs); }
public async Task GetFinishedJobRuns_WithinTimeWindow_OnlyReturnsFinishedJobsWithinTheTimeWindow() { // Arrange DateTimeOffset startWindow = BogusGenerator.Date.RecentOffset(); DateTimeOffset endWindow = BogusGenerator.Date.SoonOffset(); IEnumerable <Run> includedRuns = CreateRandomRuns(startWindow, endWindow); IEnumerable <Run> tooLateRuns = CreateRandomRuns(endWindow, BogusGenerator.Date.FutureOffset()); IEnumerable <Run> allRuns = includedRuns.Concat(tooLateRuns); IEnumerable <Job> jobs = includedRuns.Select(r => new Job { JobId = r.JobId, Settings = new JobSettings { Name = Guid.NewGuid().ToString() } }).ToArray(); DatabricksClient client = DatabricksClientFactory.Create(allRuns, jobs); var provider = new DatabricksInfoProvider(client, NullLogger.Instance); // Act IEnumerable <JobRun> finishedJobs = await provider.GetFinishedJobRunsAsync(startWindow, endWindow); // Assert Assert.NotNull(finishedJobs); Assert.NotEmpty(finishedJobs); Assert.Equal(finishedJobs.Count(), includedRuns.Count()); Assert.All(finishedJobs, job => { Assert.Contains(includedRuns, run => run.RunId == job.Run.RunId); Assert.DoesNotContain(tooLateRuns, run => run.RunId == job.Run.RunId); Job expectedJob = Assert.Single(jobs, j => j.Settings.Name == job.JobName); Assert.NotNull(expectedJob); Assert.Equal(expectedJob.JobId, job.Run.JobId); }); }