From dc8b390ae307fe0f9a417ca5ac0d434a50fcecfb Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Thu, 12 Jun 2014 14:55:43 +0200 Subject: [PATCH] SONAR-5007 improve medium tests for testing server startup tasks --- .../org/sonar/server/platform/Platform.java | 4 +++ .../server/platform/ServerComponents.java | 3 +- .../startup/RegisterPermissionTemplates.java | 4 +-- .../server/rule/RegisterRulesMediumTest.java | 35 +++++++++++-------- 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java index 76146a8f8ac..dc1ce4f53b9 100644 --- a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java +++ b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java @@ -119,7 +119,11 @@ public class Platform { level4Container = level3Container.createChild(); serverComponents.startLevel4Components(level4Container); currentContainer = level4Container; + executeStartupTasks(); + } + public void executeStartupTasks() { + serverComponents.executeStartupTasks(level4Container); } public void restart() { diff --git a/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java b/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java index f01552be46a..ba51176ec2c 100644 --- a/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java +++ b/sonar-server/src/main/java/org/sonar/server/platform/ServerComponents.java @@ -653,14 +653,13 @@ class ServerComponents { extensionInstaller.installExtensions(pico); pico.startComponents(); - executeStartupTaks(pico); } void addComponents(Collection components) { this.level4AddedComponents.addAll(components); } - private void executeStartupTaks(ComponentContainer pico) { + public void executeStartupTasks(ComponentContainer pico) { final ComponentContainer startupContainer = pico.createChild(); startupContainer.addSingleton(GwtPublisher.class); startupContainer.addSingleton(RegisterMetrics.class); diff --git a/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java b/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java index cfc7de00cea..df115467d1c 100644 --- a/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java +++ b/sonar-server/src/main/java/org/sonar/server/startup/RegisterPermissionTemplates.java @@ -87,7 +87,7 @@ public class RegisterPermissionTemplates { } private void addGroupPermission(PermissionTemplateDto template, String permission, String groupName) { - Long groupId; + Long groupId = null; if (DefaultGroups.isAnyone(groupName)) { groupId = null; } else { @@ -95,7 +95,7 @@ public class RegisterPermissionTemplates { if (groupDto != null) { groupId = groupDto.getId(); } else { - throw new IllegalArgumentException("Cannot setup default permission for group: " + groupName); + LOG.error("Cannot setup default permission for group: " + groupName); } } permissionTemplateDao.addGroupPermission(template.getId(), groupId, permission); diff --git a/sonar-server/src/test/java/org/sonar/server/rule/RegisterRulesMediumTest.java b/sonar-server/src/test/java/org/sonar/server/rule/RegisterRulesMediumTest.java index 34797df5b82..7fbf4d129aa 100644 --- a/sonar-server/src/test/java/org/sonar/server/rule/RegisterRulesMediumTest.java +++ b/sonar-server/src/test/java/org/sonar/server/rule/RegisterRulesMediumTest.java @@ -22,6 +22,7 @@ package org.sonar.server.rule; import org.junit.After; import org.junit.Before; +import org.junit.ClassRule; import org.junit.Test; import org.sonar.api.rule.RuleKey; import org.sonar.api.rule.RuleStatus; @@ -52,26 +53,28 @@ import static org.fest.assertions.Assertions.assertThat; public class RegisterRulesMediumTest { - // Hack to restart server without x2 - static boolean includeX1 = true, includeX2 = true; + static XooRulesDefinition rulesDefinition = new XooRulesDefinition(); - @org.junit.Rule - public ServerTester tester = new ServerTester().addComponents(XooRulesDefinition.class); + @ClassRule + public static ServerTester tester = new ServerTester().addComponents(rulesDefinition); DbClient db; DbSession dbSession; @Before public void before() { + tester.clearDbAndIndexes(); + rulesDefinition.includeX1 = true; + rulesDefinition.includeX2 = true; + tester.get(Platform.class).executeStartupTasks(); db = tester.get(DbClient.class); dbSession = tester.get(DbClient.class).openSession(false); + dbSession.clearCache(); } @After public void after() { dbSession.close(); - includeX1 = true; - includeX2 = true; } @Test @@ -106,7 +109,7 @@ public class RegisterRulesMediumTest { assertThat(searchResult.getHits()).hasSize(0); // db is not updated (same rules) but es must be reindexed - tester.get(Platform.class).restart(); + tester.get(Platform.class).executeStartupTasks(); index = tester.get(RuleIndex.class); @@ -121,8 +124,8 @@ public class RegisterRulesMediumTest { public void mark_rule_as_removed() throws Exception { verifyTwoRulesInDb(); - includeX2 = false; - tester.get(Platform.class).restart(); + rulesDefinition.includeX2 = false; + tester.get(Platform.class).executeStartupTasks(); verifyTwoRulesInDb(); RuleDto rule = db.ruleDao().getByKey(dbSession, RuleKey.of("xoo", "x2")); @@ -144,9 +147,9 @@ public class RegisterRulesMediumTest { dbSession.clearCache(); // restart, x2 still exists -> deactivate x1 - includeX1 = false; - includeX2 = true; - tester.get(Platform.class).restart(); + rulesDefinition.includeX1 = false; + rulesDefinition.includeX2 = true; + tester.get(Platform.class).executeStartupTasks(); dbSession.clearCache(); assertThat(db.ruleDao().getByKey(dbSession, RuleKey.of("xoo", "x1")).getStatus()).isEqualTo(RuleStatus.REMOVED); assertThat(db.ruleDao().getByKey(dbSession, RuleKey.of("xoo", "x2")).getStatus()).isEqualTo(RuleStatus.READY); @@ -168,9 +171,9 @@ public class RegisterRulesMediumTest { dbSession.clearCache(); // restart without x1 and x2 -> keep active rule of x1 - includeX1 = false; - includeX2 = false; - tester.get(Platform.class).restart(); + rulesDefinition.includeX1 = false; + rulesDefinition.includeX2 = false; + tester.get(Platform.class).executeStartupTasks(); dbSession.clearCache(); assertThat(db.ruleDao().getByKey(dbSession, RuleKey.of("xoo", "x1")).getStatus()).isEqualTo(RuleStatus.REMOVED); assertThat(db.ruleDao().getByKey(dbSession, RuleKey.of("xoo", "x2")).getStatus()).isEqualTo(RuleStatus.REMOVED); @@ -186,6 +189,8 @@ public class RegisterRulesMediumTest { public static class XooRulesDefinition implements RulesDefinition { + boolean includeX1 = true, includeX2 = true; + @Override public void define(Context context) { if (includeX1 || includeX2) { -- 2.39.5