broker/ServerIntegrationPahoTest: code formatter used
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
*
|
*
|
||||||
* You may elect to redistribute this code under either of these licenses.
|
* You may elect to redistribute this code under either of these licenses.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package io.moquette.server;
|
package io.moquette.server;
|
||||||
|
|
||||||
import io.moquette.server.config.IConfig;
|
import io.moquette.server.config.IConfig;
|
||||||
@@ -22,11 +23,9 @@ import org.eclipse.paho.client.mqttv3.persist.MqttDefaultFilePersistence;
|
|||||||
import org.junit.*;
|
import org.junit.*;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
public class ServerIntegrationPahoTest {
|
public class ServerIntegrationPahoTest {
|
||||||
@@ -35,7 +34,7 @@ public class ServerIntegrationPahoTest {
|
|||||||
|
|
||||||
static MqttClientPersistence s_dataStore;
|
static MqttClientPersistence s_dataStore;
|
||||||
static MqttClientPersistence s_pubDataStore;
|
static MqttClientPersistence s_pubDataStore;
|
||||||
|
|
||||||
Server m_server;
|
Server m_server;
|
||||||
IMqttClient m_client;
|
IMqttClient m_client;
|
||||||
IMqttClient m_publisher;
|
IMqttClient m_publisher;
|
||||||
@@ -113,7 +112,6 @@ public class ServerIntegrationPahoTest {
|
|||||||
|
|
||||||
assertEquals("/topic", m_messagesCollector.getTopic());
|
assertEquals("/topic", m_messagesCollector.getTopic());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCleanSession_maintainClientSubscriptions() throws Exception {
|
public void testCleanSession_maintainClientSubscriptions() throws Exception {
|
||||||
@@ -124,7 +122,7 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.subscribe("/topic", 0);
|
m_client.subscribe("/topic", 0);
|
||||||
m_client.disconnect();
|
m_client.disconnect();
|
||||||
|
|
||||||
//reconnect and publish
|
// reconnect and publish
|
||||||
MqttClient anotherClient = new MqttClient("tcp://localhost:1883", "TestClient", s_dataStore);
|
MqttClient anotherClient = new MqttClient("tcp://localhost:1883", "TestClient", s_dataStore);
|
||||||
m_messagesCollector = new MessageCollector();
|
m_messagesCollector = new MessageCollector();
|
||||||
anotherClient.setCallback(m_messagesCollector);
|
anotherClient.setCallback(m_messagesCollector);
|
||||||
@@ -134,7 +132,6 @@ public class ServerIntegrationPahoTest {
|
|||||||
assertEquals("/topic", m_messagesCollector.getTopic());
|
assertEquals("/topic", m_messagesCollector.getTopic());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCleanSession_maintainClientSubscriptions_againstClientDestruction() throws Exception {
|
public void testCleanSession_maintainClientSubscriptions_againstClientDestruction() throws Exception {
|
||||||
LOG.info("*** testCleanSession_maintainClientSubscriptions_againstClientDestruction ***");
|
LOG.info("*** testCleanSession_maintainClientSubscriptions_againstClientDestruction ***");
|
||||||
@@ -144,7 +141,7 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.subscribe("/topic", 0);
|
m_client.subscribe("/topic", 0);
|
||||||
m_client.disconnect();
|
m_client.disconnect();
|
||||||
|
|
||||||
//reconnect and publish
|
// reconnect and publish
|
||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
|
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
|
||||||
|
|
||||||
@@ -152,9 +149,9 @@ public class ServerIntegrationPahoTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check that after a client has connected with clean session false, subscribed
|
* Check that after a client has connected with clean session false, subscribed to some topic
|
||||||
* to some topic and exited, if it reconnects with clean session true, the m_server
|
* and exited, if it reconnects with clean session true, the m_server correctly cleanup every
|
||||||
* correctly cleanup every previous subscription
|
* previous subscription
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testCleanSession_correctlyClientSubscriptions() throws Exception {
|
public void testCleanSession_correctlyClientSubscriptions() throws Exception {
|
||||||
@@ -165,17 +162,17 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.subscribe("/topic", 0);
|
m_client.subscribe("/topic", 0);
|
||||||
m_client.disconnect();
|
m_client.disconnect();
|
||||||
|
|
||||||
//reconnect and publish
|
// reconnect and publish
|
||||||
//options.setCleanSession(false);
|
// options.setCleanSession(false);
|
||||||
m_client = new MqttClient("tcp://localhost:1883", "TestClient", s_dataStore);
|
m_client = new MqttClient("tcp://localhost:1883", "TestClient", s_dataStore);
|
||||||
MessageCollector subListener = new MessageCollector();
|
MessageCollector subListener = new MessageCollector();
|
||||||
m_client.setCallback(subListener);
|
m_client.setCallback(subListener);
|
||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
|
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
|
||||||
//Ugly, we need to get self notified after the publish
|
// Ugly, we need to get self notified after the publish
|
||||||
assertEquals("Test my payload", new String(subListener.waitMessage(1).getPayload()));
|
assertEquals("Test my payload", new String(subListener.waitMessage(1).getPayload()));
|
||||||
|
|
||||||
//close
|
// close
|
||||||
m_client.disconnect();
|
m_client.disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,7 +189,7 @@ public class ServerIntegrationPahoTest {
|
|||||||
|
|
||||||
m_server.startServer(IntegrationUtils.prepareTestProperties());
|
m_server.startServer(IntegrationUtils.prepareTestProperties());
|
||||||
|
|
||||||
//reconnect and publish
|
// reconnect and publish
|
||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
|
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
|
||||||
|
|
||||||
@@ -206,7 +203,7 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.publish("/topic", "Test my payload".getBytes(), 1, true);
|
m_client.publish("/topic", "Test my payload".getBytes(), 1, true);
|
||||||
m_client.disconnect();
|
m_client.disconnect();
|
||||||
|
|
||||||
//reconnect and publish
|
// reconnect and publish
|
||||||
m_client.connect();
|
m_client.connect();
|
||||||
m_client.subscribe("/topic", 0);
|
m_client.subscribe("/topic", 0);
|
||||||
|
|
||||||
@@ -221,7 +218,7 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
m_client.subscribe("/topic", 0);
|
m_client.subscribe("/topic", 0);
|
||||||
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
|
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
|
||||||
//m_client.disconnect();
|
// m_client.disconnect();
|
||||||
assertEquals("/topic", m_messagesCollector.getTopic());
|
assertEquals("/topic", m_messagesCollector.getTopic());
|
||||||
|
|
||||||
m_client.unsubscribe("/topic");
|
m_client.unsubscribe("/topic");
|
||||||
@@ -239,7 +236,7 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
m_client.subscribe("/topic", 0);
|
m_client.subscribe("/topic", 0);
|
||||||
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
|
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
|
||||||
//m_client.disconnect();
|
// m_client.disconnect();
|
||||||
assertEquals("/topic", m_messagesCollector.getTopic());
|
assertEquals("/topic", m_messagesCollector.getTopic());
|
||||||
|
|
||||||
m_client.unsubscribe("/topic");
|
m_client.unsubscribe("/topic");
|
||||||
@@ -260,7 +257,7 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.publish("/topic", "Hello MQTT".getBytes(), 1, false);
|
m_client.publish("/topic", "Hello MQTT".getBytes(), 1, false);
|
||||||
m_client.disconnect();
|
m_client.disconnect();
|
||||||
|
|
||||||
//reconnect and publish
|
// reconnect and publish
|
||||||
MqttMessage message = m_messagesCollector.waitMessage(1);
|
MqttMessage message = m_messagesCollector.waitMessage(1);
|
||||||
assertEquals("Hello MQTT", message.toString());
|
assertEquals("Hello MQTT", message.toString());
|
||||||
assertEquals(1, message.getQos());
|
assertEquals(1, message.getQos());
|
||||||
@@ -275,7 +272,7 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.subscribe("/topic", 1);
|
m_client.subscribe("/topic", 1);
|
||||||
m_client.disconnect();
|
m_client.disconnect();
|
||||||
|
|
||||||
//publish a QoS 1 message another client publish a message on the topic
|
// publish a QoS 1 message another client publish a message on the topic
|
||||||
publishFromAnotherClient("/topic", "Hello MQTT".getBytes(), 1);
|
publishFromAnotherClient("/topic", "Hello MQTT".getBytes(), 1);
|
||||||
|
|
||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
@@ -283,7 +280,6 @@ public class ServerIntegrationPahoTest {
|
|||||||
assertEquals("Hello MQTT", m_messagesCollector.waitMessage(1).toString());
|
assertEquals("Hello MQTT", m_messagesCollector.waitMessage(1).toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void checkReceivePublishedMessage_after_a_reconnect_with_notCleanSession() throws Exception {
|
public void checkReceivePublishedMessage_after_a_reconnect_with_notCleanSession() throws Exception {
|
||||||
LOG.info("*** checkReceivePublishedMessage_after_a_reconnect_with_notCleanSession ***");
|
LOG.info("*** checkReceivePublishedMessage_after_a_reconnect_with_notCleanSession ***");
|
||||||
@@ -296,10 +292,10 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
m_client.subscribe("/topic", 1);
|
m_client.subscribe("/topic", 1);
|
||||||
|
|
||||||
//publish a QoS 1 message another client publish a message on the topic
|
// publish a QoS 1 message another client publish a message on the topic
|
||||||
publishFromAnotherClient("/topic", "Hello MQTT".getBytes(), 1);
|
publishFromAnotherClient("/topic", "Hello MQTT".getBytes(), 1);
|
||||||
|
|
||||||
//Verify that after a reconnection the client receive the message
|
// Verify that after a reconnection the client receive the message
|
||||||
MqttMessage message = m_messagesCollector.waitMessage(1);
|
MqttMessage message = m_messagesCollector.waitMessage(1);
|
||||||
assertNotNull(message);
|
assertNotNull(message);
|
||||||
assertEquals("Hello MQTT", message.toString());
|
assertEquals("Hello MQTT", message.toString());
|
||||||
@@ -321,7 +317,7 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.subscribe("/topic", 2);
|
m_client.subscribe("/topic", 2);
|
||||||
m_client.disconnect();
|
m_client.disconnect();
|
||||||
|
|
||||||
//publish a QoS 1 message another client publish a message on the topic
|
// publish a QoS 1 message another client publish a message on the topic
|
||||||
publishFromAnotherClient("/topic", "Hello MQTT".getBytes(), 2);
|
publishFromAnotherClient("/topic", "Hello MQTT".getBytes(), 2);
|
||||||
m_messagesCollector.reinit();
|
m_messagesCollector.reinit();
|
||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
@@ -340,7 +336,7 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.subscribe("/topic", 2);
|
m_client.subscribe("/topic", 2);
|
||||||
m_client.disconnect();
|
m_client.disconnect();
|
||||||
|
|
||||||
//publish a QoS 2 message another client publish a message on the topic
|
// publish a QoS 2 message another client publish a message on the topic
|
||||||
publishFromAnotherClient("/topic", "Hello MQTT".getBytes(), 2);
|
publishFromAnotherClient("/topic", "Hello MQTT".getBytes(), 2);
|
||||||
m_messagesCollector.reinit();
|
m_messagesCollector.reinit();
|
||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
@@ -370,10 +366,10 @@ public class ServerIntegrationPahoTest {
|
|||||||
assertEquals("Hello MQTT 1", message.toString());
|
assertEquals("Hello MQTT 1", message.toString());
|
||||||
m_client.disconnect();
|
m_client.disconnect();
|
||||||
|
|
||||||
//publish other message
|
// publish other message
|
||||||
publishFromAnotherClient("/topic", "Hello MQTT 2".getBytes(), 1);
|
publishFromAnotherClient("/topic", "Hello MQTT 2".getBytes(), 1);
|
||||||
|
|
||||||
//reconnect the second time
|
// reconnect the second time
|
||||||
m_messagesCollector.reinit();
|
m_messagesCollector.reinit();
|
||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
assertNotNull(m_messagesCollector);
|
assertNotNull(m_messagesCollector);
|
||||||
@@ -383,11 +379,9 @@ public class ServerIntegrationPahoTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* subscriber A connect and subscribe on "a/b" QoS 1
|
* subscriber A connect and subscribe on "a/b" QoS 1 subscriber B connect and subscribe on "a/+"
|
||||||
* subscriber B connect and subscribe on "a/+" BUT with QoS 2
|
* BUT with QoS 2 publisher connects and send a message "hello" on "a/b" subscriber A must
|
||||||
* publisher connects and send a message "hello" on "a/b"
|
* receive a notification with QoS1 subscriber B must receive a notification with QoS2
|
||||||
* subscriber A must receive a notification with QoS1
|
|
||||||
* subscriber B must receive a notification with QoS2
|
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void checkSubscribersGetCorrectQosNotifications() throws Exception {
|
public void checkSubscribersGetCorrectQosNotifications() throws Exception {
|
||||||
@@ -410,7 +404,6 @@ public class ServerIntegrationPahoTest {
|
|||||||
subscriberB.connect();
|
subscriberB.connect();
|
||||||
subscriberB.subscribe("a/+", 2);
|
subscriberB.subscribe("a/+", 2);
|
||||||
|
|
||||||
|
|
||||||
m_client.connect();
|
m_client.connect();
|
||||||
m_client.publish("a/b", "Hello world MQTT!!".getBytes(), 2, false);
|
m_client.publish("a/b", "Hello world MQTT!!".getBytes(), 2, false);
|
||||||
|
|
||||||
@@ -429,8 +422,9 @@ public class ServerIntegrationPahoTest {
|
|||||||
public void testSubcriptionDoesntStayActiveAfterARestart() throws Exception {
|
public void testSubcriptionDoesntStayActiveAfterARestart() throws Exception {
|
||||||
LOG.info("*** testSubcriptionDoesntStayActiveAfterARestart ***");
|
LOG.info("*** testSubcriptionDoesntStayActiveAfterARestart ***");
|
||||||
String tmpDir = System.getProperty("java.io.tmpdir");
|
String tmpDir = System.getProperty("java.io.tmpdir");
|
||||||
//clientForSubscribe1 connect and subscribe to /topic QoS2
|
// clientForSubscribe1 connect and subscribe to /topic QoS2
|
||||||
MqttClientPersistence dsSubscriberA = new MqttDefaultFilePersistence(tmpDir + File.separator + "clientForSubscribe1");
|
MqttClientPersistence dsSubscriberA = new MqttDefaultFilePersistence(
|
||||||
|
tmpDir + File.separator + "clientForSubscribe1");
|
||||||
|
|
||||||
MqttClient clientForSubscribe1 = new MqttClient("tcp://localhost:1883", "clientForSubscribe1", dsSubscriberA);
|
MqttClient clientForSubscribe1 = new MqttClient("tcp://localhost:1883", "clientForSubscribe1", dsSubscriberA);
|
||||||
MessageCollector cbSubscriber1 = new MessageCollector();
|
MessageCollector cbSubscriber1 = new MessageCollector();
|
||||||
@@ -438,27 +432,29 @@ public class ServerIntegrationPahoTest {
|
|||||||
clientForSubscribe1.connect();
|
clientForSubscribe1.connect();
|
||||||
clientForSubscribe1.subscribe("topic", 0);
|
clientForSubscribe1.subscribe("topic", 0);
|
||||||
|
|
||||||
//server stop
|
// server stop
|
||||||
m_server.stopServer();
|
m_server.stopServer();
|
||||||
System.out.println("\n\n SEVER REBOOTING \n\n");
|
System.out.println("\n\n SEVER REBOOTING \n\n");
|
||||||
//server start
|
// server start
|
||||||
startServer();
|
startServer();
|
||||||
|
|
||||||
//clientForSubscribe2 connect and subscribe to /topic QoS2
|
// clientForSubscribe2 connect and subscribe to /topic QoS2
|
||||||
MqttClientPersistence dsSubscriberB = new MqttDefaultFilePersistence(tmpDir + File.separator + "clientForSubscribe2");
|
MqttClientPersistence dsSubscriberB = new MqttDefaultFilePersistence(
|
||||||
|
tmpDir + File.separator + "clientForSubscribe2");
|
||||||
MqttClient clientForSubscribe2 = new MqttClient("tcp://localhost:1883", "clientForSubscribe2", dsSubscriberB);
|
MqttClient clientForSubscribe2 = new MqttClient("tcp://localhost:1883", "clientForSubscribe2", dsSubscriberB);
|
||||||
MessageCollector cbSubscriber2 = new MessageCollector();
|
MessageCollector cbSubscriber2 = new MessageCollector();
|
||||||
clientForSubscribe2.setCallback(cbSubscriber2);
|
clientForSubscribe2.setCallback(cbSubscriber2);
|
||||||
clientForSubscribe2.connect();
|
clientForSubscribe2.connect();
|
||||||
clientForSubscribe2.subscribe("topic", 0);
|
clientForSubscribe2.subscribe("topic", 0);
|
||||||
|
|
||||||
//clientForPublish publish on /topic with QoS2 a message
|
// clientForPublish publish on /topic with QoS2 a message
|
||||||
MqttClientPersistence dsSubscriberPUB = new MqttDefaultFilePersistence(tmpDir + File.separator + "clientForPublish");
|
MqttClientPersistence dsSubscriberPUB = new MqttDefaultFilePersistence(
|
||||||
|
tmpDir + File.separator + "clientForPublish");
|
||||||
MqttClient clientForPublish = new MqttClient("tcp://localhost:1883", "clientForPublish", dsSubscriberPUB);
|
MqttClient clientForPublish = new MqttClient("tcp://localhost:1883", "clientForPublish", dsSubscriberPUB);
|
||||||
clientForPublish.connect();
|
clientForPublish.connect();
|
||||||
clientForPublish.publish("topic", "Hello".getBytes(), 2, true);
|
clientForPublish.publish("topic", "Hello".getBytes(), 2, true);
|
||||||
|
|
||||||
//verify clientForSubscribe1 doesn't receive a notification but clientForSubscribe2 yes
|
// verify clientForSubscribe1 doesn't receive a notification but clientForSubscribe2 yes
|
||||||
LOG.info("Before waiting to receive 1 sec from " + clientForSubscribe1.getClientId());
|
LOG.info("Before waiting to receive 1 sec from " + clientForSubscribe1.getClientId());
|
||||||
assertFalse(clientForSubscribe1.isConnected());
|
assertFalse(clientForSubscribe1.isConnected());
|
||||||
assertTrue(clientForSubscribe2.isConnected());
|
assertTrue(clientForSubscribe2.isConnected());
|
||||||
@@ -490,7 +486,7 @@ public class ServerIntegrationPahoTest {
|
|||||||
MqttClient clientYB = createClient("publisher", "Y");
|
MqttClient clientYB = createClient("publisher", "Y");
|
||||||
clientYB.publish("topic", "Hello 2".getBytes(), 2, true);
|
clientYB.publish("topic", "Hello 2".getBytes(), 2, true);
|
||||||
|
|
||||||
//Verify that the second subscriber client get notified and not the first.
|
// Verify that the second subscriber client get notified and not the first.
|
||||||
assertTrue(cbSubscriber1.connectionLost());
|
assertTrue(cbSubscriber1.connectionLost());
|
||||||
assertEquals("Hello 2", new String(cbSubscriber2.waitMessage(1).getPayload()));
|
assertEquals("Hello 2", new String(cbSubscriber2.waitMessage(1).getPayload()));
|
||||||
}
|
}
|
||||||
@@ -505,11 +501,11 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.publish("/topic", "Hello".getBytes(), 0, true);
|
m_client.publish("/topic", "Hello".getBytes(), 0, true);
|
||||||
m_client.disconnect();
|
m_client.disconnect();
|
||||||
|
|
||||||
//second loop
|
// second loop
|
||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
m_client.subscribe("/topic", 0);
|
m_client.subscribe("/topic", 0);
|
||||||
m_client.publish("/topic", "Hello".getBytes(), 0, true);
|
m_client.publish("/topic", "Hello".getBytes(), 0, true);
|
||||||
m_client.disconnect(); //this should give timeout
|
m_client.disconnect(); // this should give timeout
|
||||||
|
|
||||||
assertFalse("after a disconnect the client should be disconnected", m_client.isConnected());
|
assertFalse("after a disconnect the client should be disconnected", m_client.isConnected());
|
||||||
}
|
}
|
||||||
@@ -517,8 +513,8 @@ public class ServerIntegrationPahoTest {
|
|||||||
@Test
|
@Test
|
||||||
public void checkReplayofStoredPublishResumeAfter_a_disconnect_cleanSessionFalseQoS1() throws Exception {
|
public void checkReplayofStoredPublishResumeAfter_a_disconnect_cleanSessionFalseQoS1() throws Exception {
|
||||||
LOG.info("*** checkReplayofStoredPublishResumeAfter_a_disconnect_cleanSessionFalseQoS1 ***");
|
LOG.info("*** checkReplayofStoredPublishResumeAfter_a_disconnect_cleanSessionFalseQoS1 ***");
|
||||||
// MessageCollector m_messagesCollector = new MessageCollector();
|
// MessageCollector m_messagesCollector = new MessageCollector();
|
||||||
// m_client.setCallback(m_messagesCollector);
|
// m_client.setCallback(m_messagesCollector);
|
||||||
m_publisher.connect();
|
m_publisher.connect();
|
||||||
|
|
||||||
MqttConnectOptions options = new MqttConnectOptions();
|
MqttConnectOptions options = new MqttConnectOptions();
|
||||||
@@ -526,10 +522,10 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
m_client.subscribe("/topic", 1);
|
m_client.subscribe("/topic", 1);
|
||||||
|
|
||||||
//force the publisher to send
|
// force the publisher to send
|
||||||
m_publisher.publish("/topic", "Hello world MQTT!!-1".getBytes(), 1, false);
|
m_publisher.publish("/topic", "Hello world MQTT!!-1".getBytes(), 1, false);
|
||||||
|
|
||||||
//read the first message and drop the connection
|
// read the first message and drop the connection
|
||||||
MqttMessage msg = m_messagesCollector.waitMessage(1);
|
MqttMessage msg = m_messagesCollector.waitMessage(1);
|
||||||
assertEquals("Hello world MQTT!!-1", new String(msg.getPayload()));
|
assertEquals("Hello world MQTT!!-1", new String(msg.getPayload()));
|
||||||
m_client.disconnect();
|
m_client.disconnect();
|
||||||
@@ -537,7 +533,7 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_publisher.publish("/topic", "Hello world MQTT!!-2".getBytes(), 1, false);
|
m_publisher.publish("/topic", "Hello world MQTT!!-2".getBytes(), 1, false);
|
||||||
m_publisher.publish("/topic", "Hello world MQTT!!-3".getBytes(), 1, false);
|
m_publisher.publish("/topic", "Hello world MQTT!!-3".getBytes(), 1, false);
|
||||||
|
|
||||||
//reconnect and expect to receive the hello 2 message
|
// reconnect and expect to receive the hello 2 message
|
||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
msg = m_messagesCollector.waitMessage(1);
|
msg = m_messagesCollector.waitMessage(1);
|
||||||
assertEquals("Hello world MQTT!!-2", new String(msg.getPayload()));
|
assertEquals("Hello world MQTT!!-2", new String(msg.getPayload()));
|
||||||
@@ -560,10 +556,10 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.subscribe("/topic", 1);
|
m_client.subscribe("/topic", 1);
|
||||||
m_client.disconnect();
|
m_client.disconnect();
|
||||||
|
|
||||||
//force the publisher to send
|
// force the publisher to send
|
||||||
m_publisher.publish("/topic", "Hello world MQTT!!-1".getBytes(), 1, false);
|
m_publisher.publish("/topic", "Hello world MQTT!!-1".getBytes(), 1, false);
|
||||||
|
|
||||||
//reconnect and expect to receive the hello 2 message
|
// reconnect and expect to receive the hello 2 message
|
||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
m_client.subscribe("/topic", 1);
|
m_client.subscribe("/topic", 1);
|
||||||
MqttMessage msg = messagesCollector.waitMessage(1);
|
MqttMessage msg = messagesCollector.waitMessage(1);
|
||||||
@@ -572,10 +568,9 @@ public class ServerIntegrationPahoTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* subscriber connect and subscribe on "topic"
|
* subscriber connect and subscribe on "topic" subscriber disconnects publisher connects and
|
||||||
* subscriber disconnects
|
* send two message "hello1" "hello2" to "topic" subscriber connects again and receive "hello1"
|
||||||
* publisher connects and send two message "hello1" "hello2" to "topic"
|
* "hello2"
|
||||||
* subscriber connects again and receive "hello1" "hello2"
|
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void checkQoS2SubscriberDisconnectReceivePersistedPublishes() throws Exception {
|
public void checkQoS2SubscriberDisconnectReceivePersistedPublishes() throws Exception {
|
||||||
@@ -593,9 +588,9 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_publisher.publish("topic", "Hello2".getBytes(), 2, true);
|
m_publisher.publish("topic", "Hello2".getBytes(), 2, true);
|
||||||
m_publisher.disconnect();
|
m_publisher.disconnect();
|
||||||
|
|
||||||
//subscriber reconnects
|
// subscriber reconnects
|
||||||
m_client.connect(options);
|
m_client.connect(options);
|
||||||
//subscriber should receive the 2 messages missed
|
// subscriber should receive the 2 messages missed
|
||||||
MqttMessage msg = messagesCollector.waitMessage(1);
|
MqttMessage msg = messagesCollector.waitMessage(1);
|
||||||
assertNotNull(msg);
|
assertNotNull(msg);
|
||||||
assertEquals("Hello1", new String(msg.getPayload()));
|
assertEquals("Hello1", new String(msg.getPayload()));
|
||||||
@@ -605,9 +600,8 @@ public class ServerIntegrationPahoTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* subscriber connect and subscribe on "a/b" QoS 1 and "a/+" QoS 2
|
* subscriber connect and subscribe on "a/b" QoS 1 and "a/+" QoS 2 publisher connects and send a
|
||||||
* publisher connects and send a message "hello" on "a/b"
|
* message "hello" on "a/b" subscriber must receive only a single message not twice
|
||||||
* subscriber must receive only a single message not twice
|
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void checkSinglePublishOnOverlappingSubscriptions() throws Exception {
|
public void checkSinglePublishOnOverlappingSubscriptions() throws Exception {
|
||||||
@@ -622,27 +616,27 @@ public class ServerIntegrationPahoTest {
|
|||||||
m_client.subscribe("a/+", 2);
|
m_client.subscribe("a/+", 2);
|
||||||
m_client.subscribe("a/b", 1);
|
m_client.subscribe("a/b", 1);
|
||||||
|
|
||||||
//force the publisher to send
|
// force the publisher to send
|
||||||
m_publisher.publish("a/b", "Hello world MQTT!!".getBytes(), 1, false);
|
m_publisher.publish("a/b", "Hello world MQTT!!".getBytes(), 1, false);
|
||||||
|
|
||||||
//reconnect and expect to receive the hello 2 message
|
// reconnect and expect to receive the hello 2 message
|
||||||
MqttMessage msg = messagesCollector.waitMessage(1);
|
MqttMessage msg = messagesCollector.waitMessage(1);
|
||||||
assertEquals("Hello world MQTT!!", new String(msg.getPayload()));
|
assertEquals("Hello world MQTT!!", new String(msg.getPayload()));
|
||||||
|
|
||||||
//try to listen a second publish
|
// try to listen a second publish
|
||||||
msg = messagesCollector.waitMessage(1);
|
msg = messagesCollector.waitMessage(1);
|
||||||
assertNull(msg);
|
assertNull(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected MqttClient createClient(String clientName, String storeSuffix) throws MqttException {
|
protected MqttClient createClient(String clientName, String storeSuffix) throws MqttException {
|
||||||
return createClient(clientName, storeSuffix, null);
|
return createClient(clientName, storeSuffix, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected MqttClient createClient(String clientName, String storeSuffix, MessageCollector cb) throws MqttException {
|
protected MqttClient createClient(String clientName, String storeSuffix, MessageCollector cb) throws MqttException {
|
||||||
String tmpDir = System.getProperty("java.io.tmpdir");
|
String tmpDir = System.getProperty("java.io.tmpdir");
|
||||||
//clientX connect and subscribe to /topic QoS2
|
// clientX connect and subscribe to /topic QoS2
|
||||||
MqttClientPersistence dsClient = new MqttDefaultFilePersistence(tmpDir + File.separator + storeSuffix + clientName);
|
MqttClientPersistence dsClient = new MqttDefaultFilePersistence(
|
||||||
|
tmpDir + File.separator + storeSuffix + clientName);
|
||||||
MqttClient client = new MqttClient("tcp://localhost:1883", clientName, dsClient);
|
MqttClient client = new MqttClient("tcp://localhost:1883", clientName, dsClient);
|
||||||
if (cb != null) {
|
if (cb != null) {
|
||||||
client.setCallback(cb);
|
client.setCallback(cb);
|
||||||
|
|||||||
Reference in New Issue
Block a user