You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2009/12/09 22:09:23 UTC
svn commit: r888974 - in /activemq/trunk/activemq-core/src:
main/java/org/apache/activemq/broker/
main/java/org/apache/activemq/broker/region/
test/java/org/apache/activemq/broker/ft/
test/java/org/apache/activemq/network/ test/java/org/apache/activemq...
Author: gtully
Date: Wed Dec 9 21:09:21 2009
New Revision: 888974
URL: http://svn.apache.org/viewvc?rev=888974&view=rev
Log:
resolve https://issues.apache.org/activemq/browse/AMQ-2527 - add timeout to waitForSlave and make the following more reseliant to slow machines, VMTransportWaitForTest,MasterSlaveSlaveDieTest,SimpleNetworkTest,NetworkBrokerDetachTest,DuplexNetworkMBeanTest,MultiBrokersMultiClientsTest,AMQ2102Test - related to changes for https://issues.apache.org/activemq/browse/AMQ-1112
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/ft/MasterSlaveSlaveDieTest.java
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/DuplexNetworkMBeanTest.java
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/NetworkBrokerDetachTest.java
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/SimpleNetworkTest.java
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/vm/VMTransportWaitForTest.java
activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsTest.java
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java?rev=888974&r1=888973&r2=888974&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java Wed Dec 9 21:09:21 2009
@@ -116,6 +116,7 @@
private boolean shutdownOnMasterFailure;
private boolean shutdownOnSlaveFailure;
private boolean waitForSlave;
+ private long waitForSlaveTimeout = 600000L;
private boolean passiveSlave;
private String brokerName = DEFAULT_BROKER_NAME;
private File dataDirectoryFile;
@@ -1908,7 +1909,9 @@
protected void waitForSlave() {
try {
- slaveStartSignal.await();
+ if (!slaveStartSignal.await(waitForSlaveTimeout, TimeUnit.MILLISECONDS)) {
+ throw new IllegalStateException("Gave up waiting for slave to start after " + waitForSlaveTimeout + " milliseconds.");
+ }
} catch (InterruptedException e) {
LOG.error("Exception waiting for slave:" + e);
}
@@ -2105,7 +2108,15 @@
public void setWaitForSlave(boolean waitForSlave) {
this.waitForSlave = waitForSlave;
}
-
+
+ public long getWaitForSlaveTimeout() {
+ return this.waitForSlaveTimeout;
+ }
+
+ public void setWaitForSlaveTimeout(long waitForSlaveTimeout) {
+ this.waitForSlaveTimeout = waitForSlaveTimeout;
+ }
+
public CountDownLatch getSlaveStartSignal() {
return slaveStartSignal;
}
@@ -2132,4 +2143,4 @@
}
-}
\ No newline at end of file
+}
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java?rev=888974&r1=888973&r2=888974&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/region/RegionBroker.java Wed Dec 9 21:09:21 2009
@@ -700,7 +700,6 @@
try{
if(node!=null){
Message message=node.getMessage();
- stampAsExpired(message);
if(message!=null && node.getRegionDestination()!=null){
DeadLetterStrategy deadLetterStrategy=node
.getRegionDestination().getDeadLetterStrategy();
@@ -708,6 +707,7 @@
if(deadLetterStrategy.isSendToDeadLetterQueue(message)){
// message may be inflight to other subscriptions so do not modify
message = message.copy();
+ stampAsExpired(message);
message.setExpiration(0);
if(!message.isPersistent()){
message.setPersistent(true);
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/ft/MasterSlaveSlaveDieTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/ft/MasterSlaveSlaveDieTest.java?rev=888974&r1=888973&r2=888974&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/ft/MasterSlaveSlaveDieTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/ft/MasterSlaveSlaveDieTest.java Wed Dec 9 21:09:21 2009
@@ -53,7 +53,10 @@
final BrokerService master = new BrokerService();
master.setBrokerName("master");
master.setPersistent(false);
- master.addConnector("tcp://localhost:0");
+ // The wireformat negotiation timeout (defaults to same as
+ // MaxInactivityDurationInitalDelay) needs to be a bit longer
+ // on slow running machines - set it to 90 seconds.
+ master.addConnector("tcp://localhost:0?wireFormat.maxInactivityDurationInitalDelay=90000");
master.setWaitForSlave(true);
master.setPlugins(new BrokerPlugin[] { new Plugin() });
@@ -72,6 +75,7 @@
try {
master.start();
} catch (Exception e) {
+ LOG.warn("Exception starting master: " + e);
e.printStackTrace();
}
}
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/DuplexNetworkMBeanTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/DuplexNetworkMBeanTest.java?rev=888974&r1=888973&r2=888974&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/DuplexNetworkMBeanTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/DuplexNetworkMBeanTest.java Wed Dec 9 21:09:21 2009
@@ -16,6 +16,9 @@
*/
package org.apache.activemq.network;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assume.assumeNotNull;
+
import java.net.MalformedURLException;
import java.util.Set;
@@ -26,13 +29,13 @@
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
-import junit.framework.TestCase;
-
import org.apache.activemq.broker.BrokerService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-public class DuplexNetworkMBeanTest extends TestCase {
+import org.junit.Test;
+
+public class DuplexNetworkMBeanTest {
protected static final Log LOG = LogFactory.getLog(DuplexNetworkMBeanTest.class);
protected final int numRestarts = 3;
@@ -54,6 +57,7 @@
return broker;
}
+ @Test
public void testMbeanPresenceOnNetworkBrokerRestart() throws Exception {
BrokerService broker = createBroker();
broker.start();
@@ -78,6 +82,7 @@
broker.waitUntilStopped();
}
+ @Test
public void testMbeanPresenceOnBrokerRestart() throws Exception {
BrokerService networkedBroker = createNetworkedBroker();
@@ -129,6 +134,14 @@
}
}
} while ((mbeans == null || mbeans.isEmpty()) && expiryTime > System.currentTimeMillis());
+
+ // If port 1099 is in use when the Broker starts, starting the jmx
+ // connector will fail. So, if we have no mbsc to query, skip the
+ // test.
+ if (timeout > 0) {
+ assumeNotNull(mbeans);
+ }
+
return count;
}
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/NetworkBrokerDetachTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/NetworkBrokerDetachTest.java?rev=888974&r1=888973&r2=888974&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/NetworkBrokerDetachTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/NetworkBrokerDetachTest.java Wed Dec 9 21:09:21 2009
@@ -16,11 +16,13 @@
*/
package org.apache.activemq.network;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeNotNull;
+
import java.net.MalformedURLException;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
-import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanServerConnection;
@@ -29,8 +31,6 @@
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
-import junit.framework.TestCase;
-
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.ActiveMQPrefetchPolicy;
import org.apache.activemq.broker.BrokerService;
@@ -38,8 +38,9 @@
import org.apache.activemq.util.Wait;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.junit.Test;
-public class NetworkBrokerDetachTest extends TestCase {
+public class NetworkBrokerDetachTest {
private final static String BROKER_NAME = "broker";
private final static String REM_BROKER_NAME = "networkedBroker";
@@ -65,6 +66,7 @@
return broker;
}
+ @Test
public void testNetworkedBrokerDetach() throws Exception {
BrokerService broker = createBroker();
broker.start();
@@ -162,6 +164,10 @@
} catch (Exception ignored) {
LOG.warn("getMBeanServer ex: " + ignored);
}
+ // If port 1099 is in use when the Broker starts, starting the jmx
+ // connector will fail. So, if we have no mbsc to query, skip the
+ // test.
+ assumeNotNull(mbsc);
return mbsc;
}
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/SimpleNetworkTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/SimpleNetworkTest.java?rev=888974&r1=888973&r2=888974&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/SimpleNetworkTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/network/SimpleNetworkTest.java Wed Dec 9 21:09:21 2009
@@ -81,7 +81,7 @@
TopicRequestor requestor = new TopicRequestor((TopicSession)localSession, included);
// allow for consumer infos to perculate arround
- Thread.sleep(2000);
+ Thread.sleep(5000);
for (int i = 0; i < MESSAGE_COUNT; i++) {
TextMessage msg = localSession.createTextMessage("test msg: " + i);
TextMessage result = (TextMessage)requestor.request(msg);
@@ -110,16 +110,16 @@
MessageConsumer consumer2 = remoteSession.createConsumer(included);
MessageProducer producer = localSession.createProducer(included);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
- Thread.sleep(1000);
+ Thread.sleep(2000);
for (int i = 0; i < MESSAGE_COUNT; i++) {
Message test = localSession.createTextMessage("test-" + i);
producer.send(test);
- assertNotNull(consumer1.receive(500));
- assertNotNull(consumer2.receive(500));
+ assertNotNull(consumer1.receive(1000));
+ assertNotNull(consumer2.receive(1000));
}
// ensure no more messages received
- assertNull(consumer1.receive(500));
- assertNull(consumer2.receive(500));
+ assertNull(consumer1.receive(1000));
+ assertNull(consumer2.receive(1000));
}
public void testDurableStoreAndForward() throws Exception {
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/vm/VMTransportWaitForTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/vm/VMTransportWaitForTest.java?rev=888974&r1=888973&r2=888974&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/vm/VMTransportWaitForTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/transport/vm/VMTransportWaitForTest.java Wed Dec 9 21:09:21 2009
@@ -57,7 +57,7 @@
} catch (Exception e) {
e.printStackTrace();
- fail("unexpected exception:" + e);
+ fail("unexpected exception: " + e);
}
}
};
@@ -70,7 +70,7 @@
broker.setPersistent(false);
broker.addConnector("tcp://localhost:61616");
broker.start();
- assertTrue("has got connection", gotConnection.await(200, TimeUnit.MILLISECONDS));
+ assertTrue("has got connection", gotConnection.await(400, TimeUnit.MILLISECONDS));
broker.stop();
}
}
Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsTest.java?rev=888974&r1=888973&r2=888974&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/usecases/MultiBrokersMultiClientsTest.java Wed Dec 9 21:09:21 2009
@@ -66,7 +66,7 @@
// wait for consumers to get propagated
for (int i = 1; i <= BROKER_COUNT; i++) {
// all consumers on the remote brokers look like 1 consumer to the local broker.
- assertConsumersConnect("Broker" + i, dest, (BROKER_COUNT-1)+CONSUMER_COUNT, 30000);
+ assertConsumersConnect("Broker" + i, dest, (BROKER_COUNT-1)+CONSUMER_COUNT, 65000);
}
// Send messages
@@ -117,7 +117,7 @@
// wait for consumers to get propagated
for (int i = 1; i <= BROKER_COUNT; i++) {
// all consumers on the remote brokers look like 1 consumer to the local broker.
- assertConsumersConnect("Broker" + i, dest, (BROKER_COUNT-1)+CONSUMER_COUNT, 30000);
+ assertConsumersConnect("Broker" + i, dest, (BROKER_COUNT-1)+CONSUMER_COUNT, 65000);
}
// Send messages