mirror of https://github.com/apache/activemq.git
Make the test less prone to failure due to dependence on fixed sleeps for the assert conditions.
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1297501 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3a5b48a4db
commit
fca08a7f22
|
@ -92,6 +92,12 @@
|
||||||
<artifactId>slf4j-log4j12</artifactId>
|
<artifactId>slf4j-log4j12</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>activemq-core</artifactId>
|
||||||
|
<type>test-jar</type>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
@ -18,6 +18,8 @@ package org.apache.activemq.transport.xmpp;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
import junit.textui.TestRunner;
|
import junit.textui.TestRunner;
|
||||||
|
|
||||||
|
import org.apache.activemq.util.Wait;
|
||||||
import org.jivesoftware.smack.Chat;
|
import org.jivesoftware.smack.Chat;
|
||||||
import org.jivesoftware.smack.ChatManager;
|
import org.jivesoftware.smack.ChatManager;
|
||||||
import org.jivesoftware.smack.ChatManagerListener;
|
import org.jivesoftware.smack.ChatManagerListener;
|
||||||
|
@ -30,12 +32,13 @@ import org.jivesoftware.smack.filter.PacketFilter;
|
||||||
import org.jivesoftware.smack.packet.Message;
|
import org.jivesoftware.smack.packet.Message;
|
||||||
import org.jivesoftware.smack.packet.Packet;
|
import org.jivesoftware.smack.packet.Packet;
|
||||||
import org.jivesoftware.smackx.muc.MultiUserChat;
|
import org.jivesoftware.smackx.muc.MultiUserChat;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class XmppTest extends TestCase {
|
public class XmppTest extends TestCase {
|
||||||
|
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(XmppTest.class);
|
||||||
|
|
||||||
protected static boolean block;
|
protected static boolean block;
|
||||||
|
|
||||||
private final XmppBroker broker = new XmppBroker();
|
private final XmppBroker broker = new XmppBroker();
|
||||||
|
@ -55,23 +58,23 @@ public class XmppTest extends TestCase {
|
||||||
try {
|
try {
|
||||||
// SmackConfiguration.setPacketReplyTimeout(1000);
|
// SmackConfiguration.setPacketReplyTimeout(1000);
|
||||||
XMPPConnection con = new XMPPConnection(config);
|
XMPPConnection con = new XMPPConnection(config);
|
||||||
con.connect();
|
con.connect();
|
||||||
con.login("amq-user", "amq-pwd");
|
con.login("amq-user", "amq-pwd");
|
||||||
ChatManager chatManager = con.getChatManager();
|
ChatManager chatManager = con.getChatManager();
|
||||||
Chat chat = chatManager.createChat("test@localhost", new MessageListener() {
|
Chat chat = chatManager.createChat("test@localhost", new MessageListener() {
|
||||||
public void processMessage(Chat chat, Message message) {
|
public void processMessage(Chat chat, Message message) {
|
||||||
System.out.println("Got XMPP message from chat " + chat.getParticipant() + " message - " + message.getBody());
|
LOG.info("Got XMPP message from chat " + chat.getParticipant() + " message - " + message.getBody());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
System.out.println("Sending message: " + i);
|
LOG.info("Sending message: " + i);
|
||||||
chat.sendMessage("Hello from Message: " + i);
|
chat.sendMessage("Hello from Message: " + i);
|
||||||
}
|
}
|
||||||
System.out.println("Sent all messages!");
|
LOG.info("Sent all messages!");
|
||||||
con.disconnect();
|
con.disconnect();
|
||||||
} catch (XMPPException e) {
|
} catch (XMPPException e) {
|
||||||
if (block) {
|
if (block) {
|
||||||
System.out.println("Caught: " + e);
|
LOG.info("Caught: " + e);
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} else {
|
} else {
|
||||||
throw e;
|
throw e;
|
||||||
|
@ -79,14 +82,12 @@ public class XmppTest extends TestCase {
|
||||||
}
|
}
|
||||||
if (block) {
|
if (block) {
|
||||||
Thread.sleep(20000);
|
Thread.sleep(20000);
|
||||||
System.out.println("Press any key to quit!: ");
|
LOG.info("Press any key to quit!: ");
|
||||||
System.in.read();
|
System.in.read();
|
||||||
}
|
}
|
||||||
System.out.println("Done!");
|
LOG.info("Done!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void testChat() throws Exception {
|
public void testChat() throws Exception {
|
||||||
ConnectionConfiguration config = new ConnectionConfiguration("localhost", 61222);
|
ConnectionConfiguration config = new ConnectionConfiguration("localhost", 61222);
|
||||||
//config.setDebuggerEnabled(true);
|
//config.setDebuggerEnabled(true);
|
||||||
|
@ -112,7 +113,6 @@ public class XmppTest extends TestCase {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
XMPPConnection producerCon = new XMPPConnection(config);
|
XMPPConnection producerCon = new XMPPConnection(config);
|
||||||
producerCon.connect();
|
producerCon.connect();
|
||||||
producerCon.login("producer", "producer");
|
producerCon.login("producer", "producer");
|
||||||
|
@ -121,6 +121,7 @@ public class XmppTest extends TestCase {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
producerCon.addPacketWriterListener(new XmppLogger("PRODUCER OUTBOUND"), new PacketFilter() {
|
producerCon.addPacketWriterListener(new XmppLogger("PRODUCER OUTBOUND"), new PacketFilter() {
|
||||||
public boolean accept(Packet packet) {
|
public boolean accept(Packet packet) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -129,28 +130,31 @@ public class XmppTest extends TestCase {
|
||||||
|
|
||||||
Chat chat = producerCon.getChatManager().createChat("consumer", new MessageListener() {
|
Chat chat = producerCon.getChatManager().createChat("consumer", new MessageListener() {
|
||||||
public void processMessage(Chat chat, Message message) {
|
public void processMessage(Chat chat, Message message) {
|
||||||
System.out.println("Got XMPP message from chat " + chat.getParticipant() + " message - " + message.getBody());
|
LOG.info("Got XMPP message from chat " + chat.getParticipant() + " message - " + message.getBody());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
System.out.println("Sending message: " + i);
|
LOG.info("Sending message: " + i);
|
||||||
Message message = new Message("consumer");
|
Message message = new Message("consumer");
|
||||||
message.setType(Message.Type.chat);
|
message.setType(Message.Type.chat);
|
||||||
message.setBody("Hello from producer, message # " + i);
|
message.setBody("Hello from producer, message # " + i);
|
||||||
chat.sendMessage(message);
|
chat.sendMessage(message);
|
||||||
}
|
}
|
||||||
System.out.println("Sent all messages!");
|
LOG.info("Sent all messages!");
|
||||||
|
|
||||||
Thread.sleep(sleepTime);
|
assertTrue("Consumer received - " + listener.getMessageCount(), Wait.waitFor(new Wait.Condition() {
|
||||||
System.out.println("Consumer received - " + listener.getMessageCount());
|
@Override
|
||||||
assertEquals(10, listener.getMessageCount());
|
public boolean isSatisified() throws Exception {
|
||||||
|
return listener.getMessageCount() == 10;
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
LOG.info("Consumer received - " + listener.getMessageCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void testMultiUserChat() throws Exception {
|
public void testMultiUserChat() throws Exception {
|
||||||
System.out.println("\n\n\n\n\n\n");
|
LOG.info("\n\n\n\n\n\n");
|
||||||
ConnectionConfiguration config = new ConnectionConfiguration("localhost", 61222);
|
ConnectionConfiguration config = new ConnectionConfiguration("localhost", 61222);
|
||||||
//config.setDebuggerEnabled(true);
|
//config.setDebuggerEnabled(true);
|
||||||
//
|
//
|
||||||
|
@ -160,7 +164,7 @@ public class XmppTest extends TestCase {
|
||||||
MultiUserChat consumerMuc = new MultiUserChat(consumerCon, "muc-test");
|
MultiUserChat consumerMuc = new MultiUserChat(consumerCon, "muc-test");
|
||||||
consumerMuc.join("consumer");
|
consumerMuc.join("consumer");
|
||||||
|
|
||||||
ConsumerMUCMessageListener listener = new ConsumerMUCMessageListener();
|
final ConsumerMUCMessageListener listener = new ConsumerMUCMessageListener();
|
||||||
consumerMuc.addMessageListener(listener);
|
consumerMuc.addMessageListener(listener);
|
||||||
|
|
||||||
XMPPConnection producerCon = new XMPPConnection(config);
|
XMPPConnection producerCon = new XMPPConnection(config);
|
||||||
|
@ -170,16 +174,21 @@ public class XmppTest extends TestCase {
|
||||||
producerMuc.join("producer");
|
producerMuc.join("producer");
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
System.out.println("Sending message: " + i);
|
LOG.info("Sending message: " + i);
|
||||||
Message message = producerMuc.createMessage();
|
Message message = producerMuc.createMessage();
|
||||||
message.setBody("Hello from producer, message # " + i);
|
message.setBody("Hello from producer, message # " + i);
|
||||||
producerMuc.sendMessage(message);
|
producerMuc.sendMessage(message);
|
||||||
}
|
}
|
||||||
System.out.println("Sent all messages!");
|
LOG.info("Sent all messages!");
|
||||||
|
|
||||||
Thread.sleep(sleepTime);
|
assertTrue("Consumer received - " + listener.getMessageCount(), Wait.waitFor(new Wait.Condition() {
|
||||||
System.out.println("Consumer received - " + listener.getMessageCount());
|
@Override
|
||||||
assertEquals(10, listener.getMessageCount());
|
public boolean isSatisified() throws Exception {
|
||||||
|
return listener.getMessageCount() == 10;
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
LOG.info("Consumer received - " + listener.getMessageCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addLoggingListeners(String name, XMPPConnection connection) {
|
public void addLoggingListeners(String name, XMPPConnection connection) {
|
||||||
|
@ -196,7 +205,7 @@ public class XmppTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testTwoConnections() throws Exception {
|
public void testTwoConnections() throws Exception {
|
||||||
System.out.println("\n\n\n\n\n\n");
|
LOG.info("\n\n\n\n\n\n");
|
||||||
ConnectionConfiguration config = new ConnectionConfiguration("localhost", 61222);
|
ConnectionConfiguration config = new ConnectionConfiguration("localhost", 61222);
|
||||||
//config.setDebuggerEnabled(true);
|
//config.setDebuggerEnabled(true);
|
||||||
|
|
||||||
|
@ -212,10 +221,10 @@ public class XmppTest extends TestCase {
|
||||||
chat.addMessageListener(listener1);
|
chat.addMessageListener(listener1);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//now create the producer
|
//now create the producer
|
||||||
XMPPConnection producerCon = new XMPPConnection(config);
|
XMPPConnection producerCon = new XMPPConnection(config);
|
||||||
System.out.println("Connecting producer and consumer");
|
LOG.info("Connecting producer and consumer");
|
||||||
producerCon.connect();
|
producerCon.connect();
|
||||||
addLoggingListeners("PRODUCER", producerCon);
|
addLoggingListeners("PRODUCER", producerCon);
|
||||||
producerCon.login("producer", "producer");
|
producerCon.login("producer", "producer");
|
||||||
|
@ -223,20 +232,20 @@ public class XmppTest extends TestCase {
|
||||||
//create the chat and send some messages
|
//create the chat and send some messages
|
||||||
Chat chat = producerCon.getChatManager().createChat("consumer", new MessageListener() {
|
Chat chat = producerCon.getChatManager().createChat("consumer", new MessageListener() {
|
||||||
public void processMessage(Chat chat, Message message) {
|
public void processMessage(Chat chat, Message message) {
|
||||||
System.out.println("Got XMPP message from chat " + chat.getParticipant() + " message - " + message.getBody());
|
LOG.info("Got XMPP message from chat " + chat.getParticipant() + " message - " + message.getBody());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
System.out.println("Sending message: " + i);
|
LOG.info("Sending message: " + i);
|
||||||
Message message = new Message("consumer");
|
Message message = new Message("consumer");
|
||||||
message.setType(Message.Type.chat);
|
message.setType(Message.Type.chat);
|
||||||
message.setBody("Hello from producer, message # " + i);
|
message.setBody("Hello from producer, message # " + i);
|
||||||
chat.sendMessage(message);
|
chat.sendMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
//make sure the consumer has time to receive all the messages...
|
//make sure the consumer has time to receive all the messages...
|
||||||
Thread.sleep(sleepTime);
|
Thread.sleep(sleepTime);
|
||||||
|
|
||||||
//create an identical 2nd consumer
|
//create an identical 2nd consumer
|
||||||
XMPPConnection lastguyCon = new XMPPConnection(config);
|
XMPPConnection lastguyCon = new XMPPConnection(config);
|
||||||
|
@ -251,19 +260,28 @@ public class XmppTest extends TestCase {
|
||||||
});
|
});
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
System.out.println("Sending message: " + i);
|
LOG.info("Sending message: " + i);
|
||||||
Message message = new Message("consumer");
|
Message message = new Message("consumer");
|
||||||
message.setType(Message.Type.chat);
|
message.setType(Message.Type.chat);
|
||||||
message.setBody("Hello from producer, message # " + i);
|
message.setBody("Hello from producer, message # " + i);
|
||||||
chat.sendMessage(message);
|
chat.sendMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println("Sent all messages!");
|
LOG.info("Sent all messages!");
|
||||||
Thread.sleep(sleepTime);
|
|
||||||
System.out.println("Consumer received - " + listener1.getMessageCount());
|
assertTrue("Consumer received - " + listener1.getMessageCount(), Wait.waitFor(new Wait.Condition() {
|
||||||
assertEquals(20, listener1.getMessageCount());
|
@Override
|
||||||
System.out.println("Consumer received - " + listener2.getMessageCount());
|
public boolean isSatisified() throws Exception {
|
||||||
assertEquals(10, listener2.getMessageCount());
|
return listener1.getMessageCount() == 20;
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
assertTrue("Consumer received - " + listener2.getMessageCount(), Wait.waitFor(new Wait.Condition() {
|
||||||
|
@Override
|
||||||
|
public boolean isSatisified() throws Exception {
|
||||||
|
return listener2.getMessageCount() == 10;
|
||||||
|
}
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
class XmppLogger implements PacketListener {
|
class XmppLogger implements PacketListener {
|
||||||
|
@ -275,7 +293,7 @@ public class XmppTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void processPacket(Packet packet) {
|
public void processPacket(Packet packet) {
|
||||||
System.out.println(direction + " : " + packet.toXML());
|
LOG.info(direction + " : " + packet.toXML());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,7 +302,7 @@ public class XmppTest extends TestCase {
|
||||||
|
|
||||||
public void processPacket(Packet packet) {
|
public void processPacket(Packet packet) {
|
||||||
if ( packet instanceof Message) {
|
if ( packet instanceof Message) {
|
||||||
System.out.println("Received message number : " + (messageCount++));
|
LOG.info("Received message number : " + (messageCount++));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public int getMessageCount() {
|
public int getMessageCount() {
|
||||||
|
@ -296,7 +314,7 @@ public class XmppTest extends TestCase {
|
||||||
private int messageCount=0;
|
private int messageCount=0;
|
||||||
|
|
||||||
public void processMessage(Chat chat, Message message) {
|
public void processMessage(Chat chat, Message message) {
|
||||||
System.out.println("Received message number : " + (messageCount++));
|
LOG.info("Received message number : " + (messageCount++));
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMessageCount() {
|
public int getMessageCount() {
|
||||||
|
|
Loading…
Reference in New Issue