diff options
author | Eike Stepper | 2015-07-22 12:25:46 +0000 |
---|---|---|
committer | Eike Stepper | 2015-07-22 12:25:46 +0000 |
commit | 017c0e91d0dc68b7ead1b4c893f032d3d72e4e31 (patch) | |
tree | 43b63e279685bbafc4e131a243609487e5112c99 /plugins/org.eclipse.net4j.tests/src/org | |
parent | c8eba7351ffd2d37e17db3ae3c2a7009d366b769 (diff) | |
download | cdo-017c0e91d0dc68b7ead1b4c893f032d3d72e4e31.tar.gz cdo-017c0e91d0dc68b7ead1b4c893f032d3d72e4e31.tar.xz cdo-017c0e91d0dc68b7ead1b4c893f032d3d72e4e31.zip |
[473277] Enhance ThreadPool and use it as much as possible
https://bugs.eclipse.org/bugs/show_bug.cgi?id=473277
Diffstat (limited to 'plugins/org.eclipse.net4j.tests/src/org')
-rw-r--r-- | plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/AllTests.java | 4 | ||||
-rw-r--r-- | plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TCPConnectorTest.java | 26 | ||||
-rw-r--r-- | plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/JVMAcceptorDefImplTest.java | 6 | ||||
-rw-r--r-- | plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/JVMConnectorDefImplTest.java | 5 | ||||
-rw-r--r-- | plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/Util.java | 6 | ||||
-rw-r--r-- | plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/AbstractOMTest.java | 6 | ||||
-rw-r--r-- | plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/ExecutorWorkSerializerTest.java (renamed from plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/QueueWorkerWorkSerializerTest.java) | 18 | ||||
-rw-r--r-- | plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/ThreadPoolTest.java | 58 |
8 files changed, 89 insertions, 40 deletions
diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/AllTests.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/AllTests.java index 1f9c1a12ee..f39d73c3c3 100644 --- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/AllTests.java +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/AllTests.java @@ -13,10 +13,10 @@ package org.eclipse.net4j.tests; import org.eclipse.net4j.tests.bugzilla.Bugzilla_241463_Test; import org.eclipse.net4j.tests.bugzilla.Bugzilla_259086_Test; import org.eclipse.net4j.tests.bugzilla.Bugzilla_262875_Test; +import org.eclipse.net4j.util.tests.ExecutorWorkSerializerTest; import org.eclipse.net4j.util.tests.ExpectedIOTest; import org.eclipse.net4j.util.tests.ExtendedIOTest; import org.eclipse.net4j.util.tests.MultiMapTest; -import org.eclipse.net4j.util.tests.QueueWorkerWorkSerializerTest; import org.eclipse.net4j.util.tests.ReferenceValueMapTest; import org.eclipse.net4j.util.tests.SecurityTest; import org.eclipse.net4j.util.tests.SortedFileMapTest; @@ -52,7 +52,7 @@ public class AllTests suite.addTestSuite(SignalMonitorTest.TCP.class); suite.addTestSuite(ExceptionTest.TCP.class); suite.addTestSuite(SecurityTest.class); - suite.addTestSuite(QueueWorkerWorkSerializerTest.class); + suite.addTestSuite(ExecutorWorkSerializerTest.class); suite.addTestSuite(ExpectedIOTest.class); // Bugzillas diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TCPConnectorTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TCPConnectorTest.java index ccc0ff7cd4..d3c555cc28 100644 --- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TCPConnectorTest.java +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TCPConnectorTest.java @@ -31,6 +31,7 @@ import org.eclipse.net4j.tcp.TCPUtil; import org.eclipse.net4j.tests.bundle.OM; import org.eclipse.net4j.util.collection.RoundRobinBlockingQueue; import org.eclipse.net4j.util.concurrent.ConcurrencyUtil; +import org.eclipse.net4j.util.concurrent.ThreadPool; import org.eclipse.net4j.util.io.IOUtil; import org.eclipse.net4j.util.lifecycle.LifecycleUtil; import org.eclipse.net4j.util.security.ChallengeNegotiator; @@ -47,7 +48,6 @@ import org.eclipse.spi.net4j.InternalChannel; import java.nio.channels.ServerSocketChannel; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; /** * @author Eike Stepper @@ -221,9 +221,7 @@ public class TCPConnectorTest extends AbstractTransportTest public void testDeferredActivation() throws Exception { final long DELAY = 500L; - threadPool = Executors.newCachedThreadPool(); - LifecycleUtil.activate(threadPool); - + threadPool = ThreadPool.create(); bufferPool = Net4jUtil.createBufferPool(); LifecycleUtil.activate(bufferPool); @@ -272,9 +270,7 @@ public class TCPConnectorTest extends AbstractTransportTest public void testNegotiationSuccess() throws Exception { - threadPool = Executors.newCachedThreadPool(); - LifecycleUtil.activate(threadPool); - + threadPool = ThreadPool.create(); bufferPool = Net4jUtil.createBufferPool(); LifecycleUtil.activate(bufferPool); @@ -351,9 +347,7 @@ public class TCPConnectorTest extends AbstractTransportTest public void testInvalidUser() throws Exception { - threadPool = Executors.newCachedThreadPool(); - LifecycleUtil.activate(threadPool); - + threadPool = ThreadPool.create(); bufferPool = Net4jUtil.createBufferPool(); LifecycleUtil.activate(bufferPool); @@ -412,9 +406,7 @@ public class TCPConnectorTest extends AbstractTransportTest public void testInvalidPassword() throws Exception { - threadPool = Executors.newCachedThreadPool(); - LifecycleUtil.activate(threadPool); - + threadPool = ThreadPool.create(); bufferPool = Net4jUtil.createBufferPool(); LifecycleUtil.activate(bufferPool); @@ -473,9 +465,7 @@ public class TCPConnectorTest extends AbstractTransportTest public void testNoNegotiator() throws Exception { - threadPool = Executors.newCachedThreadPool(); - LifecycleUtil.activate(threadPool); - + threadPool = ThreadPool.create(); bufferPool = Net4jUtil.createBufferPool(); LifecycleUtil.activate(bufferPool); @@ -513,9 +503,7 @@ public class TCPConnectorTest extends AbstractTransportTest public void testNegotiatorTooLate() throws Exception { - threadPool = Executors.newCachedThreadPool(); - LifecycleUtil.activate(threadPool); - + threadPool = ThreadPool.create(); bufferPool = Net4jUtil.createBufferPool(); LifecycleUtil.activate(bufferPool); diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/JVMAcceptorDefImplTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/JVMAcceptorDefImplTest.java index 5fce1508d8..1abe83ff23 100644 --- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/JVMAcceptorDefImplTest.java +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/JVMAcceptorDefImplTest.java @@ -18,12 +18,12 @@ import org.eclipse.net4j.defs.Net4jDefsFactory; import org.eclipse.net4j.internal.jvm.JVMClientConnector; import org.eclipse.net4j.jvm.IJVMAcceptor; import org.eclipse.net4j.jvm.IJVMConnector; +import org.eclipse.net4j.util.concurrent.ThreadPool; import org.eclipse.net4j.util.defs.Net4jUtilDefsFactory; import org.eclipse.net4j.util.lifecycle.LifecycleUtil; import org.eclipse.net4j.util.tests.AbstractOMTest; import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; /** * @author Andre Dietisheim @@ -88,8 +88,6 @@ public class JVMAcceptorDefImplTest extends AbstractOMTest private ExecutorService createThreadPool() { - ExecutorService threadPool = Executors.newCachedThreadPool(); - LifecycleUtil.activate(threadPool); - return threadPool; + return ThreadPool.create(); } } diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/JVMConnectorDefImplTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/JVMConnectorDefImplTest.java index 0efd62a212..97d079626b 100644 --- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/JVMConnectorDefImplTest.java +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/JVMConnectorDefImplTest.java @@ -18,12 +18,12 @@ import org.eclipse.net4j.defs.Net4jDefsFactory; import org.eclipse.net4j.internal.jvm.JVMAcceptor; import org.eclipse.net4j.jvm.IJVMAcceptor; import org.eclipse.net4j.jvm.IJVMConnector; +import org.eclipse.net4j.util.concurrent.ThreadPool; import org.eclipse.net4j.util.defs.Net4jUtilDefsFactory; import org.eclipse.net4j.util.lifecycle.LifecycleUtil; import org.eclipse.net4j.util.tests.AbstractOMTest; import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; /** * @author Andre Dietisheim @@ -63,8 +63,7 @@ public class JVMConnectorDefImplTest extends AbstractOMTest private IJVMAcceptor createJVMAcceptor() { - ExecutorService threadPool = Executors.newCachedThreadPool(); - LifecycleUtil.activate(threadPool); + ExecutorService threadPool = ThreadPool.create(); IBufferPool bufferPool = Net4jUtil.createBufferPool(); LifecycleUtil.activate(bufferPool); diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/Util.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/Util.java index 5337a886d0..2c04cdfe9c 100644 --- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/Util.java +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/Util.java @@ -16,6 +16,7 @@ import org.eclipse.net4j.internal.tcp.TCPAcceptor; import org.eclipse.net4j.internal.tcp.TCPClientConnector; import org.eclipse.net4j.internal.tcp.TCPConnector; import org.eclipse.net4j.internal.tcp.TCPSelector; +import org.eclipse.net4j.util.concurrent.ThreadPool; import org.eclipse.net4j.util.lifecycle.LifecycleUtil; import org.eclipse.net4j.util.security.ChallengeNegotiator; import org.eclipse.net4j.util.security.INegotiator; @@ -27,7 +28,6 @@ import org.eclipse.net4j.util.security.ResponseNegotiator; import org.eclipse.net4j.util.security.UserManager; import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; /** * @author Eike Stepper @@ -131,8 +131,6 @@ class Util public static ExecutorService createThreadPool() { - ExecutorService threadPool = Executors.newCachedThreadPool(); - LifecycleUtil.activate(threadPool); - return threadPool; + return ThreadPool.create(); } } diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/AbstractOMTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/AbstractOMTest.java index 78f60077cf..950d8db519 100644 --- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/AbstractOMTest.java +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/AbstractOMTest.java @@ -58,8 +58,14 @@ import junit.framework.TestResult; */ public abstract class AbstractOMTest extends TestCase { + /** + * Timeout duration in millseconds if timeout <b>is not</b> expected. + */ public static final long DEFAULT_TIMEOUT = 15 * 1000; + /** + * Timeout duration in millseconds if timeout <b>is</b> expected. + */ public static final long DEFAULT_TIMEOUT_EXPECTED = 3 * 1000; public static boolean EXTERNAL_LOG; diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/QueueWorkerWorkSerializerTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/ExecutorWorkSerializerTest.java index 0ee4714626..4aea456412 100644 --- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/QueueWorkerWorkSerializerTest.java +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/ExecutorWorkSerializerTest.java @@ -11,7 +11,7 @@ */ package org.eclipse.net4j.util.tests; -import org.eclipse.net4j.util.concurrent.QueueWorkerWorkSerializer; +import org.eclipse.net4j.util.concurrent.ExecutorWorkSerializer; import org.eclipse.net4j.util.io.IOUtil; import java.util.Random; @@ -22,11 +22,11 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; /** - * A test for {@link QueueWorkerWorkSerializer}. + * A test for {@link ExecutorWorkSerializer}. * * @author Andre Dietisheim */ -public class QueueWorkerWorkSerializerTest extends AbstractOMTest +public class ExecutorWorkSerializerTest extends AbstractOMTest { /** timeout to wait for execution of all work units. */ private static final int WORK_COMPLETION_TIMEOUT = 10000; @@ -47,22 +47,24 @@ public class QueueWorkerWorkSerializerTest extends AbstractOMTest private ExecutorService threadPool; /** The queue worker to submit the work units to. */ - private QueueWorkerWorkSerializer queueWorker; + private ExecutorWorkSerializer queueWorker; @Override public void setUp() { - threadPool = Executors.newFixedThreadPool(NUM_WORKPRODUCER_THREADS); - workConsumedLatch = new CountDownLatch(NUM_WORK); - queueWorker = new QueueWorkerWorkSerializer(); workProduced = new AtomicInteger(0); + workConsumedLatch = new CountDownLatch(NUM_WORK); + + threadPool = Executors.newFixedThreadPool(NUM_WORKPRODUCER_THREADS); + queueWorker = new ExecutorWorkSerializer(threadPool); + queueWorker.activate(); } @Override public void tearDown() { - threadPool.shutdown(); queueWorker.dispose(); + threadPool.shutdown(); } /** diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/ThreadPoolTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/ThreadPoolTest.java new file mode 100644 index 0000000000..8ce34d151e --- /dev/null +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/ThreadPoolTest.java @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2015 Eike Stepper (Berlin, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.net4j.util.tests; + +import org.eclipse.net4j.util.concurrent.ConcurrencyUtil; +import org.eclipse.net4j.util.concurrent.ThreadPool; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +/** + * A test for {@link ThreadPool}. + * + * @author Eike Stepper + */ +public class ThreadPoolTest extends AbstractOMTest +{ + public void testThreadPool() throws Exception + { + final ThreadPool pool = ThreadPool.create("test", 100, 200, 60); + + try + { + final int tasks = pool.getMaximumPoolSize() + 100; + final CountDownLatch latch = new CountDownLatch(tasks); + + for (int i = 0; i < tasks; i++) + { + final int n = i; + msg("scheduling " + n); + pool.submit(new Runnable() + { + public void run() + { + msg("started " + n + " (wc=" + pool.getPoolSize() + ")"); + ConcurrencyUtil.sleep(1000); + latch.countDown(); + } + }); + } + + latch.await(DEFAULT_TIMEOUT, TimeUnit.MILLISECONDS); + msg("FINISHED"); + } + finally + { + pool.shutdownNow(); + } + } +} |