diff --git a/java/java-tests/testSrc/com/intellij/openapi/vfs/VirtualFilePointerTest.java b/java/java-tests/testSrc/com/intellij/openapi/vfs/VirtualFilePointerTest.java index c7fa8a49e814..6f826463c520 100644 --- a/java/java-tests/testSrc/com/intellij/openapi/vfs/VirtualFilePointerTest.java +++ b/java/java-tests/testSrc/com/intellij/openapi/vfs/VirtualFilePointerTest.java @@ -13,6 +13,7 @@ import com.intellij.openapi.vfs.pointers.VirtualFilePointerListener; import com.intellij.openapi.vfs.pointers.VirtualFilePointerManager; import com.intellij.testFramework.IdeaTestCase; import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.testFramework.Timings; import com.intellij.util.IncorrectOperationException; import com.intellij.util.Processor; import com.intellij.util.ui.UIUtil; @@ -435,9 +436,9 @@ public class VirtualFilePointerTest extends IdeaTestCase { }; VirtualFileManager.getInstance().addVirtualFileListener(listener, getTestRootDisposable()); - System.out.println("------------------"); - - for (int i=0;i<1000;i++) { + int N = Timings.adjustAccordingToMySpeed(1000); + System.out.println("N = " + N); + for (int i=0;i< N;i++) { assertNotNull(pointer.getFile()); FileUtil.delete(ioPtrBase); doVfsRefresh(); diff --git a/java/java-tests/testSrc/com/intellij/psi/PsiConcurrencyStressTest.java b/java/java-tests/testSrc/com/intellij/psi/PsiConcurrencyStressTest.java index 543030ce637c..4e936c54984a 100644 --- a/java/java-tests/testSrc/com/intellij/psi/PsiConcurrencyStressTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/PsiConcurrencyStressTest.java @@ -17,6 +17,7 @@ import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.testFramework.PsiTestCase; import com.intellij.testFramework.PsiTestUtil; +import com.intellij.testFramework.Timings; import com.intellij.util.IncorrectOperationException; import java.util.Random; @@ -39,8 +40,10 @@ public class PsiConcurrencyStressTest extends PsiTestCase { private volatile boolean writeActionInProgress; public void testStress() throws Exception { int numOfThreads = 10; - final int readIterations = 100; - final int writeIterations = 30; + int iterations = Timings.adjustAccordingToMySpeed(20); + System.out.println("iterations = " + iterations); + final int readIterations = iterations * 3; + final int writeIterations = iterations; synchronized (this) { PsiClass myClass = myJavaFacade.findClass("StressClass", GlobalSearchScope.allScope(myProject)); diff --git a/platform/testFramework/src/com/intellij/testFramework/Timings.java b/platform/testFramework/src/com/intellij/testFramework/Timings.java index 7190f47b2b7c..2b7877549083 100644 --- a/platform/testFramework/src/com/intellij/testFramework/Timings.java +++ b/platform/testFramework/src/com/intellij/testFramework/Timings.java @@ -15,6 +15,7 @@ */ package com.intellij.testFramework; +import com.intellij.concurrency.JobSchedulerImpl; import com.intellij.openapi.util.io.FileUtil; import java.io.*; @@ -92,4 +93,14 @@ public class Timings { * Measured on dual core p4 3HZ 1gig ram */ public static final long ETALON_TIMING = 438; + + /** + * @param value + * @return value calibrated according to this machine speed. For slower machine, lesser value will be returned + */ + public static int adjustAccordingToMySpeed(int value) { + //System.out.println("ETALON_TIMING = " + ETALON_TIMING); + //System.out.println("MACHINE_TIMING = " + MACHINE_TIMING); + return Math.max(1, (int)(1.0 * value * ETALON_TIMING / MACHINE_TIMING) / 8 * JobSchedulerImpl.CORES_COUNT); + } }