protected void BuildMenuOpening( ContextMenuStrip buildMenu, ToolStripMenuItem when, ToolStripMenuItem affectsTrayIcon, ToolStripMenuItem stopWatching, ToolStripSeparator toolStripSeparator1 ) { BuildDefinitionSetting buildDefinitionSetting = GetActiveBuildDefinitionSetting(); IEnumerable <ToolStripMenuItem> toolStripItems = Rule.TriggerTypes.Select(i => WhenMenu(i, buildDefinitionSetting, person: null)); when.DropDownItems.Clear(); AddToolStripItems(when.DropDownItems, toolStripItems); buildMenu.Items.Clear(); if (buildDefinitionSetting != null) { buildMenu.Items.Add(affectsTrayIcon); buildMenu.Items.Add(stopWatching); } buildMenu.Items.Add(when); if (buildDefinitionSetting != null) { buildMenu.Items.Add(toolStripSeparator1); var itemsToAppend = buildDefinitionSetting .PeopleMinusUserMappings(Settings) .Distinct() .Select(p => PersonMenu(p, buildDefinitionSetting)) .ToArray(); AddToolStripItems(buildMenu.Items, itemsToAppend); } }
public void TeamCityBuildStatus_PassingBuildNoComment() { var teamCityFailingBuild = TeamCityResources.TeamCityFailingBuild; var teamCityFailingChange = TeamCityResources.TeamCityFailingChange; BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting { Name = "Name", Id = "BuildDefinitionId" }; var buildStatus = new TeamCityBuildStatus(buildDefinitionSetting, teamCityFailingBuild, teamCityFailingChange); Assert.AreEqual(BuildStatusEnum.Broken, buildStatus.BuildStatusEnum); Assert.AreEqual("BuildDefinitionId", buildStatus.BuildDefinitionId); Assert.AreEqual("BuildConfig4", buildStatus.Name); Assert.AreEqual("lee", buildStatus.RequestedBy); Assert.AreEqual(new DateTime(2012, 1, 27, 0, 15, 45, 0), buildStatus.StartedTime, HudsonBuildStatusTest.DateAsCode(buildStatus.StartedTime.Value)); string expectedComment = @"Merge branch 'master' of C:\dev\CiTest Conflicts: CiTest/Program.cs" .Replace("\r", ""); Assert.AreEqual(expectedComment.Replace("\r\n", "\r"), buildStatus.Comment); Assert.AreEqual(new DateTime(2012, 1, 27, 0, 16, 2, 0), buildStatus.FinishedTime, HudsonBuildStatusTest.DateAsCode(buildStatus.FinishedTime.Value)); // timestamp+duration Assert.AreEqual("http://win7ci:8080/viewLog.html?buildId=35&buildTypeId=bt2", buildStatus.Url); Assert.AreEqual("35", buildStatus.BuildId); }
public void CruiseControlNetBuildStatus_TwoBackToBackNotStartedBuilds_StartedTimeShouldBeLastBuild() { var document = ResourceManager.CruiseControlNetJoesProject2; BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting(); buildDefinitionSetting.Name = "Name"; buildDefinitionSetting.Id = "BuildDefinitionId"; XElement projectElement = document.Root.Element("Project"); CruiseControlNetBuildStatus.ClearCache(); new CruiseControlNetBuildStatus(projectElement, null); CruiseControlNetBuildStatus buildStatus = new CruiseControlNetBuildStatus(projectElement, null); Assert.AreEqual(BuildStatusEnum.Unknown, buildStatus.BuildStatusEnum); Assert.AreEqual("CruiseControlNetProj1", buildStatus.BuildDefinitionId); Assert.AreEqual("CruiseControlNetProj1", buildStatus.Name); Assert.AreEqual(null, buildStatus.RequestedBy); Assert.IsNotNull(buildStatus.StartedTime); Assert.AreEqual(new DateTime(2011, 8, 27, 17, 21, 27, 843).ToString(), buildStatus.StartedTime.Value.ToUniversalTime().ToString(), HudsonBuildStatusTest.DateAsCode(buildStatus.StartedTime.Value.ToUniversalTime())); Assert.IsNull(buildStatus.Comment); Assert.IsNotNull(buildStatus.FinishedTime); Assert.AreEqual(new DateTime(2011, 8, 27, 17, 21, 27, 843).ToString(), buildStatus.FinishedTime.Value.ToUniversalTime().ToString(), HudsonBuildStatusTest.DateAsCode(buildStatus.FinishedTime.Value.ToUniversalTime())); //Assert.AreEqual("http://win7ci:8081/job/SvnTest/30/", buildStatus.Url); //Assert.AreEqual(30, buildStatus.BuildId); }
private AppVeyorBuildStatus GetBuildStatus(BuildDefinitionSetting buildDefinitionSetting, CiEntryPointSetting ciEntryPointSetting) { var token = ciEntryPointSetting.GetPassword(); var projectInfo = AppVeyorBuildDefinition.FromId(buildDefinitionSetting.Id); var serviceClient = CreateClient(ciEntryPointSetting.Url, token); var request = new GetProjectLastBuild { AccountName = projectInfo.AccountName, ProjectSlug = projectInfo.Slug }; try { var response = serviceClient.Get(request); if (response.Build == null) { throw new BuildDefinitionNotFoundException(buildDefinitionSetting); } return(new AppVeyorBuildStatus(CreateProjectUrl(projectInfo), response.Project, response.Build, buildDefinitionSetting)); } catch (WebServiceException) { throw new BuildDefinitionNotFoundException(buildDefinitionSetting); } }
public void CruiseControlNetBuildStatus_ChangesToInProgress() { var inProgressStatus = ResourceManager.CruiseControlNetJoesProject1; var notInProgressStatus = ResourceManager.CruiseControlNetJoesProject2; BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting(); buildDefinitionSetting.Name = "Name"; buildDefinitionSetting.Id = "BuildDefinitionId"; XElement notInProgressStatusProjectElement = notInProgressStatus.Root.Element("Project"); XElement inProgressStatusProjectElement = inProgressStatus.Root.Element("Project"); CruiseControlNetBuildStatus.ClearCache(); new CruiseControlNetBuildStatus(notInProgressStatusProjectElement, null); CruiseControlNetBuildStatus buildStatus = new CruiseControlNetBuildStatus(inProgressStatusProjectElement, null); Assert.AreEqual(BuildStatusEnum.InProgress, buildStatus.BuildStatusEnum); Assert.AreEqual("CruiseControlNetProj1", buildStatus.BuildDefinitionId); Assert.AreEqual("CruiseControlNetProj1", buildStatus.Name); Assert.AreEqual(null, buildStatus.RequestedBy); Assert.IsNotNull(buildStatus.StartedTime); Assert.AreEqual(DateTime.Now.ToString(), buildStatus.StartedTime.Value.ToString()); Assert.IsNull(buildStatus.Comment); Assert.IsNull(buildStatus.FinishedTime); Assert.AreEqual("http://VMXP/ccnet/server/local/project/CruiseControlNetProj1/build/log20110828202005Lbuild.3.xml/ViewBuildReport.aspx", buildStatus.Url); Assert.AreEqual("3", buildStatus.BuildId); }
protected void EditRulesClick(Control editRules, ContextMenuStrip buildMenu, ToolStripMenuItem affectsTrayIcon) { BuildDefinitionSetting buildDefinitionSetting = GetActiveBuildDefinitionSetting(); var location = PointToScreen(editRules.Location); buildMenu.Show(location.X + editRules.Width, location.Y + editRules.Height); affectsTrayIcon.Checked = buildDefinitionSetting == null || buildDefinitionSetting.AffectsTrayIcon; }
private ToolStripMenuItem PersonMenu(string person, BuildDefinitionSetting buildDefinitionSetting) { var displayName = Settings.TryGetDisplayName(person); ToolStripMenuItem menu = new ToolStripMenuItem(displayName); var toolStripItems = Rule.TriggerTypes.Select(i => WhenMenu(i, buildDefinitionSetting, person)); AddToolStripItems(menu.DropDownItems, toolStripItems); return(menu); }
private void InitialiseBuildStatus(BuildDefinitionSetting buildDefinitionSetting, string defaultBuildStatusMessage) { BuildDefinitionId = buildDefinitionSetting.Id; Name = buildDefinitionSetting.Name; BuildStatusEnum = BuildStatusEnum.Unknown; StartedTime = null; FinishedTime = null; BuildStatusMessage = defaultBuildStatusMessage ?? string.Empty; }
protected void InvokeBuildDefinitionNotFound(BuildDefinitionSetting buildDefinitionSetting) { var e = BuildDefinitionNotFound; if (e != null) { e(this, new BuildDefinitionNotFoundArgs(buildDefinitionSetting)); } }
protected TeamCityBuildStatus GetBuildStatusAndCommentsFromXDocument( string rootUrl, string userName, string password, BuildDefinitionSetting buildDefinitionSetting, XDocument buildResultXDoc) { XDocument changeResultXDoc = null; try { if (buildResultXDoc.Root == null) { throw new Exception("Could not get project build status"); } var changesNode = buildResultXDoc.Descendants("changes").FirstOrDefault(); if (changesNode == null) { var title = buildResultXDoc.Descendants("title").FirstOrDefault(); if (title != null && title.Value.StartsWith("Cleanup in progress")) { throw new ServerUnavailableException("Cleanup in progress"); } _log.Error("There was no changes element in the following XML: " + buildResultXDoc); return(new TeamCityBuildStatus(buildDefinitionSetting) { BuildStatusEnum = BuildStatusEnum.Unknown }); } var count = changesNode.AttributeValueOrDefault("count"); bool commentsExist = !string.IsNullOrEmpty(count) && count != "0"; if (commentsExist) { var changesHref = changesNode.AttributeValueOrDefault("href"); var changesUrl = rootUrl + changesHref; XDocument changesResultXDoc = DownloadXml(changesUrl, userName, password); var changeNode = changesResultXDoc.Descendants("change").FirstOrDefault(); if (changeNode == null) { _log.Debug("No change node found"); } else { var changeHref = changeNode.AttributeValueOrDefault("href"); var changeUrl = rootUrl + changeHref; changeResultXDoc = DownloadXml(changeUrl, userName, password); } } } catch (Exception ex) { _log.Error("Error parsing xml. BuildResultXDoc: " + buildResultXDoc + "\r\n\r\n ChangeResultXDoc: " + changeResultXDoc, ex); throw; } return(new TeamCityBuildStatus(buildDefinitionSetting, buildResultXDoc, changeResultXDoc)); }
public TeamCityBuildStatus(BuildDefinitionSetting buildDefinitionSetting, XDocument buildResultXDoc, XDocument changeResultXDoc) : this(buildDefinitionSetting) { try { if (changeResultXDoc != null) { XElement firstComment = changeResultXDoc.Descendants("comment").FirstOrDefault(); if (firstComment != null) { Comment = firstComment.Value.Trim(); } RequestedBy = changeResultXDoc.Root.AttributeValueOrDefault("username"); } string status = buildResultXDoc.Root.AttributeValueOrDefault("status"); string startedTimeStr = buildResultXDoc.Root.ElementValueOrDefault("startDate"); string finishedTimeStr = buildResultXDoc.Root.ElementValueOrDefault("finishDate"); var buildType = buildResultXDoc.Descendants("buildType").ToList(); if (buildType.Any()) { var name = buildType.First().AttributeValueOrDefault("name"); Name = name; } StartedTime = GetTeamCityDate(startedTimeStr); if (string.IsNullOrEmpty(finishedTimeStr)) { BuildStatusEnum = BuildStatusEnum.InProgress; } else { FinishedTime = GetTeamCityDate(finishedTimeStr); BuildStatusEnum = ToBuildStatusEnum(status); if (BuildStatusEnum == BuildStatusEnum.Unknown) { _log.Debug("Received an unknown build status from the following buildResult: " + buildResultXDoc); } } Url = buildResultXDoc.Root.AttributeValueOrDefault("webUrl"); if (Url != null) { Url = Url.Trim(); } BuildId = buildResultXDoc.Root.AttributeValueOrDefault("id"); } catch (Exception ex) { _log.Error("Error parsing xml. BuildResultXDoc: " + buildResultXDoc + "\r\n\r\n ChangeResultXDoc: " + changeResultXDoc, ex); throw; } }
private IEnumerable <BuildStatus> ReadAllInternal(BuildDefinitionSetting buildDefinitionSetting) { string location = GetBuildLocation(buildDefinitionSetting); if (!FileAdapter.Exists(location)) { return(new List <BuildStatus>()); } return(ReadAllFromLocation(location)); }
public void HudsonBuildStatus_WhenTreatUnstableAsSuccessIsFalseAndBuildIsUnstable_ResultUnsuccessful() { var jenkinsUnstable = ResourceManager.JenkinsUnstable; BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting(); buildDefinitionSetting.Name = "Name"; buildDefinitionSetting.Id = "BuildDefinitionId"; HudsonBuildStatus buildStatus = new HudsonBuildStatus(jenkinsUnstable, buildDefinitionSetting, null, treatUnstableAsSuccess: false); Assert.AreEqual(BuildStatusEnum.Broken, buildStatus.BuildStatusEnum); }
protected void AffectsTrayIconClick() { BuildDefinitionSetting buildDefinitionSetting = GetActiveBuildDefinitionSetting(); if (buildDefinitionSetting == null) { return; } buildDefinitionSetting.AffectsTrayIcon = !buildDefinitionSetting.AffectsTrayIcon; Settings.Save(); }
protected void StopWatchingClick() { BuildDefinitionSetting buildDefinitionSetting = GetActiveBuildDefinitionSetting(); if (buildDefinitionSetting == null) { return; } buildDefinitionSetting.Active = false; Settings.Save(); Dispose(); }
private TeamCityBuildStatus GetBuildStatusByBuildId( string rootUrl, string userName, string password, BuildDefinitionSetting buildDefinitionSetting, string buildId) { var getBuildByBuildIdIdUrl = rootUrl + "/httpAuth/app/rest/builds/id:" + buildId + "?fields=$long,changes(count,href)"; XDocument buildResultXDoc = DownloadXml(getBuildByBuildIdIdUrl, userName, password); return(GetBuildStatusAndCommentsFromXDocument(rootUrl, userName, password, buildDefinitionSetting, buildResultXDoc)); }
public void Bug95_JenkinsWithUnicodeCharacters() { var bug95UnicodeCharacters = ResourceManager.Bug95UnicodeCharacters; var buildDefinitionSetting = new BuildDefinitionSetting { Name = "Name", Id = "BuildDefinitionId" }; var buildStatus = new HudsonBuildStatus(bug95UnicodeCharacters, buildDefinitionSetting, null, treatUnstableAsSuccess: false); Assert.AreEqual("Keeping it passing from Zoë", buildStatus.Comment); Assert.AreEqual("zoë", buildStatus.RequestedBy); }
public void ServerIsDoingACleanup() { FakeTeamCityService teamCityService = new FakeTeamCityService(); BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting(); XDocument xDoc = TeamCityResources.TeamCityServerCleanup; teamCityService.GetBuildStatusAndCommentsFromXDocumentFake( "fakeurl", "username", "password", buildDefinitionSetting, xDoc); }
public TeamCityBuildStatus GetBuildStatusAndCommentsFromXDocumentFake( string rootUrl, string userName, string password, BuildDefinitionSetting buildDefinitionSetting, XDocument buildResultXDoc) { return(GetBuildStatusAndCommentsFromXDocument(rootUrl, userName, password, buildDefinitionSetting, buildResultXDoc)); }
public void ServerIsDoingACleanup() { FakeTeamCityService teamCityService = new FakeTeamCityService(); BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting(); XDocument xDoc = ResourceManager.TeamCityServerCleanup; teamCityService.GetBuildStatusAndCommentsFromXDocumentFake( "fakeurl", "username", "password", buildDefinitionSetting, xDoc); //Assert.AreEqual(BuildStatusEnum.Unknown, result.BuildStatusEnum); }
private TeamCityBuildStatus GetBuildStatus(string rootUrl, BuildDefinitionSetting buildDefinitionSetting, string userName, string password) { rootUrl = GetRootUrl(rootUrl); // older versions of team city don't support this format: httpAuth/app/rest/builds/buildType:bt2 // but that format requires far fewer http requests if (!_supportsGetLatestBuildByBuildTypeId) { // TeamCity 5.X return(GetLatestBuildByBuildId(rootUrl, userName, password, buildDefinitionSetting)); } // TeamCity 6.X return(GetLatestBuildByBuildTypeId(rootUrl, userName, password, buildDefinitionSetting)); }
public AppVeyorBuildStatus(string buildUrl, Project project, ProjectBuild build, BuildDefinitionSetting buildDefinitionSetting) { BuildDefinitionId = buildDefinitionSetting.Id; Name = "{0} ({1})".Fmt(project.Name, build.Version); BuildStatusEnum = BuildStatusEnum.Unknown; StartedTime = build.Started; FinishedTime = build.Finished; BuildStatusMessage = build.Status; Url = buildUrl; BuildId = build.BuildId; BuildStatusEnum = ToBuildStatusEnum(build.Status); RequestedBy = (string.IsNullOrEmpty(build.AuthorName)) ? build.AuthorName : build.CommitterName; Comment = build.Message; }
private TeamCityBuildStatus GetLatestBuildByBuildTypeId(string rootUrl, string userName, string password, BuildDefinitionSetting buildDefinitionSetting) { var url = rootUrl + "/httpAuth/app/rest/builds/buildType:" + buildDefinitionSetting.Id + "?fields=$long,changes(count,href)"; try { XDocument doc = DownloadXml(url, userName, password); if (doc == null) { _log.ErrorFormat("Could not get project build status for {0}", url); return(new TeamCityBuildStatus(buildDefinitionSetting)); } if (doc.Root == null) { throw new Exception("Could not get project build status"); } return(GetBuildStatusAndCommentsFromXDocument( rootUrl, userName, password, buildDefinitionSetting, doc)); } catch (BuildDefinitionNotFoundException) { return(new TeamCityBuildStatus(buildDefinitionSetting) { BuildStatusEnum = BuildStatusEnum.Unknown, Comment = "[unable to connect to " + buildDefinitionSetting.Id + "]", }); } catch (SosException ex) { if (ex.Message.Contains("BadRequestException: Cannot find build by other locator then 'id' without build type specified.")) { _log.Debug("_supportsGetLatestBuildByBuildTypeId = false"); _supportsGetLatestBuildByBuildTypeId = false; return(GetLatestBuildByBuildId(rootUrl, userName, password, buildDefinitionSetting)); } if (ex.Message.Contains("No build type is found by id ")) { throw new BuildDefinitionNotFoundException(buildDefinitionSetting); } throw; } }
/// <param name="rootUrl">Must not end with /</param> public static BambooBuildStatus CreateBuildResult(XDocument doc, BuildDefinitionSetting buildDefinitionSetting, string rootUrl) { BambooBuildStatus result = new BambooBuildStatus { BuildDefinitionId = buildDefinitionSetting.Id, Name = buildDefinitionSetting.Name }; if (doc.Root == null) { throw new Exception("Invalid root element"); } var stateStr = doc.Root.AttributeValueOrDefault("state"); result.StartedTime = ParseDateTime(doc.Root.ElementValueOrDefault("buildStartedTime")); result.FinishedTime = ParseDateTime(doc.Root.ElementValueOrDefault("buildCompletedTime")); result.BuildStatusEnum = ToBuildStatusEnum(stateStr); var changesElem = doc.Root.Element("changes"); if (changesElem != null) { var changeElem = changesElem.Element("change"); if (changeElem != null) { result.RequestedBy = changeElem.AttributeValueOrDefault("author"); result.Comment = changeElem.ElementValueOrDefault("comment"); } } result.BuildId = doc.Root.AttributeValueOrDefault("number"); string buildKey = doc.Root.AttributeValueOrDefault("key"); // i.e. the "plan key" result.Url = rootUrl + "/browse/" + buildKey; if (string.IsNullOrWhiteSpace(result.RequestedBy) && string.IsNullOrWhiteSpace(result.Comment)) { var buildReason = doc.Root.ElementValueOrDefault("buildReason"); result.Comment = GetCommentFromBuildReason(buildReason); result.RequestedBy = GetUserFromBuildReason(buildReason); } return(result); }
public void TravisBuildStatus_PassingBuildNoComment() { var travisCiWorkingBuild = ResourceManager.TravisCiWorkingBuild; var travisCiBuildDefinition = TravisCiBuildDefinition.FromIdString("ownerName/projectName/59"); BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting(); buildDefinitionSetting.Name = "Name"; buildDefinitionSetting.Id = "BuildDefinitionId"; TravisCiBuildStatus buildStatus = new TravisCiBuildStatus(travisCiBuildDefinition, travisCiWorkingBuild, buildDefinitionSetting); Assert.AreEqual(BuildStatusEnum.Working, buildStatus.BuildStatusEnum); Assert.AreEqual("BuildDefinitionId", buildStatus.BuildDefinitionId); Assert.AreEqual("Name", buildStatus.Name); Assert.AreEqual("Bob Smith", buildStatus.RequestedBy); Assert.AreEqual("Merge branch 'master' of https://github.com/travis-ci/travis-ci", buildStatus.Comment); Assert.AreEqual("https://api.travis-ci.org/ownerName/projectName/builds/1591278", buildStatus.Url); Assert.AreEqual("1591278", buildStatus.BuildId); }
public void TravisBuildStatus_FunkyDate() { var travisCiWorkingBuild = ResourceManager.TravisFunkyDate; var travisCiBuildDefinition = TravisCiBuildDefinition.FromIdString("ownerName/projectName/59"); BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting(); buildDefinitionSetting.Name = "Name"; buildDefinitionSetting.Id = "BuildDefinitionId"; TravisCiBuildStatus buildStatus = new TravisCiBuildStatus(travisCiBuildDefinition, travisCiWorkingBuild, buildDefinitionSetting); Assert.AreEqual(BuildStatusEnum.InProgress, buildStatus.BuildStatusEnum); Assert.AreEqual("BuildDefinitionId", buildStatus.BuildDefinitionId); Assert.AreEqual("Name", buildStatus.Name); Assert.AreEqual("Garima Singh", buildStatus.RequestedBy); Assert.AreEqual("Adding rake db:migrate for sample app in code", buildStatus.Comment); Assert.AreEqual("https://api.travis-ci.org/ownerName/projectName/builds/1791928", buildStatus.Url); Assert.AreEqual("1791928", buildStatus.BuildId); }
private HudsonBuildStatus GetBuildStatus(BuildDefinitionSetting buildDefinitionSetting, CiEntryPointSetting ciEntryPointSetting) { string userName = ciEntryPointSetting.UserName; string password = ciEntryPointSetting.GetPassword(); var rootUrl = GetRootUrl(ciEntryPointSetting.Url); var treatUnstableAsSuccess = ciEntryPointSetting.TreatUnstableAsSuccess; string url = rootUrl + "/job/" + buildDefinitionSetting.Id + "/api/xml"; try { XDocument doc = DownloadXml(url, userName, password); if (doc.Root == null) { return(new HudsonBuildStatus(null, buildDefinitionSetting, "Could not get project status", treatUnstableAsSuccess)); } var lastBuildElem = doc.Root.Element("lastBuild"); if (lastBuildElem == null) { return(new HudsonBuildStatus(null, buildDefinitionSetting, "No project builds found", treatUnstableAsSuccess)); } var buildNumber = lastBuildElem.ElementValueOrDefault("number"); var buildUrl = rootUrl + "/job/" + buildDefinitionSetting.Id + "/" + buildNumber; if (string.IsNullOrWhiteSpace(buildUrl)) { throw new Exception("Could not get build url"); } buildUrl += "/api/xml"; doc = DownloadXml(buildUrl, userName, password); if (doc.Root == null) { throw new Exception("Could not get project build status"); } return(GetBuildStatusAndCommentsFromXDocument(buildDefinitionSetting, doc, treatUnstableAsSuccess)); } catch (SosException ex) { if (ex.Message.ToLower(CultureInfo.CurrentCulture).Contains("not_found")) { throw new BuildDefinitionNotFoundException(buildDefinitionSetting); } throw; } }
public void HudsonBuildStatus_Issues10_AlwaysUseTimestampIfAvailable() { var jenkinsBuildStatusForIssue10 = ResourceManager.JenkinsBuildStatusForIssue10; BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting(); buildDefinitionSetting.Name = "Name"; buildDefinitionSetting.Id = "BuildDefinitionId"; HudsonBuildStatus buildStatus = new HudsonBuildStatus(jenkinsBuildStatusForIssue10, buildDefinitionSetting, null, treatUnstableAsSuccess: false); Assert.AreEqual(BuildStatusEnum.Working, buildStatus.BuildStatusEnum); Assert.AreEqual("BuildDefinitionId", buildStatus.BuildDefinitionId); Assert.AreEqual("Name", buildStatus.Name); Assert.AreEqual("STCO", buildStatus.RequestedBy); Assert.AreEqual(new DateTime(2012, 1, 19, 12, 45, 17, 736), buildStatus.StartedTime, "" + buildStatus.StartedTime.Value.Millisecond); Assert.IsNull(buildStatus.Comment); Assert.AreEqual(new DateTime(2012, 1, 19, 12, 50, 56, 422), buildStatus.FinishedTime, "" + buildStatus.FinishedTime.Value.Millisecond); // timestamp+duration Assert.AreEqual("https://tr-w03.statoil.net:10945/jenkins-prod/view/eBOSS/job/eBOSS/49/", buildStatus.Url); Assert.AreEqual("49", buildStatus.BuildId); }
public void HudsonBuildStatus_Bug152HudsonDuration() { var jenkinsBuildStatusForIssue10 = ResourceManager.Bug152HudsonDuration; BuildDefinitionSetting buildDefinitionSetting = new BuildDefinitionSetting(); buildDefinitionSetting.Name = "Name"; buildDefinitionSetting.Id = "BuildDefinitionId"; HudsonBuildStatus buildStatus = new HudsonBuildStatus(jenkinsBuildStatusForIssue10, buildDefinitionSetting, null, treatUnstableAsSuccess: false); Assert.AreEqual(BuildStatusEnum.Working, buildStatus.BuildStatusEnum); Assert.AreEqual(null, buildStatus.RequestedBy); // 2/15/2012 5:00:54 PM Assert.AreEqual(new DateTime(2012, 2, 15, 17, 0, 54, 361), buildStatus.StartedTime, DateAsCode(buildStatus.StartedTime.Value)); Assert.IsNull(buildStatus.Comment); Assert.AreEqual(new DateTime(2012, 2, 15, 17, 6, 4, 51), buildStatus.FinishedTime, DateAsCode(buildStatus.FinishedTime.Value)); Assert.AreEqual("277", buildStatus.BuildId); Assert.AreEqual("https://tr-w03.statoil.net:10945/jenkins-prod/view/eBOSS/job/eBOSS/49/", buildStatus.Url); }
private TravisCiBuildStatus GetBuildStatus(BuildDefinitionSetting buildDefinitionSetting) { var webClient = new WebClient(); var travisBuildDef = TravisCiBuildDefinition.FromIdString(buildDefinitionSetting.Id); var buildDefinitionUrl = "https://api.travis-ci.org/repositories/" + travisBuildDef.OwnerName + "/" + travisBuildDef.ProjectName + ".json"; try { var json = webClient.DownloadString(buildDefinitionUrl); var lastBuildId = GetJsonValue(json, "last_build_id"); var buildUrl = "https://api.travis-ci.org/builds/" + lastBuildId + ".json"; json = webClient.DownloadString(buildUrl); return(new TravisCiBuildStatus(travisBuildDef, json, buildDefinitionSetting)); } catch (WebException webException) { throw WebClientXml.ToServerUnavailableException(buildDefinitionUrl, webException); } }