]> source.dussan.org Git - sonarqube.git/commitdiff
move ServerLogging to server-common
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Fri, 22 Jun 2018 15:27:53 +0000 (17:27 +0200)
committersonartech <sonartech@sonarsource.com>
Fri, 29 Jun 2018 07:10:15 +0000 (09:10 +0200)
17 files changed:
server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java
server/sonar-ce/src/main/java/org/sonar/ce/logging/ChangeLogLevelHttpAction.java
server/sonar-ce/src/test/java/org/sonar/ce/logging/ChangeLogLevelHttpActionTest.java
server/sonar-server-common/src/main/java/org/sonar/server/log/ServerLogging.java [new file with mode: 0644]
server/sonar-server-common/src/test/java/org/sonar/server/log/ServerLoggingTest.java [new file with mode: 0644]
server/sonar-server/src/main/java/org/sonar/server/platform/ServerLogging.java [deleted file]
server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/StandaloneSystemSection.java
server/sonar-server/src/main/java/org/sonar/server/platform/monitoring/cluster/LoggingSection.java
server/sonar-server/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel4.java
server/sonar-server/src/main/java/org/sonar/server/platform/ws/ChangeLogLevelClusterService.java
server/sonar-server/src/main/java/org/sonar/server/platform/ws/ChangeLogLevelStandaloneService.java
server/sonar-server/src/main/java/org/sonar/server/platform/ws/LogsAction.java
server/sonar-server/src/test/java/org/sonar/server/platform/ServerLoggingTest.java [deleted file]
server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/StandaloneSystemSectionTest.java
server/sonar-server/src/test/java/org/sonar/server/platform/monitoring/cluster/LoggingSectionTest.java
server/sonar-server/src/test/java/org/sonar/server/platform/ws/ChangeLogLevelActionTest.java
server/sonar-server/src/test/java/org/sonar/server/platform/ws/LogsActionTest.java

index 275d844fd6891cca81b3158fd0a1b62fb7348089..b84b88fd678e4c24381d9dfffd3fed290306ec36 100644 (file)
@@ -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;
index 4f1c119dac044228913f9e33d21c0382ec6e3b72..6e4f00f38f0a16d0c3efb0743e81bb5703b8a2ce 100644 (file)
@@ -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;
index 0ea88d70fdd3ebe24873196c827dbef2e87a200a..414faaa60e390a5f5dac1b9f6b517204c079cc9c 100644 (file)
@@ -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 (file)
index 0000000..61ceeaf
--- /dev/null
@@ -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 (file)
index 0000000..3188896
--- /dev/null
@@ -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 (file)
index c1e4b87..0000000
+++ /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());
-  }
-
-}
index a632032addb9417c83e9e85c39cebb316fad6666..d720aae974e677a17cf62974bb4b39c3862e3a13 100644 (file)
@@ -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;
index be1637dba3bf7a6722aa759cf8aba4d38f0b239e..ffe6824e019ffdd85a01693f1e1408362782808a 100644 (file)
@@ -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
index cf5e8b244cc252f1bfde9727c3fc68e68cf69a8d..beac5301928f56bdf464071625a4113593ca4a90 100644 (file)
@@ -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;
index dc80817390562ed1c8b95a2e0e759756af173ff9..11c870bf1b566ed3e1601aa7f7bfe1e716c02bf0 100644 (file)
@@ -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 {
 
index ec064c924b0897118a9c6216ad175ac8eaad788a..9048e973d433bcb2b6d779bf68076f83c2a9fc5b 100644 (file)
@@ -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 {
 
index 6131e743719aa912855a6f6d25e2a32563a01189..ae720be556ddbf6f2cb487eeeb9d8977bf45cf5a 100644 (file)
@@ -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 (file)
index c69492a..0000000
+++ /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);
-  }
-}
index 2573836712fd2796ad5936bc41d92e9c0548a0a4..3d92b97a393fdb9320ffa6745f24d7555c87773c 100644 (file)
@@ -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;
index 0dd79746679046bd753f1d2f0c3fed052bb48164..6feadd9b1c65f74188c463f984666c0a1c62450b 100644 (file)
@@ -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;
index dc10ee2e2c5d20588972940cc25118da5fabb0c0..1741dfeb2c143aa3bf651834462d53eb52cf2133 100644 (file)
@@ -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;
 
index 4e1795c5326c9af87f01af3bf34faff9d1132113..aa57cad09bd346f35315ad2f7b15e96e3aaf3d58 100644 (file)
@@ -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;