public synchronized void onTimer() { CruiseConfig currentConfig = applicationContext.getBean(CruiseConfigProvider.class).getCurrentConfig(); purgeStaleHealthMessages(currentConfig); LOG.debug("Recomputing material to pipeline mappings."); HashMap<ServerHealthState, Set<String>> erroredPipelines = new HashMap<>(); for (Map.Entry<HealthStateType, ServerHealthState> entry : serverHealth.entrySet()) { erroredPipelines.put(entry.getValue(), entry.getValue().getPipelineNames(currentConfig)); } pipelinesWithErrors = erroredPipelines; LOG.debug("Done recomputing material to pipeline mappings."); }
@Test public void shouldRemoveErrorLogWhenCorrespondingGroupIsMissing() throws Exception { serverHealthService.update(ServerHealthState.error("message", "description", groupId)); serverHealthService.purgeStaleHealthMessages(new BasicCruiseConfig()); assertThat(serverHealthService.logs().size(), is(0)); }
@Test public void shouldReturnErrorLogs() throws Exception { serverHealthService.update(ServerHealthState.error("message", "description", pipelineId)); CruiseConfig cruiseConfig = new BasicCruiseConfig(); new GoConfigMother().addPipeline(cruiseConfig, PIPELINE_NAME, "stageName", "jon"); serverHealthService.purgeStaleHealthMessages(cruiseConfig); assertThat(serverHealthService.logs().size(), is(1)); }
@Test public void shouldRemoveErrorLogWhenCorrespondingPipelineIsMissing() throws Exception { serverHealthService.update(ServerHealthState.error("message", "description", pipelineId)); serverHealthService.update(ServerHealthState.error("message", "description", HealthStateType.general(forPipeline("other")))); serverHealthService.purgeStaleHealthMessages(new BasicCruiseConfig()); assertThat(serverHealthService.logs().size(), is(0)); }
@Test public void shouldRemoveExpiredLogMessages() throws Exception { testingClock.setTime(new DateTime(2002,10,10,10,10,10,10)); ServerHealthState expiresInNintySecs = warning("hg-message1", "description", HealthStateType.databaseDiskFull(), Timeout.NINETY_SECONDS); ServerHealthState expiresInThreeMins = warning("hg-message2", "description", HealthStateType.artifactsDirChanged(), Timeout.THREE_MINUTES); ServerHealthState expiresNever = warning("hg-message3", "description", HealthStateType.artifactsDiskFull(), Timeout.NEVER); serverHealthService.update(expiresInThreeMins); serverHealthService.update(expiresInNintySecs); serverHealthService.update(expiresNever); serverHealthService.purgeStaleHealthMessages(new BasicCruiseConfig()); ServerHealthStates logs = serverHealthService.logs(); assertThat(logs.size(), is(3)); assertThat(logs, hasItems(expiresInThreeMins,expiresInNintySecs, expiresNever)); testingClock.addSeconds(100); serverHealthService.purgeStaleHealthMessages(new BasicCruiseConfig()); logs = serverHealthService.logs(); assertThat(logs.size(), is(2)); assertThat(logs,hasItems(expiresInThreeMins, expiresNever)); testingClock.addMillis((int) Timeout.TWO_MINUTES.inMillis()); serverHealthService.purgeStaleHealthMessages(new BasicCruiseConfig()); logs = serverHealthService.logs(); assertThat(logs.size(), is(1)); assertThat(logs,hasItem(expiresNever)); }
@Test public void shouldRemoveErrorLogWhenCorrespondingMaterialIsMissing() throws Exception { serverHealthService.update(ServerHealthState.error("hg-message", "description", HealthStateType.general(forMaterial(MaterialsMother.hgMaterial())))); SvnMaterialConfig svnMaterialConfig = MaterialConfigsMother.svnMaterialConfig(); serverHealthService.update(ServerHealthState.error("svn-message", "description", HealthStateType.general(forMaterialConfig(svnMaterialConfig)))); CruiseConfig cruiseConfig = new BasicCruiseConfig(); cruiseConfig.addPipeline("defaultGroup", new PipelineConfig(new CaseInsensitiveString("dev"), new MaterialConfigs(svnMaterialConfig), new StageConfig(new CaseInsensitiveString("first"), new JobConfigs()))); serverHealthService.purgeStaleHealthMessages(cruiseConfig); assertThat(serverHealthService.logs().size(), is(1)); }