git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1494283 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Timothy A. Bish 2013-06-18 20:22:51 +00:00
parent 2484c67cb1
commit e2b932ef03
1 changed files with 64 additions and 49 deletions

View File

@ -114,61 +114,76 @@ public class MQTTTest extends AbstractMQTTTest {
@Test(timeout=300000) @Test(timeout=300000)
public void testReceiveMessageSentWhileOffline() throws Exception { public void testReceiveMessageSentWhileOffline() throws Exception {
addMQTTConnector(); byte[] payload = new byte[1024 * 32];
for (int i = 0; i < payload.length; i++){
payload[i] = '2';
}
int numberOfRuns = 100;
int messagesPerRun = 2;
addMQTTConnector("trace=true");
brokerService.start(); brokerService.start();
final MQTTClientProvider publisher = getMQTTClientProvider(); MQTT mqttPub = createMQTTConnection();
initializeConnection(publisher); mqttPub.setClientId("MQTT-Pub-Client");
MQTT mqtt = createMQTTConnection(); MQTT mqttSub = createMQTTConnection();
mqtt.setClientId("MQTT-Client"); mqttSub.setClientId("MQTT-Sub-Client");
mqtt.setCleanSession(false); mqttSub.setCleanSession(false);
{ final BlockingConnection connectionPub = mqttPub.blockingConnection();
final BlockingConnection subscriber = mqtt.blockingConnection(); connectionPub.connect();
subscriber.connect();
Topic[] topic = {new Topic("foo", QoS.EXACTLY_ONCE)};
subscriber.subscribe(topic);
for (int i = 0; i < numberOfMessages; i++) { BlockingConnection connectionSub = mqttSub.blockingConnection();
String payload = "Test Message: " + i; connectionSub.connect();
publisher.publish("foo", payload.getBytes(), EXACTLY_ONCE);
Topic[] topics = {new Topic("TopicA", QoS.EXACTLY_ONCE)};
connectionSub.subscribe(topics);
for (int i = 0; i < messagesPerRun; ++i) {
connectionPub.publish(topics[0].name().toString(), payload, QoS.AT_LEAST_ONCE, false);
} }
for (int i = 0; i < numberOfMessages / 2; i++) { int received = 0;
Message message = subscriber.receive(5, TimeUnit.SECONDS); for (int i = 0; i < messagesPerRun; ++i) {
Message message = connectionSub.receive(5, TimeUnit.SECONDS);
assertNotNull(message); assertNotNull(message);
byte[] payload = message.getPayload(); received++;
payload = message.getPayload();
String messageContent = new String(payload); String messageContent = new String(payload);
if (i % 100 == 0) { LOG.info("Received message from topic: " + message.getTopic() +
LOG.debug("Received message from topic: " + message.getTopic() +
" Message content: " + messageContent); " Message content: " + messageContent);
}
message.ack(); message.ack();
} }
connectionSub.disconnect();
subscriber.disconnect(); for(int j = 0; j < numberOfRuns; j++) {
for (int i = 0; i < messagesPerRun; ++i) {
connectionPub.publish(topics[0].name().toString(), payload, QoS.AT_LEAST_ONCE, false);
} }
publisher.disconnect(); mqttSub = createMQTTConnection();
mqttSub.setClientId("MQTT-Sub-Client");
mqttSub.setCleanSession(false);
final BlockingConnection subscriber = mqtt.blockingConnection(); connectionSub = mqttSub.blockingConnection();
subscriber.connect(); connectionSub.connect();
Topic[] topic = {new Topic("foo", QoS.EXACTLY_ONCE)}; connectionSub.subscribe(topics);
subscriber.subscribe(topic);
for (int i = 0; i < numberOfMessages / 2; i++) { for (int i = 0; i < messagesPerRun; ++i) {
Message message = subscriber.receive(5, TimeUnit.SECONDS); Message message = connectionSub.receive(5, TimeUnit.SECONDS);
assertNotNull(message); assertNotNull(message);
byte[] payload = message.getPayload(); received++;
payload = message.getPayload();
String messageContent = new String(payload); String messageContent = new String(payload);
if (i % 100 == 0) { LOG.info("Received message from topic: " + message.getTopic() +
LOG.debug("Received message from topic: " + message.getTopic() +
" Message content: " + messageContent); " Message content: " + messageContent);
}
message.ack(); message.ack();
} }
connectionSub.disconnect();
subscriber.disconnect(); }
assertEquals("Should have received " + (messagesPerRun * (numberOfRuns + 1)) + " messages", (messagesPerRun * (numberOfRuns + 1)), received);
} }
@Test(timeout=30000) @Test(timeout=30000)
@ -219,7 +234,7 @@ public class MQTTTest extends AbstractMQTTTest {
@Override @Override
protected void addMQTTConnector() throws Exception { protected void addMQTTConnector() throws Exception {
addMQTTConnector(""); addMQTTConnector();
} }
@Override @Override
@ -249,12 +264,12 @@ public class MQTTTest extends AbstractMQTTTest {
return new Tracer(){ return new Tracer(){
@Override @Override
public void onReceive(MQTTFrame frame) { public void onReceive(MQTTFrame frame) {
// LOG.info("Client Received:\n"+frame); LOG.info("Client Received:\n"+frame);
} }
@Override @Override
public void onSend(MQTTFrame frame) { public void onSend(MQTTFrame frame) {
// LOG.info("Client Sent:\n" + frame); LOG.info("Client Sent:\n" + frame);
} }
@Override @Override