aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/sonar-ce/src/main/java/org/sonar/ce/container/ComputeEngineContainerImpl.java2
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java8
-rw-r--r--server/sonar-db-dao/src/main/java/org/sonar/db/StartMyBatis.java42
-rw-r--r--server/sonar-db-dao/src/test/java/org/sonar/db/StartMyBatisTest.java40
-rw-r--r--server/sonar-db-dao/src/testFixtures/java/org/sonar/db/DbTester.java1
-rw-r--r--server/sonar-webserver/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java2
6 files changed, 87 insertions, 8 deletions
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 ed0329121e5..7a83f3db85b 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
@@ -83,6 +83,7 @@ import org.sonar.db.DaoModule;
import org.sonar.db.DbClient;
import org.sonar.db.DefaultDatabase;
import org.sonar.db.MyBatis;
+import org.sonar.db.StartMyBatis;
import org.sonar.db.audit.NoOpAuditPersister;
import org.sonar.db.purge.PurgeProfiler;
import org.sonar.process.NetworkUtilsImpl;
@@ -283,6 +284,7 @@ public class ComputeEngineContainerImpl implements ComputeEngineContainer {
LogbackHelper.class,
DefaultDatabase.class,
MyBatis.class,
+ StartMyBatis.class,
PurgeProfiler.class,
ServerFileSystemImpl.class,
new TempFolderProvider(),
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java b/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java
index d128c08158f..6917d3c656f 100644
--- a/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java
+++ b/server/sonar-db-dao/src/main/java/org/sonar/db/MyBatis.java
@@ -159,7 +159,7 @@ import org.sonar.db.webhook.WebhookDeliveryMapper;
import org.sonar.db.webhook.WebhookMapper;
import org.springframework.beans.factory.annotation.Autowired;
-public class MyBatis implements Startable {
+public class MyBatis {
private final List<MyBatisConfExtension> confExtensions;
private final Database database;
private SqlSessionFactory sessionFactory;
@@ -175,7 +175,6 @@ public class MyBatis implements Startable {
this.database = database;
}
- @Override
public void start() {
LogFactory.useSlf4jLogging();
@@ -320,11 +319,6 @@ public class MyBatis implements Startable {
sessionFactory = new SqlSessionFactoryBuilder().build(confBuilder.build());
}
- @Override
- public void stop() {
- // nothing to do
- }
-
@VisibleForTesting
SqlSessionFactory getSessionFactory() {
return sessionFactory;
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/StartMyBatis.java b/server/sonar-db-dao/src/main/java/org/sonar/db/StartMyBatis.java
new file mode 100644
index 00000000000..6ccd070fa6f
--- /dev/null
+++ b/server/sonar-db-dao/src/main/java/org/sonar/db/StartMyBatis.java
@@ -0,0 +1,42 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2022 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.db;
+
+import org.sonar.api.Startable;
+
+/*
+ * The only purpose of this class is to start MyBatis.
+ * MyBatis is not Startable because in the unit tests it's cached and added to the container, and in that situation we don't want it to be started.
+ */
+public class StartMyBatis implements Startable {
+ private final MyBatis myBatis;
+
+ public StartMyBatis(MyBatis myBatis) {
+ this.myBatis = myBatis;
+ }
+
+ public void start() {
+ myBatis.start();
+ }
+
+ public void stop() {
+ // nothing to do
+ }
+}
diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/StartMyBatisTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/StartMyBatisTest.java
new file mode 100644
index 00000000000..d244988b233
--- /dev/null
+++ b/server/sonar-db-dao/src/test/java/org/sonar/db/StartMyBatisTest.java
@@ -0,0 +1,40 @@
+/*
+ * SonarQube
+ * Copyright (C) 2009-2022 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.db;
+
+import org.junit.Test;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+
+public class StartMyBatisTest {
+
+ @Test
+ public void should_start_mybatis_instance(){
+ var myBatis = mock(MyBatis.class);
+ var startMyBatis = new StartMyBatis(myBatis);
+ startMyBatis.start();
+ verify(myBatis).start();
+ verifyNoMoreInteractions(myBatis);
+ }
+
+
+}
diff --git a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/DbTester.java b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/DbTester.java
index d8d9e8bb483..39d31e38b12 100644
--- a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/DbTester.java
+++ b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/DbTester.java
@@ -161,7 +161,6 @@ public class DbTester extends AbstractDbTester<TestDbImpl> {
protected void before() {
db.start();
db.truncateTables();
- initDbClient();
}
public UserDbTester users() {
diff --git a/server/sonar-webserver/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java b/server/sonar-webserver/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java
index d576c3d585f..f3acfaccdcb 100644
--- a/server/sonar-webserver/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java
+++ b/server/sonar-webserver/src/main/java/org/sonar/server/platform/platformlevel/PlatformLevel1.java
@@ -37,6 +37,7 @@ import org.sonar.db.DaoModule;
import org.sonar.db.DbClient;
import org.sonar.db.DefaultDatabase;
import org.sonar.db.MyBatis;
+import org.sonar.db.StartMyBatis;
import org.sonar.db.audit.AuditPersister;
import org.sonar.db.audit.NoOpAuditPersister;
import org.sonar.db.purge.PurgeProfiler;
@@ -106,6 +107,7 @@ public class PlatformLevel1 extends PlatformLevel {
WebServerProcessLogging.class,
DefaultDatabase.class,
MyBatis.class,
+ StartMyBatis.class,
PurgeProfiler.class,
ServerFileSystemImpl.class,
TempFolderCleaner.class,