summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@sonarsource.com>2014-11-28 19:34:05 +0100
committerSimon Brandhof <simon.brandhof@sonarsource.com>2014-11-28 19:34:19 +0100
commitc2fad0c0805a81eb80f5eb5770a5665e07a32ccd (patch)
tree472b4e086ee0a32084fcc5e9df19812cb3eed19c /server
parent41e9fb68fb66b0be8f9afa90476b785ed8783620 (diff)
downloadsonarqube-c2fad0c0805a81eb80f5eb5770a5665e07a32ccd.tar.gz
sonarqube-c2fad0c0805a81eb80f5eb5770a5665e07a32ccd.zip
Fix memory leaks in server medium tests
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/activity/SearchMediumTest.java67
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleBackendMediumTest.java45
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java95
-rw-r--r--server/sonar-server/src/test/java/org/sonar/server/tester/ServerTester.java6
4 files changed, 110 insertions, 103 deletions
diff --git a/server/sonar-server/src/test/java/org/sonar/server/activity/SearchMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/activity/SearchMediumTest.java
deleted file mode 100644
index 39bdb580e9d..00000000000
--- a/server/sonar-server/src/test/java/org/sonar/server/activity/SearchMediumTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * SonarQube, open source software quality management tool.
- * Copyright (C) 2008-2014 SonarSource
- * mailto:contact AT sonarsource DOT com
- *
- * SonarQube 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.
- *
- * SonarQube 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.activity;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.sonar.core.persistence.DbSession;
-import org.sonar.server.db.DbClient;
-import org.sonar.server.search.IndexClient;
-import org.sonar.server.tester.ServerTester;
-
-import java.lang.management.ManagementFactory;
-
-public abstract class SearchMediumTest {
-
-
- private static Logger LOGGER = LoggerFactory.getLogger(SearchMediumTest.class);
-
- @ClassRule
- public static ServerTester tester = new ServerTester();
-
- protected DbClient db;
- protected IndexClient index;
- protected DbSession dbSession;
-
- @Before
- public void before() {
- tester.clearDbAndIndexes();
- db = tester.get(DbClient.class);
- index = tester.get(IndexClient.class);
- dbSession = tester.get(DbClient.class).openSession(false);
-
- ManagementFactory.getMemoryMXBean();
- LOGGER.info("* Environment ({})", ManagementFactory.getOperatingSystemMXBean().getName());
- LOGGER.info("* heap:\t{}", ManagementFactory.getMemoryMXBean().getHeapMemoryUsage());
- LOGGER.info("* #cpu:\t{}", ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors());
- LOGGER.info("* load:\t{}", ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage());
- }
-
- @After
- public void after() {
- if (dbSession != null) {
- dbSession.close();
- }
- }
-
-}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleBackendMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleBackendMediumTest.java
index b23173ce004..eddf30bb67f 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleBackendMediumTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/qualityprofile/ActiveRuleBackendMediumTest.java
@@ -21,22 +21,29 @@ package org.sonar.server.qualityprofile;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Multimap;
+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;
import org.sonar.api.rule.Severity;
import org.sonar.api.server.debt.DebtRemediationFunction;
+import org.sonar.core.persistence.DbSession;
import org.sonar.core.qualityprofile.db.ActiveRuleDto;
import org.sonar.core.qualityprofile.db.ActiveRuleParamDto;
import org.sonar.core.qualityprofile.db.QualityProfileDto;
import org.sonar.core.rule.RuleDto;
import org.sonar.core.rule.RuleParamDto;
-import org.sonar.server.activity.SearchMediumTest;
+import org.sonar.server.db.DbClient;
import org.sonar.server.platform.Platform;
import org.sonar.server.qualityprofile.index.ActiveRuleIndex;
import org.sonar.server.qualityprofile.index.ActiveRuleNormalizer;
import org.sonar.server.rule.RuleTesting;
+import org.sonar.server.rule.db.RuleDao;
import org.sonar.server.search.FacetValue;
+import org.sonar.server.search.IndexClient;
+import org.sonar.server.tester.ServerTester;
import java.util.Collection;
import java.util.Date;
@@ -46,7 +53,32 @@ import java.util.Map;
import static com.google.common.collect.Lists.newArrayList;
import static org.fest.assertions.Assertions.assertThat;
-public class ActiveRuleBackendMediumTest extends SearchMediumTest {
+public class ActiveRuleBackendMediumTest {
+
+ @ClassRule
+ public static ServerTester tester = new ServerTester();
+
+ DbClient db;
+ RuleDao dao;
+ IndexClient index;
+ DbSession dbSession;
+
+ @Before
+ public void before() {
+ dao = tester.get(RuleDao.class);
+ tester.clearDbAndIndexes();
+ db = tester.get(DbClient.class);
+ index = tester.get(IndexClient.class);
+ dbSession = tester.get(DbClient.class).openSession(false);
+
+ }
+
+ @After
+ public void after() {
+ if (dbSession != null) {
+ dbSession.close();
+ }
+ }
@Test
public void synchronize_index() throws Exception {
@@ -175,7 +207,8 @@ public class ActiveRuleBackendMediumTest extends SearchMediumTest {
db.activeRuleDao().insert(dbSession, ActiveRuleDto.createFor(profile1, rule1).setSeverity(Severity.MINOR));
db.activeRuleDao().insert(dbSession, ActiveRuleDto.createFor(profile1, rule2).setSeverity(Severity.BLOCKER));
db.activeRuleDao().insert(dbSession, ActiveRuleDto.createFor(profile2, rule2).setSeverity(Severity.CRITICAL));
- // Removed rule can still be activated for instance when removing the checkstyle plugin, active rules related on checkstyle are not removed
+ // Removed rule can still be activated for instance when removing the checkstyle plugin, active rules related on checkstyle are not
+ // removed
// because if the plugin is re-install, quality profiles using these rule are not changed.
db.activeRuleDao().insert(dbSession, ActiveRuleDto.createFor(profile2, removedRule).setSeverity(Severity.MAJOR));
dbSession.commit();
@@ -310,7 +343,7 @@ public class ActiveRuleBackendMediumTest extends SearchMediumTest {
ActiveRuleDto.createFor(profileDto2, ruleDto2)
.setInheritance(ActiveRule.Inheritance.INHERITED.name())
.setSeverity(Severity.BLOCKER)
- );
+ );
dbSession.commit();
dbSession.clearCache();
@@ -335,7 +368,7 @@ public class ActiveRuleBackendMediumTest extends SearchMediumTest {
db.ruleDao().insert(dbSession, ruleDto1, ruleDto2);
List<String> profileKeys = newArrayList();
- for (int i = 0; i<30; i++) {
+ for (int i = 0; i < 30; i++) {
QualityProfileDto profileDto = QProfileTesting.newDto(QProfileName.createFor("xoo", "profile-" + i), "profile-" + i);
profileKeys.add(profileDto.getKey());
db.qualityProfileDao().insert(dbSession, profileDto);
@@ -345,7 +378,7 @@ public class ActiveRuleBackendMediumTest extends SearchMediumTest {
.setSeverity(Severity.BLOCKER),
ActiveRuleDto.createFor(profileDto, ruleDto2)
.setSeverity(Severity.MAJOR)
- );
+ );
}
dbSession.commit();
dbSession.clearCache();
diff --git a/server/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java b/server/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java
index dc0dd4c16f9..64062056661 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/rule/index/RuleIndexMediumTest.java
@@ -25,16 +25,20 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.common.collect.Sets;
import org.apache.commons.lang.time.DateUtils;
+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;
import org.sonar.api.rule.Severity;
+import org.sonar.core.persistence.DbSession;
import org.sonar.core.qualityprofile.db.ActiveRuleDto;
import org.sonar.core.qualityprofile.db.QualityProfileDto;
import org.sonar.core.rule.RuleDto;
import org.sonar.core.rule.RuleParamDto;
import org.sonar.core.technicaldebt.db.CharacteristicDto;
-import org.sonar.server.activity.SearchMediumTest;
+import org.sonar.server.db.DbClient;
import org.sonar.server.debt.DebtTesting;
import org.sonar.server.qualityprofile.ActiveRule;
import org.sonar.server.qualityprofile.QProfileTesting;
@@ -44,19 +48,53 @@ import org.sonar.server.rule.db.RuleDao;
import org.sonar.server.search.FacetValue;
import org.sonar.server.search.QueryContext;
import org.sonar.server.search.Result;
+import org.sonar.server.tester.ServerTester;
import javax.annotation.Nullable;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
import static com.google.common.collect.Lists.newArrayList;
import static org.fest.assertions.Assertions.assertThat;
import static org.fest.assertions.Fail.fail;
-public class RuleIndexMediumTest extends SearchMediumTest {
+public class RuleIndexMediumTest {
- RuleDao dao = tester.get(RuleDao.class);
- RuleIndex index = tester.get(RuleIndex.class);
+ @ClassRule
+ public static ServerTester tester = new ServerTester();
+
+ protected DbClient db;
+
+ RuleDao dao;
+ RuleIndex index;
+ // IndexClient index;
+ DbSession dbSession;
+
+ @Before
+ public void before() {
+ dao = tester.get(RuleDao.class);
+ index = tester.get(RuleIndex.class);
+ tester.clearDbAndIndexes();
+ db = tester.get(DbClient.class);
+ // index = tester.get(IndexClient.class);
+ dbSession = tester.get(DbClient.class).openSession(false);
+
+ }
+
+ @After
+ public void after() {
+ if (dbSession != null) {
+ dbSession.close();
+ }
+ }
@Test
public void getByKey() throws InterruptedException {
@@ -435,7 +473,8 @@ public class RuleIndexMediumTest extends SearchMediumTest {
.setSubCharacteristicId(char21.getId()))
.setDefaultSubCharacteristicId(char11.getId());
- // Rule with both default sub characteristic and overridden sub characteristic and with same values -> should be find by char11 and char1
+ // Rule with both default sub characteristic and overridden sub characteristic and with same values -> should be find by char11 and
+ // char1
dao.insert(dbSession, RuleTesting.newDto(RuleKey.of("java", "S004"))
.setSubCharacteristicId(char11.getId()))
.setDefaultSubCharacteristicId(char11.getId());
@@ -588,7 +627,7 @@ public class RuleIndexMediumTest extends SearchMediumTest {
// 4. get all active rules on profile
result = index.search(new RuleQuery().setActivation(true)
- .setQProfileKey(qualityProfileDto2.getKey()),
+ .setQProfileKey(qualityProfileDto2.getKey()),
new QueryContext());
assertThat(result.getHits()).hasSize(1);
assertThat(result.getHits().get(0).name()).isEqualTo(rule1.getName());
@@ -625,7 +664,7 @@ public class RuleIndexMediumTest extends SearchMediumTest {
ActiveRuleDto.createFor(qualityProfileDto2, rule3)
.setSeverity("BLOCKER")
.setInheritance(ActiveRule.Inheritance.INHERITED.name())
- );
+ );
dbSession.commit();
@@ -647,52 +686,52 @@ public class RuleIndexMediumTest extends SearchMediumTest {
// 3. get Inherited Rules on profile1
result = index.search(new RuleQuery().setActivation(true)
- .setQProfileKey(qualityProfileDto1.getKey())
- .setInheritance(ImmutableSet.of(ActiveRule.Inheritance.INHERITED.name())),
+ .setQProfileKey(qualityProfileDto1.getKey())
+ .setInheritance(ImmutableSet.of(ActiveRule.Inheritance.INHERITED.name())),
new QueryContext()
- );
+ );
assertThat(result.getHits()).hasSize(0);
// 4. get Inherited Rules on profile2
result = index.search(new RuleQuery().setActivation(true)
- .setQProfileKey(qualityProfileDto2.getKey())
- .setInheritance(ImmutableSet.of(ActiveRule.Inheritance.INHERITED.name())),
+ .setQProfileKey(qualityProfileDto2.getKey())
+ .setInheritance(ImmutableSet.of(ActiveRule.Inheritance.INHERITED.name())),
new QueryContext()
- );
+ );
assertThat(result.getHits()).hasSize(2);
// 5. get Overridden Rules on profile1
result = index.search(new RuleQuery().setActivation(true)
- .setQProfileKey(qualityProfileDto1.getKey())
- .setInheritance(ImmutableSet.of(ActiveRule.Inheritance.OVERRIDES.name())),
+ .setQProfileKey(qualityProfileDto1.getKey())
+ .setInheritance(ImmutableSet.of(ActiveRule.Inheritance.OVERRIDES.name())),
new QueryContext()
- );
+ );
assertThat(result.getHits()).hasSize(0);
// 6. get Overridden Rules on profile2
result = index.search(new RuleQuery().setActivation(true)
- .setQProfileKey(qualityProfileDto2.getKey())
- .setInheritance(ImmutableSet.of(ActiveRule.Inheritance.OVERRIDES.name())),
+ .setQProfileKey(qualityProfileDto2.getKey())
+ .setInheritance(ImmutableSet.of(ActiveRule.Inheritance.OVERRIDES.name())),
new QueryContext()
- );
+ );
assertThat(result.getHits()).hasSize(1);
// 7. get Inherited AND Overridden Rules on profile1
result = index.search(new RuleQuery().setActivation(true)
- .setQProfileKey(qualityProfileDto1.getKey())
- .setInheritance(ImmutableSet.of(
- ActiveRule.Inheritance.INHERITED.name(), ActiveRule.Inheritance.OVERRIDES.name())),
+ .setQProfileKey(qualityProfileDto1.getKey())
+ .setInheritance(ImmutableSet.of(
+ ActiveRule.Inheritance.INHERITED.name(), ActiveRule.Inheritance.OVERRIDES.name())),
new QueryContext()
- );
+ );
assertThat(result.getHits()).hasSize(0);
// 8. get Inherited AND Overridden Rules on profile2
result = index.search(new RuleQuery().setActivation(true)
- .setQProfileKey(qualityProfileDto2.getKey())
- .setInheritance(ImmutableSet.of(
- ActiveRule.Inheritance.INHERITED.name(), ActiveRule.Inheritance.OVERRIDES.name())),
+ .setQProfileKey(qualityProfileDto2.getKey())
+ .setInheritance(ImmutableSet.of(
+ ActiveRule.Inheritance.INHERITED.name(), ActiveRule.Inheritance.OVERRIDES.name())),
new QueryContext()
- );
+ );
assertThat(result.getHits()).hasSize(3);
}
diff --git a/server/sonar-server/src/test/java/org/sonar/server/tester/ServerTester.java b/server/sonar-server/src/test/java/org/sonar/server/tester/ServerTester.java
index a2a9f8d9409..e7805b504a7 100644
--- a/server/sonar-server/src/test/java/org/sonar/server/tester/ServerTester.java
+++ b/server/sonar-server/src/test/java/org/sonar/server/tester/ServerTester.java
@@ -58,7 +58,7 @@ public class ServerTester extends ExternalResource {
private final Integer clusterPort;
private SearchServer searchServer;
- private final Platform platform;
+ private Platform platform;
private final File homeDir;
private final List components = Lists.newArrayList(WsTester.class);
private final Properties initialProps = new Properties();
@@ -154,6 +154,7 @@ public class ServerTester extends ExternalResource {
} catch (Exception e) {
e.printStackTrace();
}
+ platform = null;
try {
if (searchServer != null) {
searchServer.stop();
@@ -161,6 +162,7 @@ public class ServerTester extends ExternalResource {
} catch (Exception e) {
e.printStackTrace();
}
+ searchServer = null;
FileUtils.deleteQuietly(homeDir);
}
@@ -234,7 +236,7 @@ public class ServerTester extends ExternalResource {
}
private void checkNotStarted() {
- if (platform.isStarted()) {
+ if (platform != null && platform.isStarted()) {
throw new IllegalStateException("Already started");
}
}