isolate statistical effects in tests

This commit is contained in:
peter
2012-06-26 18:29:54 +02:00
parent 12049a7e91
commit bb7f773708
8 changed files with 29 additions and 47 deletions
@@ -10,6 +10,8 @@ import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupManager;
import com.intellij.codeInsight.lookup.impl.LookupImpl;
import com.intellij.ide.ui.UISettings;
import com.intellij.psi.statistics.StatisticsManager;
import com.intellij.psi.statistics.impl.StatisticsManagerImpl;
import com.intellij.testFramework.TestDataPath;
import org.jetbrains.annotations.NonNls;
@@ -25,6 +27,12 @@ public abstract class CompletionSortingTestCase extends LightFixtureCompletionTe
myType = type;
}
@Override
protected void setUp() throws Exception {
super.setUp();
((StatisticsManagerImpl)StatisticsManager.getInstance()).enableStatistics(getTestRootDisposable());
}
@Override
protected void tearDown() throws Exception {
LookupManager.getInstance(getProject()).hideActiveLookup();
@@ -10,8 +10,6 @@ import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
import com.intellij.psi.statistics.StatisticsManager;
import com.intellij.psi.statistics.impl.StatisticsManagerImpl;
import com.intellij.testFramework.LightCodeInsightTestCase;
import com.intellij.testFramework.TestDataPath;
@@ -26,12 +24,6 @@ import com.intellij.testFramework.TestDataPath;
public class CompletionStyleTest extends LightCodeInsightTestCase{
private static final String BASE_PATH = "/codeInsight/completion/style";
@Override
protected void setUp() throws Exception {
super.setUp();
((StatisticsManagerImpl)StatisticsManager.getInstance()).clearStatistics();
}
@Override
protected LanguageLevel getLanguageLevel() {
return LanguageLevel.JDK_1_6;
@@ -5,8 +5,6 @@ import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupManager;
import com.intellij.codeInsight.lookup.impl.LookupImpl;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.psi.statistics.StatisticsManager;
import com.intellij.psi.statistics.impl.StatisticsManagerImpl;
import com.intellij.testFramework.LightProjectDescriptor;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
import org.jetbrains.annotations.NotNull;
@@ -17,12 +15,6 @@ import org.jetbrains.annotations.NotNull;
public abstract class LightFixtureCompletionTestCase extends LightCodeInsightFixtureTestCase {
protected LookupElement[] myItems;
@Override
protected void setUp() throws Exception {
super.setUp();
((StatisticsManagerImpl)StatisticsManager.getInstance()).clearStatistics();
}
@NotNull
@Override
protected LightProjectDescriptor getProjectDescriptor() {
@@ -19,8 +19,6 @@ import com.intellij.codeInsight.daemon.DaemonAnalyzerTestCase;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupManager;
import com.intellij.codeInsight.lookup.impl.LookupImpl;
import com.intellij.psi.statistics.StatisticsManager;
import com.intellij.psi.statistics.impl.StatisticsManagerImpl;
import com.intellij.testFramework.PlatformTestCase;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
@@ -38,12 +36,6 @@ public abstract class CompletionTestCase extends DaemonAnalyzerTestCase {
protected LookupElement[] myItems;
private CompletionType myType = CompletionType.BASIC;
@Override
protected void setUp() throws Exception {
super.setUp();
((StatisticsManagerImpl)StatisticsManager.getInstance()).clearStatistics();
}
@Override
protected void tearDown() throws Exception {
try {
@@ -19,8 +19,6 @@ import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.codeInsight.lookup.LookupManager;
import com.intellij.codeInsight.lookup.impl.LookupImpl;
import com.intellij.testFramework.LightCodeInsightTestCase;
import com.intellij.psi.statistics.impl.StatisticsManagerImpl;
import com.intellij.psi.statistics.StatisticsManager;
import com.intellij.util.containers.HashSet;
import org.jetbrains.annotations.NonNls;
@@ -37,12 +35,6 @@ public abstract class LightCompletionTestCase extends LightCodeInsightTestCase {
protected LookupElement[] myItems;
private CompletionType myType = CompletionType.BASIC;
@Override
protected void setUp() throws Exception {
super.setUp();
((StatisticsManagerImpl)StatisticsManager.getInstance()).clearStatistics();
}
@Override
protected void tearDown() throws Exception {
LookupManager.getInstance(getProject()).hideActiveLookup();
@@ -17,9 +17,11 @@ package com.intellij.psi.statistics.impl;
import com.intellij.CommonBundle;
import com.intellij.ide.IdeBundle;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Disposer;
import com.intellij.psi.statistics.StatisticsInfo;
import com.intellij.psi.statistics.StatisticsManager;
import com.intellij.reference.SoftReference;
@@ -43,6 +45,7 @@ public class StatisticsManagerImpl extends StatisticsManager {
private final SoftReference[] myUnits = new SoftReference[UNIT_COUNT];
private final HashSet<StatisticsUnit> myModifiedUnits = new HashSet<StatisticsUnit>();
private boolean myTestingStatistics;
public int getUseCount(@NotNull final StatisticsInfo info) {
if (info == StatisticsInfo.EMPTY) return 0;
@@ -57,6 +60,9 @@ public class StatisticsManagerImpl extends StatisticsManager {
public void incUseCount(@NotNull final StatisticsInfo info) {
if (info == StatisticsInfo.EMPTY) return;
if (ApplicationManager.getApplication().isUnitTestMode() && !myTestingStatistics) {
return;
}
final String key1 = info.getContext();
int unitNumber = getUnitNumber(key1);
@@ -177,9 +183,17 @@ public class StatisticsManagerImpl extends StatisticsManager {
}
@TestOnly
public void clearStatistics() {
synchronized (LOCK) {
Arrays.fill(myUnits, null);
}
public void enableStatistics(@NotNull Disposable parentDisposable) {
myTestingStatistics = true;
Disposer.register(parentDisposable, new Disposable() {
@Override
public void dispose() {
synchronized (LOCK) {
Arrays.fill(myUnits, null);
}
myTestingStatistics = false;
}
});
}
}
@@ -19,22 +19,16 @@ public class StatisticsManagerTest extends LightPlatformTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
((StatisticsManagerImpl)StatisticsManager.getInstance()).clearStatistics();
((StatisticsManagerImpl)StatisticsManager.getInstance()).enableStatistics(getTestRootDisposable());
}
@Override
protected void tearDown() throws Exception {
((StatisticsManagerImpl)StatisticsManager.getInstance()).clearStatistics();
super.tearDown();
}
private void incUseCount(String value, int times) {
private static void incUseCount(String value, int times) {
for (int i = 0; i < times; i++) {
StatisticsManager.getInstance().incUseCount(new StatisticsInfo(TEST_CONTEXT, value));
}
}
private int getUseCount(String value) {
private static int getUseCount(String value) {
return StatisticsManager.getInstance().getUseCount(new StatisticsInfo(TEST_CONTEXT, value));
}
@@ -1050,8 +1050,6 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig
@Override
public void tearDown() throws Exception {
((StatisticsManagerImpl)StatisticsManager.getInstance()).clearStatistics();
FileEditorManager editorManager = FileEditorManager.getInstance(getProject());
VirtualFile[] openFiles = editorManager.getOpenFiles();
for (VirtualFile openFile : openFiles) {