From 850632c364e27a964c7b031ca98a964631e58911 Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Thu, 29 May 2014 10:35:19 +0200 Subject: [PATCH] SONAR-5007 complete tests of active rules --- .../qualityprofile/db/QualityProfileDto.java | 2 +- .../qualityprofile/db/ActiveRuleDao.java | 6 ++- ....java => ActiveRuleBackendMediumTest.java} | 47 ++++++++++++++----- .../RuleActivatorMediumTest.java | 10 ++-- .../ws/QProfilesWsMediumTest.java | 2 +- ...umTest.java => RuleBackendMediumTest.java} | 4 +- .../server/rule/RuleServiceMediumTest.java | 2 +- .../server/rule/RuleUpdaterMediumTest.java | 2 +- .../rule/index/RuleIndexMediumTest.java | 2 +- .../server/rule/ws/RulesWebServiceTest.java | 2 +- ...aStoreCleanup.java => BackendCleanup.java} | 6 +-- .../org/sonar/server/tester/ServerTester.java | 10 ++-- 12 files changed, 61 insertions(+), 34 deletions(-) rename sonar-server/src/test/java/org/sonar/server/qualityprofile/{index/ActiveRuleIndexMediumTest.java => ActiveRuleBackendMediumTest.java} (86%) rename sonar-server/src/test/java/org/sonar/server/rule/{RuleDataMediumTest.java => RuleBackendMediumTest.java} (99%) rename sonar-server/src/test/java/org/sonar/server/tester/{DataStoreCleanup.java => BackendCleanup.java} (92%) diff --git a/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/QualityProfileDto.java b/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/QualityProfileDto.java index c8785bbdf01..c548db07c9e 100644 --- a/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/QualityProfileDto.java +++ b/sonar-core/src/main/java/org/sonar/core/qualityprofile/db/QualityProfileDto.java @@ -35,7 +35,7 @@ public class QualityProfileDto extends Dto { private boolean used; /** - * @deprecated use QualityProfileDto.createFor instead + * @deprecated use {@link #createFor(String, String)} */ @Deprecated public QualityProfileDto() { diff --git a/sonar-server/src/main/java/org/sonar/server/qualityprofile/db/ActiveRuleDao.java b/sonar-server/src/main/java/org/sonar/server/qualityprofile/db/ActiveRuleDao.java index 524af28f01e..1ab20edc0d0 100644 --- a/sonar-server/src/main/java/org/sonar/server/qualityprofile/db/ActiveRuleDao.java +++ b/sonar-server/src/main/java/org/sonar/server/qualityprofile/db/ActiveRuleDao.java @@ -203,7 +203,7 @@ public class ActiveRuleDao extends BaseDao findAllParams(DbSession session) { + return mapper(session).selectAllParams(); + } + @Deprecated public void removeParamByProfile(DbSession session, QProfile profile) { mapper(session).deleteParametersFromProfile(profile.id()); diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/index/ActiveRuleIndexMediumTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleBackendMediumTest.java similarity index 86% rename from sonar-server/src/test/java/org/sonar/server/qualityprofile/index/ActiveRuleIndexMediumTest.java rename to sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleBackendMediumTest.java index ffe5fba3b7a..0b06587ec6f 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualityprofile/index/ActiveRuleIndexMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleBackendMediumTest.java @@ -17,9 +17,8 @@ * 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.qualityprofile.index; +package org.sonar.server.qualityprofile; -import org.junit.After; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; @@ -36,7 +35,7 @@ import org.sonar.core.qualityprofile.db.QualityProfileKey; import org.sonar.core.rule.RuleDto; import org.sonar.core.rule.RuleParamDto; import org.sonar.server.db.DbClient; -import org.sonar.server.qualityprofile.ActiveRule; +import org.sonar.server.qualityprofile.index.ActiveRuleIndex; import org.sonar.server.rule.RuleTesting; import org.sonar.server.tester.ServerTester; @@ -45,28 +44,50 @@ import java.util.List; import static org.fest.assertions.Assertions.assertThat; -public class ActiveRuleIndexMediumTest { +public class ActiveRuleBackendMediumTest { @ClassRule public static ServerTester tester = new ServerTester(); - DbClient db = tester.get(DbClient.class); - ActiveRuleIndex index = tester.get(ActiveRuleIndex.class); + DbClient db; DbSession dbSession; + ActiveRuleIndex index; @Before public void before() { - tester.clearDbAndEs(); + tester.clearDbAndIndexes(); + db = tester.get(DbClient.class); dbSession = db.openSession(false); + index = tester.get(ActiveRuleIndex.class); } - @After - public void after() { - dbSession.close(); + @Test + public void synchronize_index() throws Exception { + QualityProfileDto profile1 = QualityProfileDto.createFor("p1", "java"); + db.qualityProfileDao().insert(dbSession, profile1); + + RuleDto rule1 = RuleDto.createFor(RuleKey.of("java", "r1")).setSeverity(Severity.MAJOR); + db.ruleDao().insert(dbSession, rule1); + + ActiveRuleDto activeRule = ActiveRuleDto.createFor(profile1, rule1).setSeverity("BLOCKER"); + db.activeRuleDao().insert(dbSession, activeRule); + dbSession.commit(); + + tester.clearIndexes(); + + // 0. Assert that we have no rules in Is. + assertThat(index.getByKey(activeRule.getKey())).isNull(); + + // 1. Synchronize since 0 + db.activeRuleDao().synchronizeAfter(dbSession, 0); + + // 2. Assert that we have the rule in Index + assertThat(index.getByKey(activeRule.getKey())).isNotNull(); + } @Test - public void insert_and_index_active_rule() throws InterruptedException { + public void insert_and_index_active_rule() { QualityProfileDto profileDto = QualityProfileDto.createFor("myprofile", "java"); db.qualityProfileDao().insert(dbSession, profileDto); RuleKey ruleKey = RuleKey.of("javascript", "S001"); @@ -93,7 +114,7 @@ public class ActiveRuleIndexMediumTest { } @Test - public void insert_and_index_active_rule_param() throws InterruptedException { + public void insert_and_index_active_rule_param() { // insert and index QualityProfileDto profileDto = QualityProfileDto.createFor("myprofile", "java"); db.qualityProfileDao().insert(dbSession, profileDto); @@ -188,7 +209,7 @@ public class ActiveRuleIndexMediumTest { } @Test - public void find_many_active_rules_by_profile() throws InterruptedException { + public void find_many_active_rules_by_profile() { // insert and index QualityProfileDto profileDto = QualityProfileDto.createFor("P1", "java"); db.qualityProfileDao().insert(dbSession, profileDto); diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/RuleActivatorMediumTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/RuleActivatorMediumTest.java index bb32256ca03..bf78b005a9c 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualityprofile/RuleActivatorMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/RuleActivatorMediumTest.java @@ -67,8 +67,9 @@ public class RuleActivatorMediumTest { index = tester.get(ActiveRuleIndex.class); // create quality profile - db.qualityProfileDao().insert(dbSession, QualityProfileDto.createFor("MyProfile", "xoo")); + db.qualityProfileDao().insert(dbSession, QualityProfileDto.createFor(PROFILE_KEY)); dbSession.commit(); + dbSession.clearCache(); } @Test @@ -167,10 +168,10 @@ public class RuleActivatorMediumTest { ruleActivator.activate(activation); - assertThat(db.activeRuleDao().getParamsByKeyAndName(activeRuleKey, "max", dbSession)).isNotNull(); + assertThat(db.activeRuleDao().getParamByKeyAndName(activeRuleKey, "max", dbSession)).isNotNull(); db.activeRuleDao().removeParamByKeyAndName(dbSession, activeRuleKey, "max"); dbSession.commit(); - assertThat(db.activeRuleDao().getParamsByKeyAndName(activeRuleKey, "max", dbSession)).isNull(); + assertThat(db.activeRuleDao().getParamByKeyAndName(activeRuleKey, "max", dbSession)).isNull(); // update @@ -400,9 +401,10 @@ public class RuleActivatorMediumTest { private void verifyZeroActiveRules(ActiveRuleKey key) { // verify db + dbSession.clearCache(); List activeRuleDtos = db.activeRuleDao().findByProfileKey(dbSession, key.qProfile()); assertThat(activeRuleDtos).isEmpty(); - //TODO test params + assertThat(db.activeRuleDao().findAllParams(dbSession)).isEmpty(); // verify es ActiveRule activeRule = index.getByKey(key); diff --git a/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsMediumTest.java b/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsMediumTest.java index a5cf73465f9..f558209bd5c 100644 --- a/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/qualityprofile/ws/QProfilesWsMediumTest.java @@ -64,7 +64,7 @@ public class QProfilesWsMediumTest { @Before public void setUp() throws Exception { - tester.clearDbAndEs(); + tester.clearDbAndIndexes(); db = tester.get(DbClient.class); ws = tester.get(QProfilesWs.class); wsTester = tester.get(WsTester.class); diff --git a/sonar-server/src/test/java/org/sonar/server/rule/RuleDataMediumTest.java b/sonar-server/src/test/java/org/sonar/server/rule/RuleBackendMediumTest.java similarity index 99% rename from sonar-server/src/test/java/org/sonar/server/rule/RuleDataMediumTest.java rename to sonar-server/src/test/java/org/sonar/server/rule/RuleBackendMediumTest.java index 1b72c910f77..4bab5f494f9 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule/RuleDataMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule/RuleBackendMediumTest.java @@ -50,7 +50,7 @@ import static org.fest.assertions.Assertions.assertThat; /** * Test persistence in db and indexation in es (--> integration of DAOs and Indexes) */ -public class RuleDataMediumTest { +public class RuleBackendMediumTest { @ClassRule public static ServerTester tester = new ServerTester(); @@ -62,7 +62,7 @@ public class RuleDataMediumTest { @Before public void before() { - tester.clearDbAndEs(); + tester.clearDbAndIndexes(); db = tester.get(DbClient.class); dbSession = tester.get(MyBatis.class).openSession(false); } diff --git a/sonar-server/src/test/java/org/sonar/server/rule/RuleServiceMediumTest.java b/sonar-server/src/test/java/org/sonar/server/rule/RuleServiceMediumTest.java index 4a5a61282e3..7e5a2f0f90e 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule/RuleServiceMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule/RuleServiceMediumTest.java @@ -49,7 +49,7 @@ public class RuleServiceMediumTest { @Before public void before() { - tester.clearDbAndEs(); + tester.clearDbAndIndexes(); dbSession = tester.get(DbClient.class).openSession(false); } diff --git a/sonar-server/src/test/java/org/sonar/server/rule/RuleUpdaterMediumTest.java b/sonar-server/src/test/java/org/sonar/server/rule/RuleUpdaterMediumTest.java index b7cfb41146f..dc13bce6671 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule/RuleUpdaterMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule/RuleUpdaterMediumTest.java @@ -63,7 +63,7 @@ public class RuleUpdaterMediumTest { @Before public void before() { - tester.clearDbAndEs(); + tester.clearDbAndIndexes(); dbSession = db.openSession(false); } diff --git a/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java b/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java index 03488db1ef2..77f4212b750 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java @@ -68,7 +68,7 @@ public class RuleIndexMediumTest { @Before public void before() { - tester.clearDbAndEs(); + tester.clearDbAndIndexes(); dbSession = myBatis.openSession(false); } diff --git a/sonar-server/src/test/java/org/sonar/server/rule/ws/RulesWebServiceTest.java b/sonar-server/src/test/java/org/sonar/server/rule/ws/RulesWebServiceTest.java index 0f9e28b88d7..9fab1c7e775 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule/ws/RulesWebServiceTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule/ws/RulesWebServiceTest.java @@ -64,7 +64,7 @@ public class RulesWebServiceTest { @Before public void setUp() throws Exception { - tester.clearDbAndEs(); + tester.clearDbAndIndexes(); ruleDao = tester.get(RuleDao.class); ws = tester.get(RulesWebService.class); session = tester.get(DbClient.class).openSession(false); diff --git a/sonar-server/src/test/java/org/sonar/server/tester/DataStoreCleanup.java b/sonar-server/src/test/java/org/sonar/server/tester/BackendCleanup.java similarity index 92% rename from sonar-server/src/test/java/org/sonar/server/tester/DataStoreCleanup.java rename to sonar-server/src/test/java/org/sonar/server/tester/BackendCleanup.java index 889a12f58c3..71a32dd47b3 100644 --- a/sonar-server/src/test/java/org/sonar/server/tester/DataStoreCleanup.java +++ b/sonar-server/src/test/java/org/sonar/server/tester/BackendCleanup.java @@ -31,14 +31,14 @@ import org.sonar.server.search.ESNode; import java.sql.Connection; -public class DataStoreCleanup implements ServerComponent { +public class BackendCleanup implements ServerComponent { - private static final Logger LOG = LoggerFactory.getLogger(DataStoreCleanup.class); + private static final Logger LOG = LoggerFactory.getLogger(BackendCleanup.class); private final ESNode esNode; private final MyBatis myBatis; - public DataStoreCleanup(ESNode esNode, MyBatis myBatis) { + public BackendCleanup(ESNode esNode, MyBatis myBatis) { this.esNode = esNode; this.myBatis = myBatis; } diff --git a/sonar-server/src/test/java/org/sonar/server/tester/ServerTester.java b/sonar-server/src/test/java/org/sonar/server/tester/ServerTester.java index c11caa2eb74..d9156a2dcf7 100644 --- a/sonar-server/src/test/java/org/sonar/server/tester/ServerTester.java +++ b/sonar-server/src/test/java/org/sonar/server/tester/ServerTester.java @@ -51,7 +51,7 @@ public class ServerTester extends ExternalResource { private final Platform platform; private final File homeDir; - private final List components = Lists.newArrayList(DataStoreCleanup.class, WsTester.class); + private final List components = Lists.newArrayList(BackendCleanup.class, WsTester.class); private final Properties initialProps = new Properties(); public ServerTester() { @@ -156,16 +156,16 @@ public class ServerTester extends ExternalResource { } /** - * Truncate all db tables and es indices. Can be executed only if ServerTester is started. + * Truncate all db tables and Elasticsearch indexes. Can be executed only if ServerTester is started. */ - public void clearDbAndEs() { + public void clearDbAndIndexes() { checkStarted(); - get(DataStoreCleanup.class).clearAll(); + get(BackendCleanup.class).clearAll(); } public void clearIndexes() { checkStarted(); - get(DataStoreCleanup.class).clearIndexes(); + get(BackendCleanup.class).clearIndexes(); } /** -- 2.39.5