You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2015/02/20 17:42:07 UTC
activemq git commit: https://issues.apache.org/jira/browse/AMQ-5604
Repository: activemq
Updated Branches:
refs/heads/master 2c92c3413 -> a2b78fdeb
https://issues.apache.org/jira/browse/AMQ-5604
Clean up test start / stop to streamline things and make the tests run
at a bit more reasonable speed.
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/a2b78fde
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/a2b78fde
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/a2b78fde
Branch: refs/heads/master
Commit: a2b78fdeb0c55f9bf039557861cb0b4400411462
Parents: 2c92c34
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Feb 20 11:41:23 2015 -0500
Committer: Timothy Bish <ta...@gmail.com>
Committed: Fri Feb 20 11:42:03 2015 -0500
----------------------------------------------------------------------
.../transport/amqp/AmqpTestSupport.java | 82 ++------------------
.../transport/amqp/JMSClientTestSupport.java | 16 +++-
2 files changed, 17 insertions(+), 81 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq/blob/a2b78fde/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/AmqpTestSupport.java
----------------------------------------------------------------------
diff --git a/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/AmqpTestSupport.java b/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/AmqpTestSupport.java
index 7c6b052..fa608ab 100644
--- a/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/AmqpTestSupport.java
+++ b/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/AmqpTestSupport.java
@@ -20,12 +20,8 @@ import java.io.File;
import java.security.SecureRandom;
import java.util.Set;
import java.util.Vector;
-import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
import javax.jms.Connection;
import javax.jms.Destination;
@@ -59,6 +55,9 @@ public class AmqpTestSupport {
@Rule public TestName name = new TestName();
protected static final Logger LOG = LoggerFactory.getLogger(AmqpTestSupport.class);
+
+ protected ExecutorService testService = Executors.newSingleThreadExecutor();
+
protected BrokerService brokerService;
protected Vector<Throwable> exceptions = new Vector<Throwable>();
protected int numberOfMessages;
@@ -82,19 +81,8 @@ public class AmqpTestSupport {
public void setUp() throws Exception {
LOG.info("========== start " + getTestName() + " ==========");
exceptions.clear();
- if (killHungThreads("setUp")) {
- LOG.warn("HUNG THREADS in setUp");
- }
- ExecutorService executor = Executors.newSingleThreadExecutor();
- Future<Boolean> future = executor.submit(new SetUpTask());
- try {
- LOG.debug("SetUpTask started.");
- future.get(60, TimeUnit.SECONDS);
- } catch (TimeoutException e) {
- throw new Exception("startBroker timed out");
- }
- executor.shutdownNow();
+ startBroker();
this.numberOfMessages = 2000;
}
@@ -218,42 +206,8 @@ public class AmqpTestSupport {
@After
public void tearDown() throws Exception {
+ stopBroker();
LOG.info("========== tearDown " + getTestName() + " ==========");
- ExecutorService executor = Executors.newSingleThreadExecutor();
- Future<Boolean> future = executor.submit(new TearDownTask());
- try {
- LOG.debug("tearDown started.");
- future.get(60, TimeUnit.SECONDS);
- } catch (TimeoutException e) {
- throw new Exception("stopBroker timed out");
- } finally {
- executor.shutdownNow();
-
- if (killHungThreads("tearDown")) {
- LOG.warn("HUNG THREADS in tearDown");
- }
- }
- }
-
- private boolean killHungThreads(String stage) throws Exception{
- Thread.sleep(500);
- if (Thread.activeCount() == 1) {
- return false;
- }
- LOG.warn("Hung Thread(s) on {} entry threadCount {} ", stage, Thread.activeCount());
-
- Thread[] threads = new Thread[Thread.activeCount()];
- Thread.enumerate(threads);
- for (int i=0; i < threads.length; i++) {
- Thread t = threads[i];
- if (!t.getName().equals("main")) {
- LOG.warn("KillHungThreads: Interrupting thread {}", t.getName());
- t.interrupt();
- }
- }
-
- LOG.warn("Hung Thread on {} exit threadCount {} ", stage, Thread.activeCount());
- return true;
}
public void sendMessages(Connection connection, Destination destination, int count) throws Exception {
@@ -310,30 +264,4 @@ public class AmqpTestSupport {
.newProxyInstance(queueViewMBeanName, QueueViewMBean.class, true);
return proxy;
}
-
- public class SetUpTask implements Callable<Boolean> {
- @SuppressWarnings("unused")
- private String testName;
-
- @Override
- public Boolean call() throws Exception {
- LOG.debug("in SetUpTask.call, calling startBroker");
- startBroker();
-
- return Boolean.TRUE;
- }
- }
-
- public class TearDownTask implements Callable<Boolean> {
- @SuppressWarnings("unused")
- private String testName;
-
- @Override
- public Boolean call() throws Exception {
- LOG.debug("in TearDownTask.call(), calling stopBroker");
- stopBroker();
-
- return Boolean.TRUE;
- }
- }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/activemq/blob/a2b78fde/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTestSupport.java
----------------------------------------------------------------------
diff --git a/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTestSupport.java b/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTestSupport.java
index f53eee3..c7d81a5 100644
--- a/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTestSupport.java
+++ b/activemq-amqp/src/test/java/org/apache/activemq/transport/amqp/JMSClientTestSupport.java
@@ -17,7 +17,6 @@
package org.apache.activemq.transport.amqp;
import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
@@ -35,18 +34,26 @@ public class JMSClientTestSupport extends AmqpTestSupport {
protected Connection connection;
+ private Thread connectionCloseThread;
+
@Override
@After
public void tearDown() throws Exception {
- ExecutorService executor = Executors.newSingleThreadExecutor();
- Future<Boolean> future = executor.submit(new CloseConnectionTask());
+ Future<Boolean> future = testService.submit(new CloseConnectionTask());
try {
LOG.debug("tearDown started.");
future.get(60, TimeUnit.SECONDS);
} catch (TimeoutException e) {
+ if (connectionCloseThread != null) {
+ connectionCloseThread.interrupt();;
+ }
+
+ testService.shutdownNow();
+ testService = Executors.newSingleThreadExecutor();
throw new Exception("CloseConnection timed out");
} finally {
- executor.shutdownNow();
+ connectionCloseThread = null;
+ connection = null;
super.tearDown();
}
}
@@ -55,6 +62,7 @@ public class JMSClientTestSupport extends AmqpTestSupport {
@Override
public Boolean call() throws Exception {
if (connection != null) {
+ connectionCloseThread = Thread.currentThread();
LOG.debug("in CloseConnectionTask.call(), calling connection.close()");
connection.close();
}