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 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(); }
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); } }
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"); }
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(); }
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 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"); }
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 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); }
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(); }
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"); }
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 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; }
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(); }