From: Sébastien Lesaint Date: Fri, 22 Jun 2018 15:27:53 +0000 (+0200) Subject: move ServerLogging to server-common X-Git-Tag: 7.5~922 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=578f62ca8629592fc3a2d654ec619de3ad268653;p=sonarqube.git move ServerLogging to server-common --- 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 275d844fd68..b84b88fd678 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 @@ -135,7 +135,7 @@ import org.sonar.server.platform.ServerFileSystemImpl; import org.sonar.server.platform.ServerIdManager; import org.sonar.server.platform.ServerImpl; import org.sonar.server.platform.ServerLifecycleNotifier; -import org.sonar.server.platform.ServerLogging; +import org.sonar.server.log.ServerLogging; import org.sonar.server.platform.StartupMetadataProvider; import org.sonar.server.platform.TempFolderProvider; import org.sonar.server.platform.UrlSettings; diff --git a/server/sonar-ce/src/main/java/org/sonar/ce/logging/ChangeLogLevelHttpAction.java b/server/sonar-ce/src/main/java/org/sonar/ce/logging/ChangeLogLevelHttpAction.java index 4f1c119dac0..6e4f00f38f0 100644 --- a/server/sonar-ce/src/main/java/org/sonar/ce/logging/ChangeLogLevelHttpAction.java +++ b/server/sonar-ce/src/main/java/org/sonar/ce/logging/ChangeLogLevelHttpAction.java @@ -23,7 +23,7 @@ import fi.iki.elonen.NanoHTTPD; import org.sonar.api.utils.log.LoggerLevel; import org.sonar.api.utils.log.Loggers; import org.sonar.ce.httpd.HttpAction; -import org.sonar.server.platform.ServerLogging; +import org.sonar.server.log.ServerLogging; import static fi.iki.elonen.NanoHTTPD.MIME_PLAINTEXT; import static fi.iki.elonen.NanoHTTPD.Response.Status.BAD_REQUEST; diff --git a/server/sonar-ce/src/test/java/org/sonar/ce/logging/ChangeLogLevelHttpActionTest.java b/server/sonar-ce/src/test/java/org/sonar/ce/logging/ChangeLogLevelHttpActionTest.java index 0ea88d70fdd..414faaa60e3 100644 --- a/server/sonar-ce/src/test/java/org/sonar/ce/logging/ChangeLogLevelHttpActionTest.java +++ b/server/sonar-ce/src/test/java/org/sonar/ce/logging/ChangeLogLevelHttpActionTest.java @@ -26,7 +26,7 @@ import org.apache.commons.io.IOUtils; import org.junit.Test; import org.sonar.api.utils.log.LoggerLevel; import org.sonar.ce.httpd.HttpAction; -import org.sonar.server.platform.ServerLogging; +import org.sonar.server.log.ServerLogging; import static fi.iki.elonen.NanoHTTPD.Method.GET; import static fi.iki.elonen.NanoHTTPD.Method.POST; diff --git a/server/sonar-server-common/src/main/java/org/sonar/server/log/ServerLogging.java b/server/sonar-server-common/src/main/java/org/sonar/server/log/ServerLogging.java new file mode 100644 index 00000000000..61ceeafa742 --- /dev/null +++ b/server/sonar-server-common/src/main/java/org/sonar/server/log/ServerLogging.java @@ -0,0 +1,94 @@ +/* + * 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.server.log; + +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.Logger; +import com.google.common.annotations.VisibleForTesting; +import java.io.File; +import org.picocontainer.Startable; +import org.slf4j.LoggerFactory; +import org.sonar.api.ce.ComputeEngineSide; +import org.sonar.api.config.Configuration; +import org.sonar.api.server.ServerSide; +import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.api.utils.log.Loggers; +import org.sonar.db.Database; +import org.sonar.process.logging.LogbackHelper; + +import static org.sonar.api.utils.log.LoggerLevel.TRACE; +import static org.sonar.process.ProcessProperties.Property.PATH_LOGS; + +@ServerSide +@ComputeEngineSide +public class ServerLogging implements Startable { + + /** Used for Hazelcast's distributed queries in cluster mode */ + private static ServerLogging instance; + private final LogbackHelper helper; + private final Configuration config; + private final ServerProcessLogging serverProcessLogging; + private final Database database; + + public ServerLogging(Configuration config, ServerProcessLogging serverProcessLogging, Database database) { + this(new LogbackHelper(), config, serverProcessLogging, database); + } + + @VisibleForTesting + ServerLogging(LogbackHelper helper, Configuration config, ServerProcessLogging serverProcessLogging, Database database) { + this.helper = helper; + this.config = config; + this.serverProcessLogging = serverProcessLogging; + this.database = database; + } + + @Override + public void start() { + instance = this; + } + + @Override + public void stop() { + instance = null; + } + + public static void changeLevelFromHazelcastDistributedQuery(LoggerLevel level) { + instance.changeLevel(level); + } + + public void changeLevel(LoggerLevel level) { + Level logbackLevel = Level.toLevel(level.name()); + database.enableSqlLogging(level == TRACE); + helper.changeRoot(serverProcessLogging.getLogLevelConfig(), logbackLevel); + LoggerFactory.getLogger(ServerLogging.class).info("Level of logs changed to {}", level); + } + + public LoggerLevel getRootLoggerLevel() { + return Loggers.get(Logger.ROOT_LOGGER_NAME).getLevel(); + } + + /** + * The directory that contains log files. May not exist. + */ + public File getLogsDir() { + return new File(config.get(PATH_LOGS.getKey()).get()); + } + +} diff --git a/server/sonar-server-common/src/test/java/org/sonar/server/log/ServerLoggingTest.java b/server/sonar-server-common/src/test/java/org/sonar/server/log/ServerLoggingTest.java new file mode 100644 index 00000000000..3188896039c --- /dev/null +++ b/server/sonar-server-common/src/test/java/org/sonar/server/log/ServerLoggingTest.java @@ -0,0 +1,139 @@ +/* + * 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.server.log; + +import ch.qos.logback.classic.Level; +import com.tngtech.java.junit.dataprovider.DataProvider; +import com.tngtech.java.junit.dataprovider.DataProviderRunner; +import com.tngtech.java.junit.dataprovider.UseDataProvider; +import java.io.File; +import java.io.IOException; +import org.apache.commons.lang.RandomStringUtils; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.rules.TemporaryFolder; +import org.junit.runner.RunWith; +import org.sonar.api.config.internal.MapSettings; +import org.sonar.api.utils.log.LogTester; +import org.sonar.api.utils.log.LoggerLevel; +import org.sonar.db.Database; +import org.sonar.process.logging.LogLevelConfig; +import org.sonar.process.logging.LogbackHelper; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.sonar.api.utils.log.LoggerLevel.DEBUG; +import static org.sonar.api.utils.log.LoggerLevel.ERROR; +import static org.sonar.api.utils.log.LoggerLevel.INFO; +import static org.sonar.api.utils.log.LoggerLevel.TRACE; +import static org.sonar.api.utils.log.LoggerLevel.WARN; +import static org.sonar.process.ProcessProperties.Property.PATH_LOGS; + +@RunWith(DataProviderRunner.class) +public class ServerLoggingTest { + + @Rule + public TemporaryFolder temp = new TemporaryFolder(); + @Rule + public ExpectedException expectedException = ExpectedException.none(); + + private final String rootLoggerName = RandomStringUtils.randomAlphabetic(20); + private LogbackHelper logbackHelper = spy(new LogbackHelper()); + private MapSettings settings = new MapSettings(); + private final ServerProcessLogging serverProcessLogging = mock(ServerProcessLogging.class); + private final Database database = mock(Database.class); + private ServerLogging underTest = new ServerLogging(logbackHelper, settings.asConfig(), serverProcessLogging, database); + + @Rule + public LogTester logTester = new LogTester(); + + @Test + public void getLogsDir() throws IOException { + File dir = temp.newFolder(); + settings.setProperty(PATH_LOGS.getKey(), dir.getAbsolutePath()); + + assertThat(underTest.getLogsDir()).isEqualTo(dir); + } + + @Test + public void getRootLoggerLevel() { + logTester.setLevel(TRACE); + assertThat(underTest.getRootLoggerLevel()).isEqualTo(TRACE); + } + + @Test + @UseDataProvider("supportedSonarApiLevels") + public void changeLevel_calls_changeRoot_with_LogLevelConfig_and_level_converted_to_logback_class_then_log_INFO_message(LoggerLevel level) { + LogLevelConfig logLevelConfig = LogLevelConfig.newBuilder(rootLoggerName).build(); + when(serverProcessLogging.getLogLevelConfig()).thenReturn(logLevelConfig); + + underTest.changeLevel(level); + + verify(logbackHelper).changeRoot(logLevelConfig, Level.valueOf(level.name())); + } + + @Test + public void changeLevel_to_trace_enables_db_logging() { + LogLevelConfig logLevelConfig = LogLevelConfig.newBuilder(rootLoggerName).build(); + when(serverProcessLogging.getLogLevelConfig()).thenReturn(logLevelConfig); + + reset(database); + underTest.changeLevel(INFO); + verify(database).enableSqlLogging(false); + + reset(database); + underTest.changeLevel(DEBUG); + verify(database).enableSqlLogging(false); + + reset(database); + underTest.changeLevel(TRACE); + verify(database).enableSqlLogging(true); + } + + @DataProvider + public static Object[][] supportedSonarApiLevels() { + return new Object[][] { + {INFO}, + {DEBUG}, + {TRACE} + }; + } + + @Test + public void changeLevel_fails_with_IAE_when_level_is_ERROR() { + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("ERROR log level is not supported (allowed levels are [TRACE, DEBUG, INFO])"); + + underTest.changeLevel(ERROR); + } + + @Test + public void changeLevel_fails_with_IAE_when_level_is_WARN() { + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage("WARN log level is not supported (allowed levels are [TRACE, DEBUG, INFO])"); + + underTest.changeLevel(WARN); + } +} diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/ServerLogging.java b/server/sonar-server/src/main/java/org/sonar/server/platform/ServerLogging.java deleted file mode 100644 index c1e4b87780d..00000000000 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/ServerLogging.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * 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.server.platform; - -import ch.qos.logback.classic.Level; -import ch.qos.logback.classic.Logger; -import com.google.common.annotations.VisibleForTesting; -import java.io.File; -import org.picocontainer.Startable; -import org.slf4j.LoggerFactory; -import org.sonar.api.ce.ComputeEngineSide; -import org.sonar.api.config.Configuration; -import org.sonar.api.server.ServerSide; -import org.sonar.api.utils.log.LoggerLevel; -import org.sonar.api.utils.log.Loggers; -import org.sonar.db.Database; -import org.sonar.process.logging.LogbackHelper; -import org.sonar.server.log.ServerProcessLogging; - -import static org.sonar.api.utils.log.LoggerLevel.TRACE; -import static org.sonar.process.ProcessProperties.Property.PATH_LOGS; - -@ServerSide -@ComputeEngineSide -public class ServerLogging implements Startable { - - /** Used for Hazelcast's distributed queries in cluster mode */ - private static ServerLogging instance; - private final LogbackHelper helper; - private final Configuration config; - private final ServerProcessLogging serverProcessLogging; - private final Database database; - - public ServerLogging(Configuration config, ServerProcessLogging serverProcessLogging, Database database) { - this(new LogbackHelper(), config, serverProcessLogging, database); - } - - @VisibleForTesting - ServerLogging(LogbackHelper helper, Configuration config, ServerProcessLogging serverProcessLogging, Database database) { - this.helper = helper; - this.config = config; - this.serverProcessLogging = serverProcessLogging; - this.database = database; - } - - @Override - public void start() { - instance = this; - } - - @Override - public void stop() { - instance = null; - } - - public static void changeLevelFromHazelcastDistributedQuery(LoggerLevel level) { - instance.changeLevel(level); - } - - public void changeLevel(LoggerLevel level) { - Level logbackLevel = Level.toLevel(level.name()); - database.enableSqlLogging(level == TRACE); - helper.changeRoot(serverProcessLogging.getLogLevelConfig(), logbackLevel); - LoggerFactory.getLogger(ServerLogging.class).info("Level of logs changed to {}", level); - } - - public LoggerLevel getRootLoggerLevel() { - return Loggers.get(Logger.ROOT_LOGGER_NAME).getLevel(); - } - - /** - * The directory that contains log files. May not exist. - */ - public File getLogsDir() { - return new File(config.get(PATH_LOGS.getKey()).get()); - } - -} diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/StandaloneSystemSection.java b/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/StandaloneSystemSection.java index a632032addb..d720aae974e 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/StandaloneSystemSection.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/StandaloneSystemSection.java @@ -31,7 +31,7 @@ import org.sonar.api.server.authentication.IdentityProvider; import org.sonar.core.util.stream.MoreCollectors; import org.sonar.process.systeminfo.protobuf.ProtobufSystemInfo; import org.sonar.server.authentication.IdentityProviderRepository; -import org.sonar.server.platform.ServerLogging; +import org.sonar.server.log.ServerLogging; import org.sonar.server.user.SecurityRealmFactory; import static org.sonar.process.ProcessProperties.Property.PATH_DATA; diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/cluster/LoggingSection.java b/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/cluster/LoggingSection.java index be1637dba3b..ffe6824e019 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/cluster/LoggingSection.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/cluster/LoggingSection.java @@ -26,7 +26,7 @@ import org.sonar.api.server.ServerSide; import org.sonar.process.systeminfo.SystemInfoSection; import org.sonar.process.systeminfo.SystemInfoUtils; import org.sonar.process.systeminfo.protobuf.ProtobufSystemInfo; -import org.sonar.server.platform.ServerLogging; +import org.sonar.server.log.ServerLogging; @ComputeEngineSide @ServerSide diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java index cf5e8b244cc..beac5301928 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java @@ -115,7 +115,7 @@ import org.sonar.server.permission.ws.template.DefaultTemplatesResolverImpl; import org.sonar.server.platform.BackendCleanup; import org.sonar.server.platform.ClusterVerification; import org.sonar.server.platform.PersistentSettings; -import org.sonar.server.platform.ServerLogging; +import org.sonar.server.log.ServerLogging; import org.sonar.server.platform.SettingsChangeNotifier; import org.sonar.server.platform.WebCoreExtensionsInstaller; import org.sonar.server.platform.monitoring.WebSystemInfoModule; diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/ws/ChangeLogLevelClusterService.java b/server/sonar-server/src/main/java/org/sonar/server/platform/ws/ChangeLogLevelClusterService.java index dc808173905..11c870bf1b5 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/ws/ChangeLogLevelClusterService.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/ws/ChangeLogLevelClusterService.java @@ -26,7 +26,7 @@ import org.sonar.process.ProcessId; import org.sonar.process.cluster.hz.DistributedCall; import org.sonar.process.cluster.hz.HazelcastMember; import org.sonar.process.cluster.hz.HazelcastMemberSelectors; -import org.sonar.server.platform.ServerLogging; +import org.sonar.server.log.ServerLogging; public class ChangeLogLevelClusterService implements ChangeLogLevelService { diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/ws/ChangeLogLevelStandaloneService.java b/server/sonar-server/src/main/java/org/sonar/server/platform/ws/ChangeLogLevelStandaloneService.java index ec064c924b0..9048e973d43 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/ws/ChangeLogLevelStandaloneService.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/ws/ChangeLogLevelStandaloneService.java @@ -21,7 +21,7 @@ package org.sonar.server.platform.ws; import org.sonar.api.utils.log.LoggerLevel; import org.sonar.ce.http.CeHttpClient; -import org.sonar.server.platform.ServerLogging; +import org.sonar.server.log.ServerLogging; public class ChangeLogLevelStandaloneService implements ChangeLogLevelService { diff --git a/server/sonar-server/src/main/java/org/sonar/server/platform/ws/LogsAction.java b/server/sonar-server/src/main/java/org/sonar/server/platform/ws/LogsAction.java index 6131e743719..ae720be556d 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/platform/ws/LogsAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/platform/ws/LogsAction.java @@ -27,7 +27,7 @@ import org.sonar.api.server.ws.Response; import org.sonar.api.server.ws.WebService; import org.sonar.core.util.stream.MoreCollectors; import org.sonar.process.ProcessId; -import org.sonar.server.platform.ServerLogging; +import org.sonar.server.log.ServerLogging; import org.sonar.server.user.UserSession; import org.sonarqube.ws.MediaTypes; diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/ServerLoggingTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/ServerLoggingTest.java deleted file mode 100644 index c69492a19ee..00000000000 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/ServerLoggingTest.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * 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.server.platform; - -import ch.qos.logback.classic.Level; -import com.tngtech.java.junit.dataprovider.DataProvider; -import com.tngtech.java.junit.dataprovider.DataProviderRunner; -import com.tngtech.java.junit.dataprovider.UseDataProvider; -import java.io.File; -import java.io.IOException; -import org.apache.commons.lang.RandomStringUtils; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.rules.TemporaryFolder; -import org.junit.runner.RunWith; -import org.sonar.api.config.internal.MapSettings; -import org.sonar.api.utils.log.LogTester; -import org.sonar.api.utils.log.LoggerLevel; -import org.sonar.db.Database; -import org.sonar.process.logging.LogLevelConfig; -import org.sonar.process.logging.LogbackHelper; -import org.sonar.server.log.ServerProcessLogging; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.reset; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import static org.sonar.api.utils.log.LoggerLevel.DEBUG; -import static org.sonar.api.utils.log.LoggerLevel.ERROR; -import static org.sonar.api.utils.log.LoggerLevel.INFO; -import static org.sonar.api.utils.log.LoggerLevel.TRACE; -import static org.sonar.api.utils.log.LoggerLevel.WARN; -import static org.sonar.process.ProcessProperties.Property.PATH_LOGS; - -@RunWith(DataProviderRunner.class) -public class ServerLoggingTest { - - @Rule - public TemporaryFolder temp = new TemporaryFolder(); - @Rule - public ExpectedException expectedException = ExpectedException.none(); - - private final String rootLoggerName = RandomStringUtils.randomAlphabetic(20); - private LogbackHelper logbackHelper = spy(new LogbackHelper()); - private MapSettings settings = new MapSettings(); - private final ServerProcessLogging serverProcessLogging = mock(ServerProcessLogging.class); - private final Database database = mock(Database.class); - private ServerLogging underTest = new ServerLogging(logbackHelper, settings.asConfig(), serverProcessLogging, database); - - @Rule - public LogTester logTester = new LogTester(); - - @Test - public void getLogsDir() throws IOException { - File dir = temp.newFolder(); - settings.setProperty(PATH_LOGS.getKey(), dir.getAbsolutePath()); - - assertThat(underTest.getLogsDir()).isEqualTo(dir); - } - - @Test - public void getRootLoggerLevel() { - logTester.setLevel(TRACE); - assertThat(underTest.getRootLoggerLevel()).isEqualTo(TRACE); - } - - @Test - @UseDataProvider("supportedSonarApiLevels") - public void changeLevel_calls_changeRoot_with_LogLevelConfig_and_level_converted_to_logback_class_then_log_INFO_message(LoggerLevel level) { - LogLevelConfig logLevelConfig = LogLevelConfig.newBuilder(rootLoggerName).build(); - when(serverProcessLogging.getLogLevelConfig()).thenReturn(logLevelConfig); - - underTest.changeLevel(level); - - verify(logbackHelper).changeRoot(logLevelConfig, Level.valueOf(level.name())); - } - - @Test - public void changeLevel_to_trace_enables_db_logging() { - LogLevelConfig logLevelConfig = LogLevelConfig.newBuilder(rootLoggerName).build(); - when(serverProcessLogging.getLogLevelConfig()).thenReturn(logLevelConfig); - - reset(database); - underTest.changeLevel(INFO); - verify(database).enableSqlLogging(false); - - reset(database); - underTest.changeLevel(DEBUG); - verify(database).enableSqlLogging(false); - - reset(database); - underTest.changeLevel(TRACE); - verify(database).enableSqlLogging(true); - } - - @DataProvider - public static Object[][] supportedSonarApiLevels() { - return new Object[][] { - {INFO}, - {DEBUG}, - {TRACE} - }; - } - - @Test - public void changeLevel_fails_with_IAE_when_level_is_ERROR() { - expectedException.expect(IllegalArgumentException.class); - expectedException.expectMessage("ERROR log level is not supported (allowed levels are [TRACE, DEBUG, INFO])"); - - underTest.changeLevel(ERROR); - } - - @Test - public void changeLevel_fails_with_IAE_when_level_is_WARN() { - expectedException.expect(IllegalArgumentException.class); - expectedException.expectMessage("WARN log level is not supported (allowed levels are [TRACE, DEBUG, INFO])"); - - underTest.changeLevel(WARN); - } -} diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/StandaloneSystemSectionTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/StandaloneSystemSectionTest.java index 2573836712f..3d92b97a393 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/StandaloneSystemSectionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/StandaloneSystemSectionTest.java @@ -29,7 +29,7 @@ import org.sonar.api.utils.log.LoggerLevel; import org.sonar.process.systeminfo.protobuf.ProtobufSystemInfo; import org.sonar.server.authentication.IdentityProviderRepositoryRule; import org.sonar.server.authentication.TestIdentityProvider; -import org.sonar.server.platform.ServerLogging; +import org.sonar.server.log.ServerLogging; import org.sonar.server.user.SecurityRealmFactory; import static org.assertj.core.api.Assertions.assertThat; diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/cluster/LoggingSectionTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/cluster/LoggingSectionTest.java index 0dd79746679..6feadd9b1c6 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/cluster/LoggingSectionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/cluster/LoggingSectionTest.java @@ -28,7 +28,7 @@ import org.sonar.api.SonarQubeSide; import org.sonar.api.SonarRuntime; import org.sonar.api.utils.log.LoggerLevel; import org.sonar.process.systeminfo.protobuf.ProtobufSystemInfo; -import org.sonar.server.platform.ServerLogging; +import org.sonar.server.log.ServerLogging; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/ws/ChangeLogLevelActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/ws/ChangeLogLevelActionTest.java index dc10ee2e2c5..1741dfeb2c1 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/ws/ChangeLogLevelActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/ws/ChangeLogLevelActionTest.java @@ -26,7 +26,7 @@ import org.sonar.api.utils.log.LoggerLevel; import org.sonar.ce.http.CeHttpClient; import org.sonar.ce.http.CeHttpClientImpl; import org.sonar.server.exceptions.ForbiddenException; -import org.sonar.server.platform.ServerLogging; +import org.sonar.server.log.ServerLogging; import org.sonar.server.tester.UserSessionRule; import org.sonar.server.ws.WsActionTester; diff --git a/server/sonar-server/src/test/java/org/sonar/server/platform/ws/LogsActionTest.java b/server/sonar-server/src/test/java/org/sonar/server/platform/ws/LogsActionTest.java index 4e1795c5326..aa57cad09bd 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/platform/ws/LogsActionTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/platform/ws/LogsActionTest.java @@ -28,7 +28,7 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.rules.TemporaryFolder; import org.sonar.server.exceptions.ForbiddenException; -import org.sonar.server.platform.ServerLogging; +import org.sonar.server.log.ServerLogging; import org.sonar.server.tester.UserSessionRule; import org.sonar.server.ws.TestResponse; import org.sonar.server.ws.WsActionTester;