diff options
author | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2018-06-22 16:08:21 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2018-06-29 09:10:14 +0200 |
commit | 525ed917b32bfd43f2517c03d500d7a557240ce0 (patch) | |
tree | 2ad9f85224ee8ac1563d7338f2856c28551acf23 /server/sonar-ce | |
parent | c002746f61bfb24188e505887a18f5b8214f3464 (diff) | |
download | sonarqube-525ed917b32bfd43f2517c03d500d7a557240ce0.tar.gz sonarqube-525ed917b32bfd43f2517c03d500d7a557240ce0.zip |
move some classes in preparation of creation of sonar-ce-common
Diffstat (limited to 'server/sonar-ce')
10 files changed, 538 insertions, 3 deletions
diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/app/CeServer.java b/server/sonar-ce/src/main/java/org/sonar/ce/app/CeServer.java index 41f9c883f09..63b0b4b2b07 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/app/CeServer.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/app/CeServer.java @@ -28,7 +28,7 @@ import org.sonar.api.utils.log.Loggers; import org.sonar.ce.ComputeEngine; import org.sonar.ce.ComputeEngineImpl; import org.sonar.ce.container.ComputeEngineContainerImpl; -import org.sonar.ce.log.CeProcessLogging; +import org.sonar.ce.logging.CeProcessLogging; import org.sonar.process.MinimumViableSystem; import org.sonar.process.Monitored; import org.sonar.process.ProcessEntryPoint; diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java index 1812686e410..275d844fd68 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java @@ -51,7 +51,7 @@ import org.sonar.ce.StandaloneCeDistributedInformation; import org.sonar.ce.async.SynchronousAsyncExecution; import org.sonar.ce.cleaning.CeCleaningModule; import org.sonar.ce.db.ReadOnlyPropertiesDao; -import org.sonar.ce.log.CeProcessLogging; +import org.sonar.ce.logging.CeProcessLogging; import org.sonar.ce.notification.ReportAnalysisFailureNotificationModule; import org.sonar.ce.platform.CECoreExtensionsInstaller; import org.sonar.ce.platform.ComputeEngineExtensionInstaller; diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/logging/CeProcessLogging.java b/server/sonar-ce/src/main/java/org/sonar/ce/logging/CeProcessLogging.java new file mode 100644 index 00000000000..0429c4b168e --- /dev/null +++ b/server/sonar-ce/src/main/java/org/sonar/ce/logging/CeProcessLogging.java @@ -0,0 +1,51 @@ +/* + * SonarQube + * Copyright (C) 2009-2018 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.ce.logging; + +import ch.qos.logback.classic.Level; +import org.sonar.process.ProcessId; +import org.sonar.process.logging.LogDomain; +import org.sonar.process.logging.LogLevelConfig; +import org.sonar.server.log.ServerProcessLogging; + +import static org.sonar.ce.task.log.CeTaskLogging.MDC_CE_TASK_UUID; + +/** + * Configure logback for the Compute Engine process. Logs are written to file "ce.log" in SQ's log directory. + */ +public class CeProcessLogging extends ServerProcessLogging { + + public CeProcessLogging() { + super(ProcessId.COMPUTE_ENGINE, "%X{" + MDC_CE_TASK_UUID + "}"); + } + + @Override + protected void extendLogLevelConfiguration(LogLevelConfig.Builder logLevelConfigBuilder) { + logLevelConfigBuilder.levelByDomain("sql", ProcessId.COMPUTE_ENGINE, LogDomain.SQL); + logLevelConfigBuilder.levelByDomain("es", ProcessId.COMPUTE_ENGINE, LogDomain.ES); + JMX_RMI_LOGGER_NAMES.forEach(loggerName -> logLevelConfigBuilder.levelByDomain(loggerName, ProcessId.COMPUTE_ENGINE, LogDomain.JMX)); + LOGGER_NAMES_TO_TURN_OFF.forEach(loggerName -> logLevelConfigBuilder.immutableLevel(loggerName, Level.OFF)); + } + + @Override + protected void extendConfigure() { + // nothing to do + } +} diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/notification/package-info.java b/server/sonar-ce/src/main/java/org/sonar/ce/notification/package-info.java index 0e90a860936..a3ca1a7fd1e 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/notification/package-info.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/notification/package-info.java @@ -18,6 +18,6 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ @ParametersAreNonnullByDefault -package org.sonar.ce.notification; +package org.sonar.ce.task.projectanalysis.notification; import javax.annotation.ParametersAreNonnullByDefault; diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepository.java b/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepository.java index 9f9f25112db..2a4e9b5acc8 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepository.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepository.java @@ -21,6 +21,7 @@ package org.sonar.ce.taskprocessor; import java.util.Optional; import org.sonar.ce.task.CeTask; +import org.sonar.ce.task.taskprocessor.CeTaskProcessor; public interface CeTaskProcessorRepository { diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryImpl.java index ba0c97d34e9..1d5b936bf35 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryImpl.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryImpl.java @@ -30,6 +30,7 @@ import java.util.Map; import java.util.Optional; import javax.annotation.Nonnull; import org.sonar.ce.task.CeTask; +import org.sonar.ce.task.taskprocessor.CeTaskProcessor; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.collect.FluentIterable.from; diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeWorkerImpl.java b/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeWorkerImpl.java index 06cc90b2546..831d0406913 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeWorkerImpl.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/taskprocessor/CeWorkerImpl.java @@ -31,6 +31,7 @@ import org.sonar.api.utils.log.Loggers; import org.sonar.ce.queue.InternalCeQueue; import org.sonar.ce.task.CeTask; import org.sonar.ce.task.CeTaskResult; +import org.sonar.ce.task.taskprocessor.CeTaskProcessor; import org.sonar.core.util.logs.Profiler; import org.sonar.db.ce.CeActivityDto; diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/logging/CeProcessLoggingTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/logging/CeProcessLoggingTest.java new file mode 100644 index 00000000000..d151152ca30 --- /dev/null +++ b/server/sonar-ce/src/test/java/org/sonar/ce/logging/CeProcessLoggingTest.java @@ -0,0 +1,479 @@ +/* + * SonarQube + * Copyright (C) 2009-2018 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.ce.logging; + +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.encoder.PatternLayoutEncoder; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.Appender; +import ch.qos.logback.core.ConsoleAppender; +import ch.qos.logback.core.FileAppender; +import ch.qos.logback.core.joran.spi.JoranException; +import java.io.File; +import java.io.IOException; +import java.util.Properties; +import java.util.stream.Stream; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.rules.TemporaryFolder; +import org.sonar.process.Props; +import org.sonar.process.logging.LogbackHelper; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.slf4j.Logger.ROOT_LOGGER_NAME; +import static org.sonar.process.ProcessProperties.Property.PATH_LOGS; + +public class CeProcessLoggingTest { + + @Rule + public TemporaryFolder temp = new TemporaryFolder(); + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + private File logDir; + private Props props = new Props(new Properties()); + private CeProcessLogging underTest = new CeProcessLogging(); + + @Before + public void setUp() throws IOException { + logDir = temp.newFolder(); + props.set(PATH_LOGS.getKey(), logDir.getAbsolutePath()); + } + + @AfterClass + public static void resetLogback() throws JoranException { + new LogbackHelper().resetFromXml("/logback-test.xml"); + } + + @Test + public void do_not_log_to_console() { + LoggerContext ctx = underTest.configure(props); + + Logger root = ctx.getLogger(Logger.ROOT_LOGGER_NAME); + Appender appender = root.getAppender("CONSOLE"); + assertThat(appender).isNull(); + } + + @Test + public void startup_logger_prints_to_only_to_system_out() { + LoggerContext ctx = underTest.configure(props); + + Logger startup = ctx.getLogger("startup"); + assertThat(startup.isAdditive()).isFalse(); + Appender appender = startup.getAppender("CONSOLE"); + assertThat(appender).isInstanceOf(ConsoleAppender.class); + ConsoleAppender<ILoggingEvent> consoleAppender = (ConsoleAppender<ILoggingEvent>) appender; + assertThat(consoleAppender.getTarget()).isEqualTo("System.out"); + assertThat(consoleAppender.getEncoder()).isInstanceOf(PatternLayoutEncoder.class); + PatternLayoutEncoder patternEncoder = (PatternLayoutEncoder) consoleAppender.getEncoder(); + assertThat(patternEncoder.getPattern()).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level app[][%logger{20}] %msg%n"); + } + + @Test + public void log_to_ce_file() { + LoggerContext ctx = underTest.configure(props); + + Logger root = ctx.getLogger(Logger.ROOT_LOGGER_NAME); + Appender<ILoggingEvent> appender = root.getAppender("file_ce"); + assertThat(appender).isInstanceOf(FileAppender.class); + FileAppender fileAppender = (FileAppender) appender; + assertThat(fileAppender.getFile()).isEqualTo(new File(logDir, "ce.log").getAbsolutePath()); + assertThat(fileAppender.getEncoder()).isInstanceOf(PatternLayoutEncoder.class); + PatternLayoutEncoder encoder = (PatternLayoutEncoder) fileAppender.getEncoder(); + assertThat(encoder.getPattern()).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level ce[%X{ceTaskUuid}][%logger{20}] %msg%n"); + } + + @Test + public void default_level_for_root_logger_is_INFO() { + LoggerContext ctx = underTest.configure(props); + + verifyRootLogLevel(ctx, Level.INFO); + } + + @Test + public void root_logger_level_changes_with_global_property() { + props.set("sonar.log.level", "TRACE"); + + LoggerContext ctx = underTest.configure(props); + + verifyRootLogLevel(ctx, Level.TRACE); + } + + @Test + public void root_logger_level_changes_with_ce_property() { + props.set("sonar.log.level.ce", "TRACE"); + + LoggerContext ctx = underTest.configure(props); + + verifyRootLogLevel(ctx, Level.TRACE); + } + + @Test + public void root_logger_level_is_configured_from_ce_property_over_global_property() { + props.set("sonar.log.level", "TRACE"); + props.set("sonar.log.level.ce", "DEBUG"); + + LoggerContext ctx = underTest.configure(props); + + verifyRootLogLevel(ctx, Level.DEBUG); + } + + @Test + public void root_logger_level_changes_with_ce_property_and_is_case_insensitive() { + props.set("sonar.log.level.ce", "debug"); + + LoggerContext ctx = underTest.configure(props); + + verifyRootLogLevel(ctx, Level.DEBUG); + } + + @Test + public void sql_logger_level_changes_with_global_property_and_is_case_insensitive() { + props.set("sonar.log.level", "InFO"); + + LoggerContext ctx = underTest.configure(props); + + verifySqlLogLevel(ctx, Level.INFO); + } + + @Test + public void sql_logger_level_changes_with_ce_property_and_is_case_insensitive() { + props.set("sonar.log.level.ce", "TrACe"); + + LoggerContext ctx = underTest.configure(props); + + verifySqlLogLevel(ctx, Level.TRACE); + } + + @Test + public void sql_logger_level_changes_with_ce_sql_property_and_is_case_insensitive() { + props.set("sonar.log.level.ce.sql", "debug"); + + LoggerContext ctx = underTest.configure(props); + + verifySqlLogLevel(ctx, Level.DEBUG); + } + + @Test + public void sql_logger_level_is_configured_from_ce_sql_property_over_ce_property() { + props.set("sonar.log.level.ce.sql", "debug"); + props.set("sonar.log.level.ce", "TRACE"); + + LoggerContext ctx = underTest.configure(props); + + verifySqlLogLevel(ctx, Level.DEBUG); + } + + @Test + public void sql_logger_level_is_configured_from_ce_sql_property_over_global_property() { + props.set("sonar.log.level.ce.sql", "debug"); + props.set("sonar.log.level", "TRACE"); + + LoggerContext ctx = underTest.configure(props); + + verifySqlLogLevel(ctx, Level.DEBUG); + } + + @Test + public void sql_logger_level_is_configured_from_ce_property_over_global_property() { + props.set("sonar.log.level.ce", "debug"); + props.set("sonar.log.level", "TRACE"); + + LoggerContext ctx = underTest.configure(props); + + verifySqlLogLevel(ctx, Level.DEBUG); + } + + @Test + public void es_logger_level_changes_with_global_property_and_is_case_insensitive() { + props.set("sonar.log.level", "InFO"); + + LoggerContext ctx = underTest.configure(props); + + verifyEsLogLevel(ctx, Level.INFO); + } + + @Test + public void es_logger_level_changes_with_ce_property_and_is_case_insensitive() { + props.set("sonar.log.level.ce", "TrACe"); + + LoggerContext ctx = underTest.configure(props); + + verifyEsLogLevel(ctx, Level.TRACE); + } + + @Test + public void es_logger_level_changes_with_ce_es_property_and_is_case_insensitive() { + props.set("sonar.log.level.ce.es", "debug"); + + LoggerContext ctx = underTest.configure(props); + + verifyEsLogLevel(ctx, Level.DEBUG); + } + + @Test + public void es_logger_level_is_configured_from_ce_es_property_over_ce_property() { + props.set("sonar.log.level.ce.es", "debug"); + props.set("sonar.log.level.ce", "TRACE"); + + LoggerContext ctx = underTest.configure(props); + + verifyEsLogLevel(ctx, Level.DEBUG); + } + + @Test + public void es_logger_level_is_configured_from_ce_es_property_over_global_property() { + props.set("sonar.log.level.ce.es", "debug"); + props.set("sonar.log.level", "TRACE"); + + LoggerContext ctx = underTest.configure(props); + + verifyEsLogLevel(ctx, Level.DEBUG); + } + + @Test + public void es_logger_level_is_configured_from_ce_property_over_global_property() { + props.set("sonar.log.level.ce", "debug"); + props.set("sonar.log.level", "TRACE"); + + LoggerContext ctx = underTest.configure(props); + + verifyEsLogLevel(ctx, Level.DEBUG); + } + + @Test + public void jmx_logger_level_changes_with_global_property_and_is_case_insensitive() { + props.set("sonar.log.level", "InFO"); + + LoggerContext ctx = underTest.configure(props); + + verifyJmxLogLevel(ctx, Level.INFO); + } + + @Test + public void jmx_logger_level_changes_with_jmx_property_and_is_case_insensitive() { + props.set("sonar.log.level.ce", "TrACe"); + + LoggerContext ctx = underTest.configure(props); + + verifyJmxLogLevel(ctx, Level.TRACE); + } + + @Test + public void jmx_logger_level_changes_with_ce_jmx_property_and_is_case_insensitive() { + props.set("sonar.log.level.ce.jmx", "debug"); + + LoggerContext ctx = underTest.configure(props); + + verifyJmxLogLevel(ctx, Level.DEBUG); + } + + @Test + public void jmx_logger_level_is_configured_from_ce_jmx_property_over_ce_property() { + props.set("sonar.log.level.ce.jmx", "debug"); + props.set("sonar.log.level.ce", "TRACE"); + + LoggerContext ctx = underTest.configure(props); + + verifyJmxLogLevel(ctx, Level.DEBUG); + } + + @Test + public void jmx_logger_level_is_configured_from_ce_jmx_property_over_global_property() { + props.set("sonar.log.level.ce.jmx", "debug"); + props.set("sonar.log.level", "TRACE"); + + LoggerContext ctx = underTest.configure(props); + + verifyJmxLogLevel(ctx, Level.DEBUG); + } + + @Test + public void jmx_logger_level_is_configured_from_ce_property_over_global_property() { + props.set("sonar.log.level.ce", "debug"); + props.set("sonar.log.level", "TRACE"); + + LoggerContext ctx = underTest.configure(props); + + verifyJmxLogLevel(ctx, Level.DEBUG); + } + + @Test + public void root_logger_level_defaults_to_INFO_if_ce_property_has_invalid_value() { + props.set("sonar.log.level.ce", "DodoDouh!"); + + LoggerContext ctx = underTest.configure(props); + verifyRootLogLevel(ctx, Level.INFO); + } + + @Test + public void sql_logger_level_defaults_to_INFO_if_ce_sql_property_has_invalid_value() { + props.set("sonar.log.level.ce.sql", "DodoDouh!"); + + LoggerContext ctx = underTest.configure(props); + verifySqlLogLevel(ctx, Level.INFO); + } + + @Test + public void es_logger_level_defaults_to_INFO_if_ce_es_property_has_invalid_value() { + props.set("sonar.log.level.ce.es", "DodoDouh!"); + + LoggerContext ctx = underTest.configure(props); + verifyEsLogLevel(ctx, Level.INFO); + } + + @Test + public void jmx_loggers_level_defaults_to_INFO_if_ce_jmx_property_has_invalid_value() { + props.set("sonar.log.level.ce.jmx", "DodoDouh!"); + + LoggerContext ctx = underTest.configure(props); + verifyJmxLogLevel(ctx, Level.INFO); + } + + @Test + public void fail_with_IAE_if_global_property_unsupported_level() { + props.set("sonar.log.level", "ERROR"); + + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("log level ERROR in property sonar.log.level is not a supported value (allowed levels are [TRACE, DEBUG, INFO])"); + + underTest.configure(props); + } + + @Test + public void fail_with_IAE_if_ce_property_unsupported_level() { + props.set("sonar.log.level.ce", "ERROR"); + + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("log level ERROR in property sonar.log.level.ce is not a supported value (allowed levels are [TRACE, DEBUG, INFO])"); + + underTest.configure(props); + } + + @Test + public void fail_with_IAE_if_ce_sql_property_unsupported_level() { + props.set("sonar.log.level.ce.sql", "ERROR"); + + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("log level ERROR in property sonar.log.level.ce.sql is not a supported value (allowed levels are [TRACE, DEBUG, INFO])"); + + underTest.configure(props); + } + + @Test + public void fail_with_IAE_if_ce_es_property_unsupported_level() { + props.set("sonar.log.level.ce.es", "ERROR"); + + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("log level ERROR in property sonar.log.level.ce.es is not a supported value (allowed levels are [TRACE, DEBUG, INFO])"); + + underTest.configure(props); + } + + @Test + public void fail_with_IAE_if_ce_jmx_property_unsupported_level() { + props.set("sonar.log.level.ce.jmx", "ERROR"); + + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("log level ERROR in property sonar.log.level.ce.jmx is not a supported value (allowed levels are [TRACE, DEBUG, INFO])"); + + underTest.configure(props); + } + + @Test + public void configure_defines_hardcoded_levels() { + LoggerContext context = underTest.configure(props); + + verifyImmutableLogLevels(context); + } + + @Test + public void configure_defines_hardcoded_levels_unchanged_by_global_property() { + props.set("sonar.log.level", "TRACE"); + + LoggerContext context = underTest.configure(props); + + verifyImmutableLogLevels(context); + } + + @Test + public void configure_defines_hardcoded_levels_unchanged_by_ce_property() { + props.set("sonar.log.level.ce", "TRACE"); + + LoggerContext context = underTest.configure(props); + + verifyImmutableLogLevels(context); + } + + @Test + public void configure_turns_off_some_MsSQL_driver_logger() { + LoggerContext context = underTest.configure(props); + + Stream.of("com.microsoft.sqlserver.jdbc.internals", + "com.microsoft.sqlserver.jdbc.ResultSet", + "com.microsoft.sqlserver.jdbc.Statement", + "com.microsoft.sqlserver.jdbc.Connection") + .forEach(loggerName -> assertThat(context.getLogger(loggerName).getLevel()).isEqualTo(Level.OFF)); + } + + private void verifyRootLogLevel(LoggerContext ctx, Level expected) { + assertThat(ctx.getLogger(ROOT_LOGGER_NAME).getLevel()).isEqualTo(expected); + } + + private void verifySqlLogLevel(LoggerContext ctx, Level expected) { + assertThat(ctx.getLogger("sql").getLevel()).isEqualTo(expected); + } + + private void verifyEsLogLevel(LoggerContext ctx, Level expected) { + assertThat(ctx.getLogger("es").getLevel()).isEqualTo(expected); + } + + private void verifyJmxLogLevel(LoggerContext ctx, Level expected) { + assertThat(ctx.getLogger("javax.management.remote.timeout").getLevel()).isEqualTo(expected); + assertThat(ctx.getLogger("javax.management.remote.misc").getLevel()).isEqualTo(expected); + assertThat(ctx.getLogger("javax.management.remote.rmi").getLevel()).isEqualTo(expected); + assertThat(ctx.getLogger("javax.management.mbeanserver").getLevel()).isEqualTo(expected); + assertThat(ctx.getLogger("sun.rmi.loader").getLevel()).isEqualTo(expected); + assertThat(ctx.getLogger("sun.rmi.transport.tcp").getLevel()).isEqualTo(expected); + assertThat(ctx.getLogger("sun.rmi.transport.misc").getLevel()).isEqualTo(expected); + assertThat(ctx.getLogger("sun.rmi.server.call").getLevel()).isEqualTo(expected); + assertThat(ctx.getLogger("sun.rmi.dgc").getLevel()).isEqualTo(expected); + } + + private void verifyImmutableLogLevels(LoggerContext ctx) { + assertThat(ctx.getLogger("org.apache.ibatis").getLevel()).isEqualTo(Level.WARN); + assertThat(ctx.getLogger("java.sql").getLevel()).isEqualTo(Level.WARN); + assertThat(ctx.getLogger("java.sql.ResultSet").getLevel()).isEqualTo(Level.WARN); + assertThat(ctx.getLogger("org.sonar.MEASURE_FILTER").getLevel()).isEqualTo(Level.WARN); + assertThat(ctx.getLogger("org.elasticsearch").getLevel()).isEqualTo(Level.INFO); + assertThat(ctx.getLogger("org.elasticsearch.node").getLevel()).isEqualTo(Level.INFO); + assertThat(ctx.getLogger("org.elasticsearch.http").getLevel()).isEqualTo(Level.INFO); + assertThat(ctx.getLogger("ch.qos.logback").getLevel()).isEqualTo(Level.WARN); + assertThat(ctx.getLogger("org.apache.catalina").getLevel()).isEqualTo(Level.INFO); + assertThat(ctx.getLogger("org.apache.coyote").getLevel()).isEqualTo(Level.INFO); + assertThat(ctx.getLogger("org.apache.jasper").getLevel()).isEqualTo(Level.INFO); + assertThat(ctx.getLogger("org.apache.tomcat").getLevel()).isEqualTo(Level.INFO); + } +} diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryImplTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryImplTest.java index 04cdeac6834..4108af81183 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryImplTest.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryImplTest.java @@ -26,6 +26,7 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.sonar.ce.task.CeTask; import org.sonar.ce.task.CeTaskResult; +import org.sonar.ce.task.taskprocessor.CeTaskProcessor; import static org.assertj.core.api.Assertions.assertThat; diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryRule.java b/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryRule.java index 451ebf1fefd..036ccd52ab9 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryRule.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/taskprocessor/CeTaskProcessorRepositoryRule.java @@ -26,6 +26,7 @@ import java.util.Set; import org.junit.rules.ExternalResource; import org.sonar.ce.task.CeTask; import org.sonar.ce.task.CeTaskResult; +import org.sonar.ce.task.taskprocessor.CeTaskProcessor; import static com.google.common.base.Preconditions.checkState; import static java.util.Objects.requireNonNull; |