diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionSortingTestCase.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionSortingTestCase.java index c33a5945ab3b..f2ddcd3f4cc6 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionSortingTestCase.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionSortingTestCase.java @@ -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(); diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionStyleTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionStyleTest.java index 703406feddc6..0ad4a0585a4a 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionStyleTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionStyleTest.java @@ -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; diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/LightFixtureCompletionTestCase.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/LightFixtureCompletionTestCase.java index 70c79ed8de79..f634138da2b7 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/LightFixtureCompletionTestCase.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/LightFixtureCompletionTestCase.java @@ -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() { diff --git a/java/testFramework/src/com/intellij/codeInsight/completion/CompletionTestCase.java b/java/testFramework/src/com/intellij/codeInsight/completion/CompletionTestCase.java index 8538d84dcd37..1591b3818546 100644 --- a/java/testFramework/src/com/intellij/codeInsight/completion/CompletionTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/completion/CompletionTestCase.java @@ -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 { diff --git a/java/testFramework/src/com/intellij/codeInsight/completion/LightCompletionTestCase.java b/java/testFramework/src/com/intellij/codeInsight/completion/LightCompletionTestCase.java index 109542da58c2..d7a89a49a4eb 100644 --- a/java/testFramework/src/com/intellij/codeInsight/completion/LightCompletionTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/completion/LightCompletionTestCase.java @@ -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(); diff --git a/platform/platform-impl/src/com/intellij/psi/statistics/impl/StatisticsManagerImpl.java b/platform/platform-impl/src/com/intellij/psi/statistics/impl/StatisticsManagerImpl.java index bcac9e54ca38..16b6967f9e4f 100644 --- a/platform/platform-impl/src/com/intellij/psi/statistics/impl/StatisticsManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/psi/statistics/impl/StatisticsManagerImpl.java @@ -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 myModifiedUnits = new HashSet(); + 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; + } + }); } + } \ No newline at end of file diff --git a/platform/platform-tests/testSrc/com/intellij/statistics/StatisticsManagerTest.java b/platform/platform-tests/testSrc/com/intellij/statistics/StatisticsManagerTest.java index 8e85860d83c8..4087b43e3cad 100644 --- a/platform/platform-tests/testSrc/com/intellij/statistics/StatisticsManagerTest.java +++ b/platform/platform-tests/testSrc/com/intellij/statistics/StatisticsManagerTest.java @@ -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)); } diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index e017c1790cc6..abe6dc8c0554 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -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) {