diff options
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, |