public static ProjectHistoryItemBean build(Date now, SFinishedBuild build){ ProjectHistoryItemBean bean = new ProjectHistoryItemBean(); bean.buildId = build.getBuildId(); bean.title = build.getBuildTypeName(); bean.buildNumber = build.getBuildNumber(); bean.buildDate = toDuration(now.getTime() - build.getFinishDate().getTime()); return bean; } }
@Before public void setUp() throws Exception { resolverManager.registerVariableResolverFactory(variableResolverFactory); when(previousSuccessfulBuild.getBuildStatus()).thenReturn(Status.NORMAL); when(previousSuccessfulBuild.isPersonal()).thenReturn(false); when(previousFailedBuild.getBuildStatus()).thenReturn(Status.FAILURE); when(previousFailedBuild.isPersonal()).thenReturn(false); when(buildHistory.getEntriesBefore(sRunningBuild, false)).thenReturn(finishedSuccessfulBuilds); when(server.getHistory()).thenReturn(buildHistory); sBuildType.setProject(sProject); }
if (previousBuild.isFinished()){ if (previousBuild.getStatusDescriptor().isSuccessful()){ this.buildResultPrevious = WebHookPayload.BUILD_STATUS_SUCCESS; } else {
private Build locateLatestBuildInfo(SBuildType buildType) throws Exception { List<SFinishedBuild> finishedBuilds = buildType.getHistory(); for (SFinishedBuild finishedBuild : finishedBuilds) { SBuildType finishedBuildType = finishedBuild.getBuildType(); if (finishedBuildType != null) { File artifactsDirectory = new File(finishedBuildType.getArtifactsDirectory(), finishedBuild.getBuildId() + ""); File buildInfo = new File(artifactsDirectory, ".teamcity/" + BUILD_INFO_FILE_NAME_PACKED); if (buildInfo.exists()) { String buildInfoString = CharStreams.toString( new InputStreamReader(new GZIPInputStream(new FileInputStream(buildInfo)))); return BuildInfoExtractorUtils.jsonStringToBuildInfo(buildInfoString); } } } return null; } }
private boolean addGradlePropertiesToModel(Map<String, Object> model, SFinishedBuild finishedBuild, ReleaseManagementConfigModel managementConfig, Map<String, String> runnerParameters) throws IOException { List<String> releasePropertyKeys = getPropertyKeys(RunnerParameterKeys.RELEASE_PROPERTIES, runnerParameters); List<String> nextIntegrationPropertyKeys = getPropertyKeys(RunnerParameterKeys.NEXT_INTEGRATION_PROPERTIES, runnerParameters); File artifactsDirectory = new File(finishedBuild.getBuildType().getArtifactsDirectory(), finishedBuild.getBuildId() + ""); File gradlePropertiesFile = new File(artifactsDirectory, ".teamcity/" + ConstantValues.GRADLE_PROPERTIES_FILE_NAME_PACKED); if (gradlePropertiesFile.exists()) { Properties gradleProperties = new Properties(); InputStream stream = null; try { stream = new GZIPInputStream(new FileInputStream(gradlePropertiesFile)); gradleProperties.load(stream); } finally { IOUtils.closeQuietly(stream); } addPropertiesToModel(model, managementConfig, releasePropertyKeys, gradleProperties, true); addPropertiesToModel(model, managementConfig, nextIntegrationPropertyKeys, gradleProperties, false); return true; } else { throw new FileNotFoundException("Unable to find gradle properties file at '" + gradlePropertiesFile.getAbsolutePath() + "' for build '" + finishedBuild.getBuildNumber() + "'"); } }
@Test public void testGetPreviousNonPreviousNonPersonalBuild_WhenPersonalPreviousReturnsNull() { WebHookContentBuilder builder = new WebHookContentBuilder(null, null, resolverManager); WebHook wh = factory.getWebHook(); SBuild runningBuild = mock(SBuild.class); SFinishedBuild personalPreviousBuild = mock(SFinishedBuild.class); when(runningBuild.getPreviousFinished()).thenReturn(personalPreviousBuild); when(runningBuild.getBuildId()).thenReturn(100L); when(personalPreviousBuild.isPersonal()).thenReturn(true); when(personalPreviousBuild.getBuildId()).thenReturn(99L); when(personalPreviousBuild.getPreviousFinished()).thenReturn(null); SBuild previousBuild = builder.getPreviousNonPersonalBuild(wh, runningBuild); assertNull(previousBuild); assertNull(wh.getPreviousNonPersonalBuild()); }
when(sBuildServer.getRootUrl()).thenReturn("http://test.server"); when(sBuildServer.getProjectManager()).thenReturn(projectManager); when(previousSuccessfulBuild.getBuildStatus()).thenReturn(Status.NORMAL); when(previousSuccessfulBuild.isPersonal()).thenReturn(false); when(previousSuccessfulBuild.getFinishDate()).thenReturn(new Date()); when(previousFailedBuild.getBuildStatus()).thenReturn(Status.FAILURE); when(previousFailedBuild.isPersonal()).thenReturn(false); when(previousFailedBuild.getFinishDate()).thenReturn(new Date()); finishedSuccessfulBuilds.add(previousSuccessfulBuild); finishedFailedBuilds.add(previousFailedBuild);
buildCleanupContext.getErrorReporter().buildCleanupError(build.getBuildId(), "Failed to remove [" + errorNum + "] s3 " + StringUtil.pluralize("object", errorNum.get()) + suffix); buildCleanupContext.getErrorReporter().buildCleanupError(build.getBuildId(), "Failed to remove s3 artifacts: " + e.getMessage());
MockSRunningBuild sRunningBuild = new MockSRunningBuild(sBuildType, triggeredBy, Status.NORMAL, "Running", "TestBuild01"); SFinishedBuild previousBuild = mock(SFinishedBuild.class); when (previousBuild.getFinishDate()).thenReturn(new Date()); List<SFinishedBuild> finishedBuilds = new ArrayList<>(); finishedBuilds.add(previousBuild); when (sBuildServer.getRootUrl()).thenReturn("http://test.url"); when (sBuildServer.getHistory()).thenReturn(buildHistory); when (previousBuild.getBuildStatus()).thenReturn(buildHistoryStatus); MockSProject sProject = new MockSProject("Test Project", "A test project", "project1", "ATestProject", sBuildType); sBuildType.setProject(sProject);
@Nullable private SFinishedBuild getPreviousNonPersonalBuild(SRunningBuild paramSRunningBuild) { List<SFinishedBuild> localList = this.myBuildServer.getHistory().getEntriesBefore(paramSRunningBuild, false); for (SFinishedBuild localSFinishedBuild : localList) if (!(localSFinishedBuild.isPersonal())) return localSFinishedBuild; return null; }
private boolean hasBuildChangedHistoricalState(SBuild sRunningBuild, SFinishedBuild previous){ if (previous != null){ if (sRunningBuild.getBuildStatus().isSuccessful()){ return previous.getBuildStatus().isFailed(); } else if (sRunningBuild.getBuildStatus().isFailed()) { return previous.getBuildStatus().isSuccessful(); } } return true; }
MockSRunningBuild sRunningBuild = new MockSRunningBuild(sBuildType, triggeredBy, Status.NORMAL, "Running", "TestBuild01"); SFinishedBuild previousBuild = mock(SFinishedBuild.class); when (previousBuild.getFinishDate()).thenReturn(new Date()); MockSProject sProject = new MockSProject("Test Project", "A test project", "project1", "ATestProject", sBuildType); sBuildType.setProject(sProject);
@Test public void testGetPreviousNonPreviousNonPersonalBuild_WhenPreviousIsPersonal() { WebHookContentBuilder builder = new WebHookContentBuilder(null, null, resolverManager); WebHook wh = factory.getWebHook(); SBuild runningBuild = mock(SBuild.class); SFinishedBuild personalPreviousBuild = mock(SFinishedBuild.class); SFinishedBuild nonPersonalPreviousBuild = mock(SFinishedBuild.class); when(runningBuild.getPreviousFinished()).thenReturn(personalPreviousBuild); when(runningBuild.getBuildId()).thenReturn(100L); when(personalPreviousBuild.isPersonal()).thenReturn(true); when(personalPreviousBuild.getBuildId()).thenReturn(99L); when(personalPreviousBuild.getPreviousFinished()).thenReturn(nonPersonalPreviousBuild); when(nonPersonalPreviousBuild.getBuildId()).thenReturn(98L); SBuild previousBuild = builder.getPreviousNonPersonalBuild(wh, runningBuild); assertEquals(nonPersonalPreviousBuild, previousBuild); assertEquals(nonPersonalPreviousBuild, wh.getPreviousNonPersonalBuild()); assertEquals(98L, previousBuild.getBuildId()); }
when(sBuildServer.getRootUrl()).thenReturn("http://test.server"); when(sBuildServer.getProjectManager()).thenReturn(projectManager); when(previousSuccessfulBuild.getBuildStatus()).thenReturn(Status.NORMAL); when(previousSuccessfulBuild.isPersonal()).thenReturn(false); when(previousSuccessfulBuild.getFinishDate()).thenReturn(new Date()); when(previousFailedBuild.getBuildStatus()).thenReturn(Status.FAILURE); when(previousFailedBuild.isPersonal()).thenReturn(false); when(previousFailedBuild.getFinishDate()).thenReturn(new Date()); finishedSuccessfulBuilds.add(previousSuccessfulBuild); finishedFailedBuilds.add(previousFailedBuild);
@Test public void testGetPreviousNonPreviousNonPersonalBuild_WhenPreviousIsNonPersonal() { WebHookContentBuilder builder = new WebHookContentBuilder(null, null, resolverManager); WebHook wh = factory.getWebHook(); SBuild runningBuild = mock(SBuild.class); SFinishedBuild nonPersonalPreviousBuild = mock(SFinishedBuild.class); when(runningBuild.getPreviousFinished()).thenReturn(nonPersonalPreviousBuild); when(runningBuild.getBuildId()).thenReturn(100L); when(nonPersonalPreviousBuild.getBuildId()).thenReturn(98L); SBuild previousBuild = builder.getPreviousNonPersonalBuild(wh, runningBuild); assertEquals(nonPersonalPreviousBuild, previousBuild); assertEquals(nonPersonalPreviousBuild, wh.getPreviousNonPersonalBuild()); assertEquals(98L, previousBuild.getBuildId()); }
@Nullable private SFinishedBuild getPreviousNonPersonalBuild(SRunningBuild paramSRunningBuild) { List<SFinishedBuild> localList = buildServer.getHistory().getEntriesBefore(paramSRunningBuild, false); for (SFinishedBuild localSFinishedBuild : localList) if (!(localSFinishedBuild.isPersonal())) return localSFinishedBuild; return null; }
private boolean hasBuildChangedHistoricalState(SRunningBuild sRunningBuild){ SFinishedBuild previous = getPreviousNonPersonalBuild(sRunningBuild); if (previous != null){ if (sRunningBuild.getBuildStatus().isSuccessful()){ return previous.getBuildStatus().isFailed(); } else if (sRunningBuild.getBuildStatus().isFailed()) { return previous.getBuildStatus().isSuccessful(); } } return true; }
MockSRunningBuild sRunningBuild = new MockSRunningBuild(sBuildType, triggeredBy, Status.NORMAL, "Running", "TestBuild01"); SFinishedBuild previousBuild = mock(SFinishedBuild.class); when (previousBuild.getFinishDate()).thenReturn(new Date()); MockSProject sProject = new MockSProject("Test Project", "A test project", "project1", "ATestProject", sBuildType); sBuildType.setProject(sProject);
@Before public void setUp() throws Exception { resolverManager.registerVariableResolverFactory(variableResolverFactory); webHookImpl = new TestingWebHookFactory().getWebHook(); allBuildStates.allEnabled(); webHookImpl.setBuildStates(allBuildStates); spyWebHook = spy(webHookImpl); webHookConfig = mock(WebHookConfig.class); contentBuilder = new WebHookContentBuilder(manager, templateResolver, resolverManager); whl = new WebHookListener(sBuildServer, settings, configSettings, manager, factory, templateResolver, contentBuilder, historyRepository, historyItemFactory); projSettings = new WebHookProjectSettings(); when(factory.getWebHook(any(WebHookConfig.class), any(WebHookProxyConfig.class))).thenReturn(webHookImpl); when(manager.isRegisteredFormat("JSON")).thenReturn(true); when(manager.getFormat("JSON")).thenReturn(payload); when(manager.getServer()).thenReturn(sBuildServer); when(sBuildServer.getProjectManager()).thenReturn(projectManager); when(projectManager.findProjectById("project1")).thenReturn(sProject); when(sBuildServer.getHistory()).thenReturn(buildHistory); when(sBuildServer.getRootUrl()).thenReturn("http://test.server"); when(previousSuccessfulBuild.getBuildStatus()).thenReturn(Status.NORMAL); when(previousSuccessfulBuild.isPersonal()).thenReturn(false); when(previousFailedBuild.getBuildStatus()).thenReturn(Status.FAILURE); when(previousFailedBuild.isPersonal()).thenReturn(false); when(configSettings.getProxyConfigForUrl("http://text/test")).thenReturn(null); finishedSuccessfulBuilds.add(previousSuccessfulBuild); finishedFailedBuilds.add(previousFailedBuild); sBuildType.setProject(sProject); when(settings.getSettings(sRunningBuild.getProjectId(), "webhooks")).thenReturn(projSettings); whl.register(); }
if (previousBuild.isFinished()){ if (previousBuild.getStatusDescriptor().isSuccessful()){ this.buildResultPrevious = BUILD_STATUS_SUCCESS; } else {