Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2015-07-22 12:25:46 +0000
committerEike Stepper2015-07-22 12:25:46 +0000
commit017c0e91d0dc68b7ead1b4c893f032d3d72e4e31 (patch)
tree43b63e279685bbafc4e131a243609487e5112c99 /plugins/org.eclipse.net4j.tests/src/org
parentc8eba7351ffd2d37e17db3ae3c2a7009d366b769 (diff)
downloadcdo-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.java4
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TCPConnectorTest.java26
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/JVMAcceptorDefImplTest.java6
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/JVMConnectorDefImplTest.java5
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/defs/Util.java6
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/util/tests/AbstractOMTest.java6
-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.java58
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();
+ }
+ }
+}

Back to the top