public void ToSummary_NoRecords() { var jenkensProjectsResult = new JenkensProjectsResult(); var summary = _jenkensTextConverter.ToSummary(jenkensProjectsResult); summary.Should().Be("No jenkins data received. Please try again later!"); }
public string ToSummary(JenkensProjectsResult jenkensProjectsResult) { string[] strings = ToSummaryList(jenkensProjectsResult).ToArray(); if (strings.Length > 0) { return string.Join(". ", strings); } return "No jenkins data received. Please try again later!"; }
public void ToSummary_OnlyOneGoodRecords() { var jenkensProjectsResult = new JenkensProjectsResult() { Jobs = new List<Job>() { new Job() { Color = "blue", Name = "Build - Zapper DB", HealthReport = new List<Health>() { new Health() { Score = 100 } } } , }, }; var summary = _jenkensTextConverter.ToSummary(jenkensProjectsResult); summary.Should().Contain(", there are currently 1 build on jenkins and they are all passing"); }
public void ToSummary_OnlyBadRecords() { var jenkensProjectsResult = new JenkensProjectsResult() { Jobs = new List<Job>() { new Job() { Color = "red", Name = "Build - Zapper DB", HealthReport = new List<Health>() { new Health() { Score = 100 } } } , new Job() { Color = "red", Name = "Build - Zapper IPN Service", HealthReport = new List<Health>() { new Health() { Score = 100 } } } }, }; var summary = _jenkensTextConverter.ToSummary(jenkensProjectsResult); summary.Should().Be("There are currently 2 builds on jenkins and they are all broken. Maybe development is not for you"); }
public async Task GetAllProjects_Translate() { // arrange Setup(); // action var projects = await JenkensProjectsResult(); var jenkensProjectsResult = new JenkensProjectsResult(); var jenkensTextConverter = new JenkensTextConverter(); var summary = jenkensTextConverter.ToSummaryList(projects).ToArray(); foreach (var line in summary) { _log.Info(line); } // assert summary.Length.Should().BeGreaterOrEqualTo(1); }
public IEnumerable<string> ToSummaryList(JenkensProjectsResult jenkensProjectsResult) { // ReSharper disable SimplifyLinqExpression if (jenkensProjectsResult.Jobs != null && !jenkensProjectsResult.Jobs.Any(x => x.IsFailed())) { yield return string.Format("{2}, there are currently {0} {1} on jenkins and they are all passing", jenkensProjectsResult.Jobs.Count, jenkensProjectsResult.Jobs.Count == 1 ? "build" : "builds", GetWelDoneMessage()); } else if (jenkensProjectsResult.Jobs != null && !jenkensProjectsResult.Jobs.Any(x => x.IsPassed())) { yield return string.Format( "There are currently {0} {1} on jenkins and they are all broken. Maybe development is not for you", jenkensProjectsResult.Jobs.Count, jenkensProjectsResult.Jobs.Count == 1 ? "build" : "builds"); } else if (jenkensProjectsResult.Jobs != null && jenkensProjectsResult.Jobs.Any()) { List<Job> failedValues = jenkensProjectsResult.Jobs.Where(x => x.IsFailed()).ToList(); yield return string.Format("You have failed me, there are currently {0} {2} on jenkins with {1} {3} failing", jenkensProjectsResult.Jobs.Count, failedValues.Count, jenkensProjectsResult.Jobs.Count == 1 ? "build" : "builds", failedValues.Count == 1 ? "build" : "builds" ); string[] failedBuildDetail = FailedBuildDetail(failedValues).ToArray(); foreach (string failedValue in failedBuildDetail) { yield return failedValue; } } // ReSharper restore SimplifyLinqExpression string slowestAndFastedBuild = GetSlowestAndFastedBuild(jenkensProjectsResult); if (slowestAndFastedBuild != null) yield return slowestAndFastedBuild; string mostSuccessFullBuild = GetMostSuccessFullBuild(jenkensProjectsResult); if (mostSuccessFullBuild != null) yield return mostSuccessFullBuild; }
public static IEnumerable<Job> GetMyBuildingJobs(this ISettingsManager settingsmanager, JenkensProjectsResult allProjects) { var myBuildingJobs = GetMyBuildingJobs(settingsmanager); return allProjects.Jobs.Where( x => myBuildingJobs.Any(b => x.Name.Equals(b, StringComparison.InvariantCultureIgnoreCase))); }
public void ToSummary_OneGoodAndOneBad() { var jenkensProjectsResult = new JenkensProjectsResult() { Jobs = new List<Job>() { new Job() { Color = "blue", Name = "Build - Zapper DB", HealthReport = new List<Health>() { new Health() { Score = 100 } } } , new Job() { Color = "red", Name = "Build - Zapper IPN Service", LastFailedBuild = new LastFailedBuild() { ChangeSet = new ChangeSet() { items = new List<Item>() { new Item {author = new Author() {fullName = "Rolf Wessels"}}, }}, Timestamp = DateTime.Now.AddDays(-1).ToEpochTimeStamp() } } }, }; var summary = _jenkensTextConverter.ToSummary(jenkensProjectsResult); summary.Should() .Be( "You have failed me, there are currently 2 builds on jenkins with 1 build failing. The Build - Zapper IPN Service last failed 1 day ago, It was last modified by Rolf Wessels"); }
private static JenkensProjectsResult JenkensProjectsResult() { if (_jenkensProjectsResult == null) { var fileStream = File.ReadAllText("save json"); var jsonDeserializer = new JsonDeserializer(); _jenkensProjectsResult = jsonDeserializer.Deserialize<JenkensProjectsResult>(new RestResponse() {Content = fileStream}); _jenkensProjectsResult.Jobs.Count.Should().BeGreaterOrEqualTo(1); } return _jenkensProjectsResult; }
private string GetMostSuccessFullBuild(JenkensProjectsResult jenkensProjectsResult) { if (jenkensProjectsResult.Jobs != null) { var orderedEnumerable = jenkensProjectsResult.Jobs.Where(x => x.Builds != null && x.Builds.Count > 3) .Select(x => new {x.Name, SuccessFullBuilds = SuccessfulBuildInARow(x.Builds)}) .OrderByDescending(x => x.SuccessFullBuilds) .ToArray(); if (orderedEnumerable.Length > 2) { return string.Format("{0} has {1} succesfull builds in a row. {2} has {3} succesfull builds in a row", orderedEnumerable.First().Name, orderedEnumerable.First().SuccessFullBuilds, orderedEnumerable.Last().Name, orderedEnumerable.Last().SuccessFullBuilds); } } return null; }
private string GetSlowestAndFastedBuild(JenkensProjectsResult jenkensProjectsResult) { if (jenkensProjectsResult.Jobs != null) { var orderedEnumerable = jenkensProjectsResult.Jobs.Where(x => x.Builds != null && x.Builds.Count > 3) .Select(x => new {x.Name, Duration = x.Builds.Average(s => s.Duration)}) .OrderBy(x => x.Duration) .ToArray(); if (orderedEnumerable.Length > 2) { return string.Format( "The fastest build is {0} at {1} per build. The slowest build is {2} at {3} per build", orderedEnumerable.First().Name, HumanReadable(TimeSpan.FromMilliseconds(orderedEnumerable.First().Duration), ""), orderedEnumerable.Last().Name, HumanReadable(TimeSpan.FromMilliseconds(orderedEnumerable.Last().Duration), "")); } } return null; }
private async Task<JenkensProjectsResult> JenkensProjectsResult() { return _allProjects ?? (_allProjects = await _jenkensApi.GetAllProjects()); }