public ConfigureServer(SirenOfShameSettings settings, CiEntryPointSetting ciEntryPointSetting) { _adding = ciEntryPointSetting == null; if (_adding) { ciEntryPointSetting = new CiEntryPointSetting(); } Settings = settings; _ciEntryPointSetting = ciEntryPointSetting; IocContainer.Instance.Compose(this); InitializeComponent(); _ciServerPanel.Visible = _adding; ICiEntryPoint[] ciEntryPoints = CIEntryPoints.ToArray(); if (_adding) { _serverType.DataSource = ciEntryPoints; } else { SetServerType(ciEntryPointSetting.GetCiEntryPoint(settings)); } _add.Text = _adding ? "Add" : "Update"; _cancel.Visible = _adding; }
public IEnumerable <HudsonBuildStatus> GetBuildsStatuses(CiEntryPointSetting ciEntryPointSetting, IEnumerable <BuildDefinitionSetting> watchedBuildDefinitions) { var parallelResult = from buildDefinitionSetting in watchedBuildDefinitions select GetBuildStatus(buildDefinitionSetting, ciEntryPointSetting); return(parallelResult.AsParallel().ToList()); }
protected override IList <BuildStatus> GetBuildStatus() { CiEntryPointSetting ciEntryPointSetting = CiEntryPointSetting; var watchedBuildDefinitions = GetAllWatchedBuildDefinitions().ToArray(); if (string.IsNullOrEmpty(ciEntryPointSetting.Url)) { throw new SosException("Buildbot URL is null or empty"); } try { return(_service.GetBuildsStatuses(ciEntryPointSetting.Url, ciEntryPointSetting.UserName, ciEntryPointSetting.GetPassword(), watchedBuildDefinitions) .Cast <BuildStatus>().ToList()); } catch (WebException ex) { if ( ex.Message.StartsWith("The remote name could not be resolved:") || ex.Message.Contains("Unable to connect to the remote server") ) { throw new ServerUnavailableException(); } throw; } }
public ConfigureMock(SirenOfShameSettings settings, MockCiEntryPoint mockCiEntryPoint, CiEntryPointSetting ciEntryPointSetting) : base(settings) { InitializeComponent(); _mockCiEntryPoint = mockCiEntryPoint; _ciEntryPointSetting = ciEntryPointSetting; }
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 static bool Show(SirenOfShameSettings settings, CiEntryPointSetting ciEntryPointSetting) { ConfigureServer configureServer = new ConfigureServer(settings, ciEntryPointSetting); var anyChanges = configureServer.ShowDialog() != DialogResult.Cancel; return(anyChanges); }
public ConfigureTravisCi(SirenOfShameSettings sosSettings, TravisCiEntryPoint travisCiEntryPoint, CiEntryPointSetting ciEntryPointSetting) : base(sosSettings) { _travisCiEntryPoint = travisCiEntryPoint; _ciEntryPointSetting = ciEntryPointSetting; InitializeComponent(); LoadProjectList(); }
public void GivenNullUrlInCiEntryPointSetting_WhenGettingBuildStatus_ThenSosException() { // arrange var ciEntryPointSetting = new CiEntryPointSetting(); var tfsRestWatcher = new MyTfsRestWatcher(null, new BuildDefinitionSetting[] { }, ciEntryPointSetting); // act Assert.Throws <SosException>(() => tfsRestWatcher.MyGetBuildStatus(), "TFS URL is null or empty") ; }
public MyTfsServer(CiEntryPointSetting ciEntryPointSetting) { try { _tfsConfigurationServer = GetTfsConfigurationServer(ciEntryPointSetting.Url, ciEntryPointSetting.UserName, ciEntryPointSetting.GetPassword()); _tfsConfigurationServer.EnsureAuthenticated(); } catch (TeamFoundationServiceUnavailableException ex) { _log.Debug(ex); throw new ServerUnavailableException(ex.Message, ex); } }
public ConfigureAppVeyor(SirenOfShameSettings sosSettings, AppVeyorCiEntryPoint appVeyorCiEntryPoint, CiEntryPointSetting ciEntryPointSetting) : base(sosSettings) { _appVeyorCiEntryPoint = appVeyorCiEntryPoint; InitializeComponent(); _ciEntryPointSetting = ciEntryPointSetting; _url.Text = _ciEntryPointSetting.Url ?? APP_VEYOR_API_BASE_URL; _password.Text = _ciEntryPointSetting.GetPassword(); }
public ConfigureTeamCity(SirenOfShameSettings sosSettings, TeamCityCiEntryPoint teamCityCiEntryPoint, CiEntryPointSetting ciEntryPointSetting) : base(sosSettings) { _teamCityCiEntryPoint = teamCityCiEntryPoint; InitializeComponent(); _ciEntryPointSetting = ciEntryPointSetting; _url.Text = _ciEntryPointSetting.Url; _userName.Text = _ciEntryPointSetting.UserName; _password.Text = _ciEntryPointSetting.GetPassword(); Load += OnLoad; }
public ConfigureTfs(SirenOfShameSettings settings, TfsCiEntryPoint tfsCiEntryPoint, CiEntryPointSetting ciEntryPointSetting) : base(settings) { _tfsCiEntryPoint = tfsCiEntryPoint; InitializeComponent(); _ciEntryPointSetting = ciEntryPointSetting; _url.Text = _ciEntryPointSetting.Url; someoneElse.Checked = !string.IsNullOrEmpty(_ciEntryPointSetting.UserName); username.Text = _ciEntryPointSetting.UserName; password.Text = _ciEntryPointSetting.GetPassword(); DataBindAsync(); }
public ConfigureBuildBot(SirenOfShameSettings sosSettings, BuildBotCIEntryPoint BuildBotCiEntryPoint, CiEntryPointSetting ciEntryPointSetting) : base(sosSettings) { _BuildBotCiEntryPoint = BuildBotCiEntryPoint; InitializeComponent(); _ciEntryPointSetting = ciEntryPointSetting; _url.Text = _ciEntryPointSetting.Url; _userName.Text = _ciEntryPointSetting.UserName; _password.Text = _ciEntryPointSetting.GetPassword(); if (!string.IsNullOrEmpty(_url.Text)) { ReloadProjects(); } }
public ConfigureHudson(SirenOfShameSettings sosSettings, HudsonCIEntryPoint hudsonCiEntryPoint, CiEntryPointSetting ciEntryPointSetting) : base(sosSettings) { _hudsonCiEntryPoint = hudsonCiEntryPoint; InitializeComponent(); _ciEntryPointSetting = ciEntryPointSetting; _url.Text = _ciEntryPointSetting.Url; _userName.Text = _ciEntryPointSetting.UserName; _password.Text = _ciEntryPointSetting.GetPassword(); _treatUnstableAsSuccess.Checked = _ciEntryPointSetting.TreatUnstableAsSuccess; if (!string.IsNullOrEmpty(_url.Text)) { ReloadProjects(); } }
public ConfigureTfsRest(SirenOfShameSettings sosSettings, TfsRestCiEntryPoint ciEntryPoint, CiEntryPointSetting ciEntryPointSetting) : base(sosSettings) { _ciEntryPoint = ciEntryPoint; _ciEntryPointSetting = ciEntryPointSetting; InitializeComponent(); _url.Text = _ciEntryPointSetting.Url; _userName.Text = _ciEntryPointSetting.UserName; _password.Text = _ciEntryPointSetting.GetPassword(); _collection.Text = _ciEntryPointSetting.CollectionName; if (!string.IsNullOrEmpty(_url.Text)) { ReloadProjects(); } }
public void GivenHttpRequestException_WhenGettingBuildStatus_ThenServerUnavailableException() { // arrange var buildDefinitionSettings = new[] { new BuildDefinitionSetting() }; var tfsRestService = new Mock <TfsRestService>(); var ciEntryPointSetting = new CiEntryPointSetting { Url = "url" }; tfsRestService.Setup(i => i.GetBuildsStatuses(ciEntryPointSetting, buildDefinitionSettings)) .ThrowsAsync(new System.Net.Http.HttpRequestException("Unable to connect to the remote server")); var tfsRestWatcher = new MyTfsRestWatcher(tfsRestService.Object, buildDefinitionSettings, ciEntryPointSetting); // assert & act Assert.Throws <ServerUnavailableException>(() => tfsRestWatcher.MyGetBuildStatus() ); }
public void GivenWebExceptionRemoteNameCouldNotBeResolved_WhenGettingBuildStatus_ThenServerUnavailableException() { // arrange var buildDefinitionSettings = new[] { new BuildDefinitionSetting() }; var tfsRestService = new Mock <TfsRestService>(); var ciEntryPointSetting = new CiEntryPointSetting { Url = "url" }; tfsRestService.Setup(i => i.GetBuildsStatuses(ciEntryPointSetting, buildDefinitionSettings)) .ThrowsAsync(new WebException("The remote name could not be resolved:")); var tfsRestWatcher = new MyTfsRestWatcher(tfsRestService.Object, buildDefinitionSettings, ciEntryPointSetting); // assert & act Assert.Throws <ServerUnavailableException>(() => tfsRestWatcher.MyGetBuildStatus() ); }
public void GivenHttpRequestExceptionWith401InMessage_WhenGettingBuildStatus_ThenInvalidCredentialsException() { // arrange var buildDefinitionSettings = new[] { new BuildDefinitionSetting() }; var tfsRestService = new Mock <TfsRestService>(); var ciEntryPointSetting = new CiEntryPointSetting { Url = "url" }; tfsRestService.Setup(i => i.GetBuildsStatuses(ciEntryPointSetting, buildDefinitionSettings)) .ThrowsAsync(new System.Net.Http.HttpRequestException("Response status code does not indicate success: 401 (Unauthorized).")); var tfsRestWatcher = new MyTfsRestWatcher(tfsRestService.Object, buildDefinitionSettings, ciEntryPointSetting); // assert & act Assert.Throws <InvalidCredentialsException>(() => tfsRestWatcher.MyGetBuildStatus() ); }
public void GivenTaskCanceledExceptionAkaTimeout_WhenGettingBuildStatus_ThenServerUnavailableException() { // arrange var buildDefinitionSettings = new[] { new BuildDefinitionSetting() }; var tfsRestService = new Mock <TfsRestService>(); var ciEntryPointSetting = new CiEntryPointSetting { Url = "url" }; tfsRestService.Setup(i => i.GetBuildsStatuses(ciEntryPointSetting, buildDefinitionSettings)) .ThrowsAsync(new TaskCanceledException()); var tfsRestWatcher = new MyTfsRestWatcher(tfsRestService.Object, buildDefinitionSettings, ciEntryPointSetting); // assert & act Assert.Throws <ServerUnavailableException>(() => tfsRestWatcher.MyGetBuildStatus() ); }
public async Task <IEnumerable <TfsRestBuildStatus> > GetBuildsStatuses(CiEntryPointSetting ciEntryPointSetting, BuildDefinitionSetting[] watchedBuildDefinitions) { var connection = new TfsConnectionDetails(ciEntryPointSetting); var buildDefinitionsByProjectCollection = watchedBuildDefinitions.GroupBy(bd => bd.Parent); List <TfsRestBuildStatus> resultingBuildStatuses = new List <TfsRestBuildStatus>(); foreach (var buildDefinitionGroup in buildDefinitionsByProjectCollection) { var projectCollection = buildDefinitionGroup.Key; var buildQueryParams = GetBuildQueryParams(buildDefinitionGroup.ToArray()); var projects = await _tfsJsonService.GetBuildsStatuses(connection, buildQueryParams, projectCollection); await _commentsCache.FetchNewComments(projects, connection, tfsJsonBuilds => GetComment(tfsJsonBuilds, connection, projectCollection)); var buildStatuses = projects.Select(i => new TfsRestBuildStatus(i, _commentsCache)); resultingBuildStatuses.AddRange(buildStatuses); } return(resultingBuildStatuses); }
private TravisCiBuildStatus GetBuildStatus(CiEntryPointSetting ciEntryPointSetting, BuildDefinitionSetting buildDefinitionSetting) { var webClient = new WebClient(); var authToken = ciEntryPointSetting.GetPassword(); AddTravisHeaders(webClient, authToken); var travisBuildDef = TravisCiBuildDefinition.FromIdString(buildDefinitionSetting.Id); var buildDefinitionUrl = GetUrl(ciEntryPointSetting.Url, travisBuildDef.OwnerName, travisBuildDef.ProjectName); try { var json = webClient.DownloadString(buildDefinitionUrl); var lastBuildId = GetJsonValue(json, "last_build_id"); var buildUrl = string.Format("{0}builds/{1}", ciEntryPointSetting.Url, lastBuildId); json = webClient.DownloadString(buildUrl); return(new TravisCiBuildStatus(travisBuildDef, json, buildDefinitionSetting)); } catch (WebException webException) { throw WebClientXml.ToServerUnavailableException(buildDefinitionUrl, webException); } }
public void InvokeServerUnavailable(ServerUnavailableException serverUnavailableException) { ((WatcherFake)CiEntryPointSetting.GetWatcher(Settings)).InvokeServerUnavailable(serverUnavailableException); }
public MyTfsRestWatcher(TfsRestService tfsRestService, IEnumerable <BuildDefinitionSetting> buildDefinitions, CiEntryPointSetting ciEntryPointSetting) : base(null, null) { _buildDefinitions = buildDefinitions; _service = tfsRestService; CiEntryPointSetting = ciEntryPointSetting; }
public TfsConnectionDetails(CiEntryPointSetting ciEntryPointSetting) { BaseUrl = ciEntryPointSetting.Url; Username = ciEntryPointSetting.UserName; Password = ciEntryPointSetting.GetPassword(); }
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 ConfigureServerBase CreateConfigurationWindow(SirenOfShameSettings settings, CiEntryPointSetting ciEntryPointSetting) { return(new ConfigureTfs(settings, this, ciEntryPointSetting)); }
public void Stop() { ((WatcherFake)CiEntryPointSetting.GetWatcher(Settings)).InvokeStoppedWatching(); }
public void InvokeStatusChecked(BuildStatus args) { ((WatcherFake)CiEntryPointSetting.GetWatcher(Settings)).InvokeStatusChecked(new[] { args }); }
public IEnumerable <TravisCiBuildStatus> GetBuildsStatuses(CiEntryPointSetting ciEntryPointSetting, IEnumerable <BuildDefinitionSetting> watchedBuildDefinitions) { var parallelResult = watchedBuildDefinitions.Select(buildDefinitionSetting => GetBuildStatus(ciEntryPointSetting, buildDefinitionSetting)); return(parallelResult.AsParallel().ToList()); }