Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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;
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
 private void InitialiseBuildStatus(BuildDefinitionSetting buildDefinitionSetting, string defaultBuildStatusMessage)
 {
     BuildDefinitionId = buildDefinitionSetting.Id;
     Name               = buildDefinitionSetting.Name;
     BuildStatusEnum    = BuildStatusEnum.Unknown;
     StartedTime        = null;
     FinishedTime       = null;
     BuildStatusMessage = defaultBuildStatusMessage ?? string.Empty;
 }
Exemplo n.º 9
0
        protected void InvokeBuildDefinitionNotFound(BuildDefinitionSetting buildDefinitionSetting)
        {
            var e = BuildDefinitionNotFound;

            if (e != null)
            {
                e(this, new BuildDefinitionNotFoundArgs(buildDefinitionSetting));
            }
        }
Exemplo n.º 10
0
        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));
        }
Exemplo n.º 11
0
        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;
            }
        }
Exemplo n.º 12
0
        private IEnumerable <BuildStatus> ReadAllInternal(BuildDefinitionSetting buildDefinitionSetting)
        {
            string location = GetBuildLocation(buildDefinitionSetting);

            if (!FileAdapter.Exists(location))
            {
                return(new List <BuildStatus>());
            }
            return(ReadAllFromLocation(location));
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        protected void AffectsTrayIconClick()
        {
            BuildDefinitionSetting buildDefinitionSetting = GetActiveBuildDefinitionSetting();

            if (buildDefinitionSetting == null)
            {
                return;
            }

            buildDefinitionSetting.AffectsTrayIcon = !buildDefinitionSetting.AffectsTrayIcon;
            Settings.Save();
        }
Exemplo n.º 15
0
        protected void StopWatchingClick()
        {
            BuildDefinitionSetting buildDefinitionSetting = GetActiveBuildDefinitionSetting();

            if (buildDefinitionSetting == null)
            {
                return;
            }
            buildDefinitionSetting.Active = false;
            Settings.Save();
            Dispose();
        }
Exemplo n.º 16
0
        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));
        }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 21
0
        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));
        }
Exemplo n.º 22
0
 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;
 }
Exemplo n.º 23
0
        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;
            }
        }
Exemplo n.º 24
0
        /// <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);
        }
Exemplo n.º 27
0
        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;
            }
        }
Exemplo n.º 28
0
        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);
        }
Exemplo n.º 29
0
        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);
        }
Exemplo n.º 30
0
        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);
            }
        }