Exemplo n.º 1
0
        public void Execute(Bot bot)
        {
            if (string.IsNullOrWhiteSpace(ipAddressOrHostNameOfCCServer) || !Projects.Any()) return;

            var client = new CruiseServerHttpClient(string.Format("http://{0}/ccnet/", ipAddressOrHostNameOfCCServer));
            foreach (var projectStatus in client.GetProjectStatus())
            {
                var isNew = false;

                if (Projects.Contains(projectStatus.Name))
                {
                    var status = Statuses.FirstOrDefault(s => s.Name == projectStatus.Name);
                    if (status == null)
                    {
                        status = projectStatus;
                        Statuses.Add(status);
                        isNew = true;
                    }

                    if (status.LastBuildDate != projectStatus.LastBuildDate || isNew)
                    {
                        status.LastBuildDate = projectStatus.LastBuildDate;

                        foreach (var room in bot.Rooms)
                        {
                            bot.Say(
                                string.Format("CCNET Build Server: {0} / {1} - {2} ({3}) - {4}", projectStatus.WebURL,
                                              projectStatus.Name,
                                              projectStatus.BuildStatus, projectStatus.LastBuildLabel,
                                              projectStatus.LastBuildDate.ToString()), room);
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void ForceBuildCorrectlyHandlesRelativePath()
        {
            var webClient = mocks.Create <WebClient>(MockBehavior.Strict).Object;

            SetupWebClient(webClient, "http://relative/ViewFarmReport.aspx");
            var client = new CruiseServerHttpClient("http://relative", webClient);

            client.ForceBuild("Project1");

            mocks.VerifyAll();
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            var ipAddressOrHostNameOfCCServer = "";     // Complete this value
            var client = new CruiseServerHttpClient(
                string.Format("http://{0}/ccnet/", ipAddressOrHostNameOfCCServer));

            foreach (var projectStatus in client.GetProjectStatus())
            {
                Console.WriteLine("{0} - {1}", projectStatus.Name, projectStatus.BuildStatus);
            }
        }
Exemplo n.º 4
0
        public void GetProjectStatusForcesAuthorizationIf403ForbiddenIsReceived()
        {
            var url       = "http://*****:*****@test3";
            var webClient = mocks.Create <WebClient>().Object;

            SetupWebClient(webClient, url, xmlFrom11, true);
            webClient.Headers = new WebHeaderCollection();
            var client = new CruiseServerHttpClient("http://*****:*****@test3", webClient);

            client.GetProjectStatus();

            Assert.AreEqual("Basic dGVzdDE6dGVzdDI=", webClient.Headers["Authorization"], "Unexpected Authorization header");
        }
Exemplo n.º 5
0
        public void GetProjectStatusCorrectlyHandlesCCData()
        {
            var webClient = mocks.Create <WebClient>(MockBehavior.Strict).Object;

            SetupWebClient(webClient, "http://relative/XmlStatusReport.aspx", xmlFromCC);
            var client = new CruiseServerHttpClient("http://relative", webClient);

            var results = client.GetProjectStatus();

            Assert.IsNotNull(results, "No projects parsed");
            Assert.AreEqual(1, results.Length, "Unexpected number of projects returned");
            CompareProjects(projectFromCC, results[0]);
            mocks.Verify();
        }
Exemplo n.º 6
0
        public void ForceBuildCorrectlyHandlesRelativePath()
        {
            var webClient = mocks.StrictMock <WebClient>();

            Expect.Call(webClient.UploadValues("http://relative/ViewFarmReport.aspx", null))
            .IgnoreArguments()
            .Return(new byte[0]);
            var client = new CruiseServerHttpClient("http://relative", webClient);

            mocks.ReplayAll();
            client.ForceBuild("Project1");

            mocks.VerifyAll();
        }
Exemplo n.º 7
0
        public void GetCruiseServerSnapshotSetsCredentialsOnWebClient()
        {
            var url       = "http://*****:*****@test3";
            var webClient = mocks.Create <WebClient>().Object;

            SetupWebClient(webClient, url, xmlFrom11);
            var client = new CruiseServerHttpClient("http://*****:*****@test3", webClient);

            client.GetCruiseServerSnapshot();

            Assert.IsNotNull(webClient.Credentials, "No credentials set");
            var cred = webClient.Credentials.GetCredential(new Uri(url), "Basic");

            Assert.AreEqual("test1", cred.UserName, "Unexpected username");
            Assert.AreEqual("test2", cred.Password, "Unexpected password");
        }
Exemplo n.º 8
0
        public void GetProjectStatusCorrectlyHandlesRelativePath()
        {
            var webClient = mocks.StrictMock <WebClient>();

            Expect.Call(webClient.DownloadString("http://relative/XmlStatusReport.aspx"))
            .Return(xmlFrom11);
            var client = new CruiseServerHttpClient("http://relative", webClient);

            mocks.ReplayAll();
            var results = client.GetProjectStatus();

            Assert.IsNotNull(results, "No projects parsed");
            Assert.AreEqual(1, results.Length, "Unexpected number of projects returned");
            CompareProjects(projectFrom11, results[0]);
            mocks.VerifyAll();
        }
Exemplo n.º 9
0
        public void StartProjectSetsCredentialsOnWebClient()
        {
            var webClient = mocks.DynamicMock <WebClient>();

            SetupResult.For(webClient.Credentials).PropertyBehavior();
            var url    = "http://*****:*****@test3";
            var client = new CruiseServerHttpClient("http://*****:*****@test3", webClient);

            mocks.ReplayAll();
            client.StartProject(null);

            Assert.IsNotNull(webClient.Credentials, "No credentials set");
            var cred = webClient.Credentials.GetCredential(new Uri(url), "Basic");

            Assert.AreEqual("test1", cred.UserName, "Unexpected username");
            Assert.AreEqual("test2", cred.Password, "Unexpected password");
        }
        public virtual IEnumerable<BuildProject> GetBuildProjects(Guid cacheKey)
        {
            ProjectStatus[] projectStatuses;
               
            using (var client = new CruiseServerHttpClient(ServiceDetails.DataAddress))
            {
                try
                {
                    projectStatuses = client.GetProjectStatus();
                }
                catch (WebException)
                {
                    //time-out
                    projectStatuses = new[] { new ProjectStatus("Unconnected", IntegrationStatus.Unknown, DateTime.Now) };
                }
            }

            return Parser.ToBuildProjects(projectStatuses); 
        }
Exemplo n.º 11
0
        public void GetProjectStatusCorrectlyHandles1_4_4Data()
        {
            var webClient = mocks.Create <WebClient>(MockBehavior.Strict).Object;

            SetupWebClient(webClient, "http://relative/XmlServerReport.aspx", xmlFrom144);
            var client = new CruiseServerHttpClient("http://relative", webClient);

            var results = client.GetCruiseServerSnapshot();

            Assert.IsNotNull(results, "Snapshot not parsed");
            Assert.AreEqual(1, results.ProjectStatuses.Length, "Unexpected number of projects returned");
            CompareProjects(projectFrom144, results.ProjectStatuses[0]);
            Assert.AreEqual(1, results.QueueSetSnapshot.Queues.Count, "Unexpected number of queues returned");
            Assert.AreEqual(queueFrom144.QueueName, results.QueueSetSnapshot.Queues[0].QueueName, "Queue name does not match");
            Assert.AreEqual(1, results.QueueSetSnapshot.Queues[0].Requests.Count, "Unexpected number of queue requests returned");
            Assert.AreEqual(requestFrom144.Activity, results.QueueSetSnapshot.Queues[0].Requests[0].Activity, "Queue request activity does not match");
            Assert.AreEqual(requestFrom144.ProjectName, results.QueueSetSnapshot.Queues[0].Requests[0].ProjectName, "Queue request project name does not match");

            mocks.Verify();
        }
Exemplo n.º 12
0
        public void GetCruiseServerSnapshotSetsCredentialsOnWebClient()
        {
            var webClient = mocks.DynamicMock <WebClient>();

            Expect.Call(webClient.DownloadString(""))
            .IgnoreArguments()
            .Return(xmlFrom11);
            SetupResult.For(webClient.Credentials).PropertyBehavior();
            var url    = "http://*****:*****@test3";
            var client = new CruiseServerHttpClient("http://*****:*****@test3", webClient);

            mocks.ReplayAll();
            client.GetCruiseServerSnapshot();

            Assert.IsNotNull(webClient.Credentials, "No credentials set");
            var cred = webClient.Credentials.GetCredential(new Uri(url), "Basic");

            Assert.AreEqual("test1", cred.UserName, "Unexpected username");
            Assert.AreEqual("test2", cred.Password, "Unexpected password");
        }
Exemplo n.º 13
0
        public void GetProjectStatusForcesAuthorizationIf403ForbiddenIsReceived()
        {
            var webClient = mocks.DynamicMock <WebClient>();

            Expect.Call(webClient.DownloadString(""))
            .IgnoreArguments()
            .Throw(new WebException("The remote server returned an error: (403) Forbidden."));
            Expect.Call(webClient.DownloadString(""))
            .IgnoreArguments()
            .Return(xmlFrom11);
            SetupResult.For(webClient.Credentials).PropertyBehavior();
            SetupResult.For(webClient.Headers).PropertyBehavior();
            webClient.Headers = new WebHeaderCollection();
            var url    = "http://*****:*****@test3";
            var client = new CruiseServerHttpClient("http://*****:*****@test3", webClient);

            mocks.ReplayAll();
            client.GetProjectStatus();

            Assert.AreEqual("Basic dGVzdDE6dGVzdDI=", webClient.Headers["Authorization"], "Unexpected Authorization header");
        }
Exemplo n.º 14
0
        public void Execute(Bot bot)
        {
            if (string.IsNullOrWhiteSpace(ipAddressOrHostNameOfCCServer) || !Projects.Any())
            {
                return;
            }

            var client = new CruiseServerHttpClient(string.Format("http://{0}/ccnet/", ipAddressOrHostNameOfCCServer));

            foreach (var projectStatus in client.GetProjectStatus())
            {
                var isNew = false;

                if (Projects.Contains(projectStatus.Name))
                {
                    var status = Statuses.FirstOrDefault(s => s.Name == projectStatus.Name);
                    if (status == null)
                    {
                        status = projectStatus;
                        Statuses.Add(status);
                        isNew = true;
                    }

                    if (status.LastBuildDate != projectStatus.LastBuildDate || isNew)
                    {
                        status.LastBuildDate = projectStatus.LastBuildDate;

                        foreach (var room in bot.Rooms)
                        {
                            bot.Say(
                                string.Format("CCNET Build Server: {0} / {1} - {2} ({3}) - {4}", projectStatus.WebURL,
                                              projectStatus.Name,
                                              projectStatus.BuildStatus, projectStatus.LastBuildLabel,
                                              projectStatus.LastBuildDate.ToString()), room);
                        }
                    }
                }
            }
        }
        public virtual IEnumerable<BuildDetails> GetBuildDetails(Guid cacheKey)
        {
            IEnumerable<BuildProject> projects = GetBuildProjects(cacheKey);
            var builds = new List<BuildDetails>();

            var client = new CruiseServerHttpClient(ServiceDetails.DataAddress);

            foreach (var project in projects)
            {
                try
                {
                    var rss1 = client.GetRSSFeed(project.Name);
                    XDocument rss = XDocument.Load(rss1);
                    builds.AddRange(RssConvertor.GetBuildFromXml(rss));
                }
                catch (Exception)
                {
                    //time-out
                }
            }

            return builds;
        }
Exemplo n.º 16
0
 private void ForceBuild(String ipAddressOrHostNameOfCCServer, String projectToExecute)
 {
     var client = new CruiseServerHttpClient(string.Format("http://{0}/ccnet/", ipAddressOrHostNameOfCCServer));
     client.Request(projectToExecute, new IntegrationRequest(BuildCondition.ForceBuild, "PL_PW_LKAFA", "lukasz.kafar"));
 }
        public void ForceBuildCorrectlyHandlesRelativePath()
        {
            var webClient = mocks.StrictMock<WebClient>();
            Expect.Call(webClient.UploadValues("http://relative/ViewFarmReport.aspx", null))
                .IgnoreArguments()
                .Return(new byte[0]);
            var client = new CruiseServerHttpClient("http://relative", webClient);

            mocks.ReplayAll();
            client.ForceBuild("Project1");

            mocks.VerifyAll();
        }
        public void GetProjectStatusCorrectlyHandlesRelativePath()
        {
            var webClient = mocks.StrictMock<WebClient>();
            Expect.Call(webClient.DownloadString("http://relative/XmlStatusReport.aspx"))
                .Return(xmlFrom11);
            var client = new CruiseServerHttpClient("http://relative", webClient);

            mocks.ReplayAll();
            var results = client.GetProjectStatus();

            Assert.IsNotNull(results, "No projects parsed");
            Assert.AreEqual(1, results.Length, "Unexpected number of projects returned");
            CompareProjects(projectFrom11, results[0]);
            mocks.VerifyAll();
        }
        public void StartProjectSetsCredentialsOnWebClient()
        {
            var webClient = mocks.DynamicMock<WebClient>();
            SetupResult.For(webClient.Credentials).PropertyBehavior();
            var url = "http://*****:*****@test3";
            var client = new CruiseServerHttpClient("http://*****:*****@test3", webClient);

            mocks.ReplayAll();
            client.StartProject(null);

            Assert.IsNotNull(webClient.Credentials, "No credentials set");
            var cred = webClient.Credentials.GetCredential(new Uri(url), "Basic");
            Assert.AreEqual("test1", cred.UserName, "Unexpected username");
            Assert.AreEqual("test2", cred.Password, "Unexpected password");
        }
        public void GetProjectStatusForcesAuthorizationIf403ForbiddenIsReceived()
        {
            var webClient = mocks.DynamicMock<WebClient>();
            Expect.Call(webClient.DownloadString(""))
                .IgnoreArguments()
                .Throw(new WebException("The remote server returned an error: (403) Forbidden."));
            Expect.Call(webClient.DownloadString(""))
                .IgnoreArguments()
                .Return(xmlFrom11);
            SetupResult.For(webClient.Credentials).PropertyBehavior();
            SetupResult.For(webClient.Headers).PropertyBehavior();
            webClient.Headers = new WebHeaderCollection();
            var url = "http://*****:*****@test3";
            var client = new CruiseServerHttpClient("http://*****:*****@test3", webClient);

            mocks.ReplayAll();
            client.GetProjectStatus();

            Assert.AreEqual("Basic dGVzdDE6dGVzdDI=", webClient.Headers["Authorization"], "Unexpected Authorization header");
        }
        public void GetCruiseServerSnapshotSetsCredentialsOnWebClient()
        {
            var webClient = mocks.DynamicMock<WebClient>();
            Expect.Call(webClient.DownloadString(""))
                .IgnoreArguments()
                .Return(xmlFrom11);
            SetupResult.For(webClient.Credentials).PropertyBehavior();
            var url = "http://*****:*****@test3";
            var client = new CruiseServerHttpClient("http://*****:*****@test3", webClient);

            mocks.ReplayAll();
            client.GetCruiseServerSnapshot();

            Assert.IsNotNull(webClient.Credentials, "No credentials set");
            var cred = webClient.Credentials.GetCredential(new Uri(url), "Basic");
            Assert.AreEqual("test1", cred.UserName, "Unexpected username");
            Assert.AreEqual("test2", cred.Password, "Unexpected password");
        }
 /// <summary>
 /// Generates an instance of <see cref="CruiseServerClientBase"/> that connects via
 /// HTTP.
 /// </summary>
 /// <param name="address">The address of the server.</param>
 /// <param name="settings">The start-up settings to use.</param>
 /// <returns>A <see cref="CruiseServerClientBase"/> instance.</returns>
 public CruiseServerClientBase GenerateHttpClient(string address, ClientStartUpSettings settings)
 {
     var client = clients.ContainsKey(address) ?
         clients[address] :
         null;
     if (client == null)
     {
         if (settings.BackwardsCompatable)
         {
             client = new CruiseServerHttpClient(address);
         }
         else
         {
             IServerConnection connection = new HttpConnection(address);
             connection = BuildUpConnection(connection, settings);
             client = new CruiseServerClient(connection);
         }
         if (UseClientCaching) clients.Add(address, client);
     }
     return client;
 }
        public void GetProjectStatusCorrectlyHandles1_4_4Data()
        {
            var webClient = mocks.StrictMock<WebClient>();
            Expect.Call(webClient.DownloadString("http://relative/XmlServerReport.aspx"))
                .Return(xmlFrom144);
            var client = new CruiseServerHttpClient("http://relative", webClient);

            mocks.ReplayAll();
            var results = client.GetCruiseServerSnapshot();

            Assert.IsNotNull(results, "Snapshot not parsed");
            Assert.AreEqual(1, results.ProjectStatuses.Length, "Unexpected number of projects returned");
            CompareProjects(projectFrom144, results.ProjectStatuses[0]);
            Assert.AreEqual(1, results.QueueSetSnapshot.Queues.Count, "Unexpected number of queues returned");
            Assert.AreEqual(queueFrom144.QueueName, results.QueueSetSnapshot.Queues[0].QueueName, "Queue name does not match");
            Assert.AreEqual(1, results.QueueSetSnapshot.Queues[0].Requests.Count, "Unexpected number of queue requests returned");
            Assert.AreEqual(requestFrom144.Activity, results.QueueSetSnapshot.Queues[0].Requests[0].Activity, "Queue request activity does not match");
            Assert.AreEqual(requestFrom144.ProjectName, results.QueueSetSnapshot.Queues[0].Requests[0].ProjectName, "Queue request project name does not match");

            mocks.VerifyAll();
        }