From b326b6bd2bd765f0ef3af0eeac3fbab659b4a693 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 21 Feb 2017 19:12:17 +0300 Subject: [PATCH] extracted joinAll() --- .../com/intellij/psi/PsiConcurrencyStressTest.java | 5 ++--- .../application/impl/ApplicationImplTest.java | 13 ++++--------- .../progress/impl/ProgressIndicatorTest.java | 5 ++--- .../openapi/vfs/impl/VirtualFilePointerTest.java | 10 ++-------- .../com/intellij/util/messages/MessageBusTest.java | 5 ++--- .../src/com/intellij/util/ConcurrencyUtil.java | 14 ++++++++++++++ .../util/containers/ConcurrentBitSetTest.java | 9 +++------ .../idea/svn/SvnCachingRepositoryPoolTest.java | 5 ++--- .../util/xml/DomConcurrencyStressTest.java | 5 ++--- 9 files changed, 33 insertions(+), 38 deletions(-) diff --git a/java/java-tests/testSrc/com/intellij/psi/PsiConcurrencyStressTest.java b/java/java-tests/testSrc/com/intellij/psi/PsiConcurrencyStressTest.java index e4174186706f..19b1510a7dda 100644 --- a/java/java-tests/testSrc/com/intellij/psi/PsiConcurrencyStressTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/PsiConcurrencyStressTest.java @@ -37,6 +37,7 @@ import com.intellij.testFramework.IdeaTestUtil; import com.intellij.testFramework.PsiTestUtil; import com.intellij.testFramework.SkipSlowTestLocally; import com.intellij.testFramework.Timings; +import com.intellij.util.ConcurrencyUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; @@ -111,9 +112,7 @@ public class PsiConcurrencyStressTest extends DaemonAnalyzerTestCase { } assertTrue("Timed out", reads.await(5, TimeUnit.MINUTES)); - for (Thread thread : threads) { - thread.join(); - } + ConcurrencyUtil.joinAll(threads); } private static void mark(final String s) { diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/ApplicationImplTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/ApplicationImplTest.java index 704ca0b40c4c..1a93564a1ea9 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/ApplicationImplTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/ApplicationImplTest.java @@ -33,6 +33,7 @@ import com.intellij.testFramework.LightPlatformTestCase; import com.intellij.testFramework.LoggedErrorProcessor; import com.intellij.testFramework.PlatformTestUtil; import com.intellij.util.ArrayUtil; +import com.intellij.util.ConcurrencyUtil; import com.intellij.util.ExceptionUtil; import com.intellij.util.TimeoutUtil; import com.intellij.util.concurrency.Semaphore; @@ -156,9 +157,7 @@ public class ApplicationImplTest extends LightPlatformTestCase { } //System.out.println("write end"); } - for (Thread thread : threads) { - thread.join(); - } + ConcurrencyUtil.joinAll(threads); threads.clear(); }).cpuBound().assertTiming(); } @@ -405,9 +404,7 @@ public class ApplicationImplTest extends LightPlatformTestCase { LOG.append("\nfinished write action"); }); main.join(); - for (Thread thread : readThreads) { - thread.join(); - } + ConcurrencyUtil.joinAll(readThreads); if (exception != null) { System.err.println(LOG); @@ -528,9 +525,7 @@ public class ApplicationImplTest extends LightPlatformTestCase { thread.start(); threads.add(thread); } - for (Thread thread : threads) { - thread.join(); - } + ConcurrencyUtil.joinAll(threads); }).cpuBound().usesAllCPUCores().assertTiming(); } diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/progress/impl/ProgressIndicatorTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/progress/impl/ProgressIndicatorTest.java index 82089f91b13f..47b26432ff63 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/progress/impl/ProgressIndicatorTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/progress/impl/ProgressIndicatorTest.java @@ -34,6 +34,7 @@ import com.intellij.testFramework.LightPlatformTestCase; import com.intellij.testFramework.PlatformTestUtil; import com.intellij.util.Alarm; import com.intellij.util.ArrayUtil; +import com.intellij.util.ConcurrencyUtil; import com.intellij.util.TimeoutUtil; import com.intellij.util.concurrency.Semaphore; import com.intellij.util.containers.ContainerUtil; @@ -186,9 +187,7 @@ public class ProgressIndicatorTest extends LightPlatformTestCase { } }, indicator), "indicator test")); threads.forEach(Thread::start); - for (Thread thread : threads) { - thread.join(); - } + ConcurrencyUtil.joinAll(threads); } if (exception != null) throw exception; } diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/impl/VirtualFilePointerTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/impl/VirtualFilePointerTest.java index 96001738c400..c8d6ead61930 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/impl/VirtualFilePointerTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/impl/VirtualFilePointerTest.java @@ -41,6 +41,7 @@ import com.intellij.openapi.vfs.pointers.VirtualFilePointerListener; import com.intellij.openapi.vfs.pointers.VirtualFilePointerManager; import com.intellij.testFramework.*; import com.intellij.util.ArrayUtil; +import com.intellij.util.ConcurrencyUtil; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.UIUtil; @@ -927,14 +928,7 @@ public class VirtualFilePointerTest extends PlatformTestCase { VirtualFilePointer bc = VirtualFilePointerManager.getInstance().create(fileToCreatePointer.getUrl() + "/b/c", disposable, listener); run = false; - threads.forEach(thread -> { - try { - thread.join(); - } - catch (InterruptedException e) { - throw new RuntimeException(e); - } - }); + ConcurrencyUtil.joinAll(threads); if (exception !=null) throw exception; Disposer.dispose(disposable); } diff --git a/platform/platform-tests/testSrc/com/intellij/util/messages/MessageBusTest.java b/platform/platform-tests/testSrc/com/intellij/util/messages/MessageBusTest.java index 7750a16fdec2..d5b00ce408a3 100644 --- a/platform/platform-tests/testSrc/com/intellij/util/messages/MessageBusTest.java +++ b/platform/platform-tests/testSrc/com/intellij/util/messages/MessageBusTest.java @@ -22,6 +22,7 @@ package com.intellij.util.messages; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.util.text.StringUtil; import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.util.ConcurrencyUtil; import com.intellij.util.messages.impl.MessageBusImpl; import junit.framework.TestCase; @@ -301,9 +302,7 @@ public class MessageBusTest extends TestCase { if (e != null) { throw e; } - for (Thread thread : threads) { - thread.join(); - } + ConcurrencyUtil.joinAll(threads); } diff --git a/platform/util/src/com/intellij/util/ConcurrencyUtil.java b/platform/util/src/com/intellij/util/ConcurrencyUtil.java index 37b44edf3914..dcb3d9aad694 100644 --- a/platform/util/src/com/intellij/util/ConcurrencyUtil.java +++ b/platform/util/src/com/intellij/util/ConcurrencyUtil.java @@ -172,4 +172,18 @@ public class ConcurrencyUtil { } } } + + public static void joinAll(@NotNull Collection threads) throws RuntimeException { + for (Thread thread : threads) { + try { + thread.join(); + } + catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + } + public static void joinAll(@NotNull Thread... threads) throws RuntimeException { + joinAll(Arrays.asList(threads)); + } } diff --git a/platform/util/testSrc/com/intellij/util/containers/ConcurrentBitSetTest.java b/platform/util/testSrc/com/intellij/util/containers/ConcurrentBitSetTest.java index de84af7eb145..df595298c22b 100644 --- a/platform/util/testSrc/com/intellij/util/containers/ConcurrentBitSetTest.java +++ b/platform/util/testSrc/com/intellij/util/containers/ConcurrentBitSetTest.java @@ -15,6 +15,7 @@ */ package com.intellij.util.containers; +import com.intellij.util.ConcurrencyUtil; import junit.framework.TestCase; public class ConcurrentBitSetTest extends TestCase { @@ -86,9 +87,7 @@ public class ConcurrentBitSetTest extends TestCase { threads[i] = thread; thread.start(); } - for (Thread thread : threads) { - thread.join(); - } + ConcurrencyUtil.joinAll(threads); assertEquals(-1, bitSet.nextSetBit(0)); } @@ -109,9 +108,7 @@ public class ConcurrentBitSetTest extends TestCase { threads[i] = thread; thread.start(); } - for (Thread thread : threads) { - thread.join(); - } + ConcurrencyUtil.joinAll(threads); assertEquals(-1, bitSet.nextSetBit(0)); } diff --git a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnCachingRepositoryPoolTest.java b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnCachingRepositoryPoolTest.java index f97d3baf0348..e4ae9146d47f 100644 --- a/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnCachingRepositoryPoolTest.java +++ b/plugins/svn4idea/testSource/org/jetbrains/idea/svn/SvnCachingRepositoryPoolTest.java @@ -19,6 +19,7 @@ import com.intellij.openapi.progress.EmptyProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.progress.impl.ProgressManagerImpl; import com.intellij.testFramework.vcs.FileBasedTest; +import com.intellij.util.ConcurrencyUtil; import com.intellij.util.ThrowableConvertor; import com.intellij.util.TimeoutUtil; import com.intellij.util.concurrency.Semaphore; @@ -223,9 +224,7 @@ public class SvnCachingRepositoryPoolTest extends FileBasedTest { Assert.assertEquals(0, group.getInactiveSize()); } - for (Thread thread : threads) { - thread.join(); - } + ConcurrencyUtil.joinAll(threads); } private boolean timeout(long start) { diff --git a/xml/dom-tests/tests/com/intellij/util/xml/DomConcurrencyStressTest.java b/xml/dom-tests/tests/com/intellij/util/xml/DomConcurrencyStressTest.java index 4f2a1bdcd755..a30edb6faa58 100644 --- a/xml/dom-tests/tests/com/intellij/util/xml/DomConcurrencyStressTest.java +++ b/xml/dom-tests/tests/com/intellij/util/xml/DomConcurrencyStressTest.java @@ -27,6 +27,7 @@ import com.intellij.psi.xml.XmlTag; import com.intellij.semantic.SemService; import com.intellij.testFramework.PlatformTestUtil; import com.intellij.testFramework.Timings; +import com.intellij.util.ConcurrencyUtil; import com.intellij.util.Function; import com.intellij.util.TimeoutUtil; import com.intellij.util.containers.ContainerUtil; @@ -141,9 +142,7 @@ public class DomConcurrencyStressTest extends DomTestCase { if (!exc.isNull()) { throw exc.get(); } - for (Thread thread : threads) { - thread.join(); - } + ConcurrencyUtil.joinAll(threads); } }