Moved test to use a test client callback that queue up all received messages

This commit is contained in:
andsel
2016-03-06 19:50:47 +01:00
parent 6cadaebb0c
commit 4e8f72a34b
8 changed files with 71 additions and 159 deletions
@@ -42,7 +42,7 @@ public class ServerIntegrationPahoTest {
Server m_server;
IMqttClient m_client;
IMqttClient m_publisher;
TestCallback m_callback;
MessageCollector m_messagesCollector;
IConfig m_config;
@BeforeClass
@@ -67,8 +67,8 @@ public class ServerIntegrationPahoTest {
startServer();
m_client = new MqttClient("tcp://localhost:1883", "TestClient", s_dataStore);
m_callback = new TestCallback();
m_client.setCallback(m_callback);
m_messagesCollector = new MessageCollector();
m_client.setCallback(m_messagesCollector);
m_publisher = new MqttClient("tcp://localhost:1883", "Publisher", s_pubDataStore);
}
@@ -114,7 +114,7 @@ public class ServerIntegrationPahoTest {
message.setRetained(false);
m_client.publish("/topic", message);
assertEquals("/topic", m_callback.getTopic());
assertEquals("/topic", m_messagesCollector.getTopic());
}
@@ -129,12 +129,12 @@ public class ServerIntegrationPahoTest {
//reconnect and publish
MqttClient anotherClient = new MqttClient("tcp://localhost:1883", "TestClient", s_dataStore);
m_callback = new TestCallback();
anotherClient.setCallback(m_callback);
m_messagesCollector = new MessageCollector();
anotherClient.setCallback(m_messagesCollector);
anotherClient.connect(options);
anotherClient.publish("/topic", "Test my payload".getBytes(), 0, false);
assertEquals("/topic", m_callback.getTopic());
assertEquals("/topic", m_messagesCollector.getTopic());
}
@@ -151,7 +151,7 @@ public class ServerIntegrationPahoTest {
m_client.connect(options);
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
assertEquals("/topic", m_callback.getTopic());
assertEquals("/topic", m_messagesCollector.getTopic());
}
/**
@@ -169,10 +169,17 @@ public class ServerIntegrationPahoTest {
m_client.disconnect();
//reconnect and publish
//options.setCleanSession(false);
m_client = new MqttClient("tcp://localhost:1883", "TestClient", s_dataStore);
MessageCollector subListener = new MessageCollector();
m_client.setCallback(subListener);
m_client.connect(options);
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
//Ugly, we need to get self notified after the publish
assertEquals("Test my payload", new String(subListener.getMessage(1).getPayload()));
assertEquals("Test my payload", new String(m_callback.getMessage(false).getPayload()));
//close
m_client.disconnect();
}
@Test
@@ -192,7 +199,7 @@ public class ServerIntegrationPahoTest {
m_client.connect(options);
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
assertEquals("/topic", m_callback.getTopic());
assertEquals("/topic", m_messagesCollector.getTopic());
}
@Test
@@ -206,7 +213,7 @@ public class ServerIntegrationPahoTest {
m_client.connect();
m_client.subscribe("/topic", 0);
assertEquals("/topic", m_callback.getTopic());
assertEquals("/topic", m_messagesCollector.getTopic());
}
@Test
@@ -218,13 +225,13 @@ public class ServerIntegrationPahoTest {
m_client.subscribe("/topic", 0);
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
//m_client.disconnect();
assertEquals("/topic", m_callback.getTopic());
assertEquals("/topic", m_messagesCollector.getTopic());
m_client.unsubscribe("/topic");
m_callback.reinit();
m_messagesCollector.reinit();
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
assertNull(m_callback.getMessage(false));
assertNull(m_messagesCollector.getMessage(false));
}
@Test
@@ -236,16 +243,16 @@ public class ServerIntegrationPahoTest {
m_client.subscribe("/topic", 0);
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
//m_client.disconnect();
assertEquals("/topic", m_callback.getTopic());
assertEquals("/topic", m_messagesCollector.getTopic());
m_client.unsubscribe("/topic");
m_client.disconnect();
m_callback.reinit();
m_messagesCollector.reinit();
m_client.connect(options);
m_client.publish("/topic", "Test my payload".getBytes(), 0, false);
assertNull(m_callback.getMessage(false));
assertNull(m_messagesCollector.getMessage(false));
}
@Test
@@ -257,7 +264,7 @@ public class ServerIntegrationPahoTest {
m_client.disconnect();
//reconnect and publish
MqttMessage message = m_callback.getMessage(true);
MqttMessage message = m_messagesCollector.getMessage(true);
assertEquals("Hello MQTT", message.toString());
assertEquals(1, message.getQos());
}
@@ -276,7 +283,7 @@ public class ServerIntegrationPahoTest {
m_client.connect(options);
assertEquals("Hello MQTT", m_callback.getMessage(true).toString());
assertEquals("Hello MQTT", m_messagesCollector.getMessage(true).toString());
}
@Test
@@ -295,7 +302,7 @@ public class ServerIntegrationPahoTest {
publishFromAnotherClient("/topic", "Hello MQTT".getBytes(), 1);
//Verify that after a reconnection the client receive the message
MqttMessage message = m_callback.getMessage(true);
MqttMessage message = m_messagesCollector.getMessage(true);
assertNotNull(message);
assertEquals("Hello MQTT", message.toString());
}
@@ -318,10 +325,10 @@ public class ServerIntegrationPahoTest {
//publish a QoS 1 message another client publish a message on the topic
publishFromAnotherClient("/topic", "Hello MQTT".getBytes(), 2);
m_callback.reinit();
m_messagesCollector.reinit();
m_client.connect(options);
MqttMessage message = m_callback.getMessage(true);
MqttMessage message = m_messagesCollector.getMessage(true);
assertEquals("Hello MQTT", message.toString());
assertEquals(2, message.getQos());
}
@@ -337,11 +344,11 @@ public class ServerIntegrationPahoTest {
//publish a QoS 2 message another client publish a message on the topic
publishFromAnotherClient("/topic", "Hello MQTT".getBytes(), 2);
m_callback.reinit();
m_messagesCollector.reinit();
m_client.connect(options);
assertNotNull(m_callback);
MqttMessage message = m_callback.getMessage(true);
assertNotNull(m_messagesCollector);
MqttMessage message = m_messagesCollector.getMessage(true);
assertNotNull(message);
assertEquals("Hello MQTT", message.toString());
}
@@ -356,11 +363,11 @@ public class ServerIntegrationPahoTest {
m_client.disconnect();
publishFromAnotherClient("/topic", "Hello MQTT 1".getBytes(), 1);
m_callback.reinit();
m_messagesCollector.reinit();
m_client.connect(options);
assertNotNull(m_callback);
MqttMessage message = m_callback.getMessage(true);
assertNotNull(m_messagesCollector);
MqttMessage message = m_messagesCollector.getMessage(true);
assertNotNull(message);
assertEquals("Hello MQTT 1", message.toString());
m_client.disconnect();
@@ -369,10 +376,10 @@ public class ServerIntegrationPahoTest {
publishFromAnotherClient("/topic", "Hello MQTT 2".getBytes(), 1);
//reconnect the second time
m_callback.reinit();
m_messagesCollector.reinit();
m_client.connect(options);
assertNotNull(m_callback);
message = m_callback.getMessage(true);
assertNotNull(m_messagesCollector);
message = m_messagesCollector.getMessage(true);
assertNotNull(message);
assertEquals("Hello MQTT 2", message.toString());
}
@@ -392,7 +399,7 @@ public class ServerIntegrationPahoTest {
MqttClientPersistence dsSubscriberA = new MqttDefaultFilePersistence(tmpDir + File.separator + "subscriberA");
MqttClient subscriberA = new MqttClient("tcp://localhost:1883", "SubscriberA", dsSubscriberA);
TestCallback cbSubscriberA = new TestCallback();
MessageCollector cbSubscriberA = new MessageCollector();
subscriberA.setCallback(cbSubscriberA);
subscriberA.connect();
subscriberA.subscribe("a/b", 1);
@@ -400,7 +407,7 @@ public class ServerIntegrationPahoTest {
MqttClientPersistence dsSubscriberB = new MqttDefaultFilePersistence(tmpDir + File.separator + "subscriberB");
MqttClient subscriberB = new MqttClient("tcp://localhost:1883", "SubscriberB", dsSubscriberB);
TestCallback cbSubscriberB = new TestCallback();
MessageCollector cbSubscriberB = new MessageCollector();
subscriberB.setCallback(cbSubscriberB);
subscriberB.connect();
subscriberB.subscribe("a/+", 2);
@@ -428,7 +435,7 @@ public class ServerIntegrationPahoTest {
MqttClientPersistence dsSubscriberA = new MqttDefaultFilePersistence(tmpDir + File.separator + "clientForSubscribe1");
MqttClient clientForSubscribe1 = new MqttClient("tcp://localhost:1883", "clientForSubscribe1", dsSubscriberA);
TestCallback cbSubscriber1 = new TestCallback();
MessageCollector cbSubscriber1 = new MessageCollector();
clientForSubscribe1.setCallback(cbSubscriber1);
clientForSubscribe1.connect();
clientForSubscribe1.subscribe("topic", 0);
@@ -442,7 +449,7 @@ public class ServerIntegrationPahoTest {
//clientForSubscribe2 connect and subscribe to /topic QoS2
MqttClientPersistence dsSubscriberB = new MqttDefaultFilePersistence(tmpDir + File.separator + "clientForSubscribe2");
MqttClient clientForSubscribe2 = new MqttClient("tcp://localhost:1883", "clientForSubscribe2", dsSubscriberB);
TestCallback cbSubscriber2 = new TestCallback();
MessageCollector cbSubscriber2 = new MessageCollector();
clientForSubscribe2.setCallback(cbSubscriber2);
clientForSubscribe2.connect();
clientForSubscribe2.subscribe("topic", 0);
@@ -465,14 +472,14 @@ public class ServerIntegrationPahoTest {
@Test
public void testForceClientDisconnection_issue116() throws Exception {
LOG.info("*** testForceClientDisconnection_issue118 ***");
TestCallback cbSubscriber1 = new TestCallback();
MessageCollector cbSubscriber1 = new MessageCollector();
MqttClient clientXA = createClient("subscriber", "X", cbSubscriber1);
clientXA.subscribe("topic", 0);
MqttClient clientXB = createClient("publisher", "X");
clientXB.publish("topic", "Hello".getBytes(), 2, false);
TestCallback cbSubscriber2 = new TestCallback();
MessageCollector cbSubscriber2 = new MessageCollector();
MqttClient clientYA = createClient("subscriber", "Y", cbSubscriber2);
clientYA.subscribe("topic", 0);
@@ -506,8 +513,8 @@ public class ServerIntegrationPahoTest {
@Test
public void checkReplayofStoredPublishResumeAfter_a_disconnect_cleanSessionFalseQoS1() throws Exception {
LOG.info("*** checkReplayofStoredPublishResumeAfter_a_disconnect_cleanSessionFalseQoS1 ***");
MessageCollector messagesCollector = new MessageCollector();
m_client.setCallback(messagesCollector);
// MessageCollector m_messagesCollector = new MessageCollector();
// m_client.setCallback(m_messagesCollector);
m_publisher.connect();
MqttConnectOptions options = new MqttConnectOptions();
@@ -519,7 +526,7 @@ public class ServerIntegrationPahoTest {
m_publisher.publish("/topic", "Hello world MQTT!!-1".getBytes(), 1, false);
//read the first message and drop the connection
MqttMessage msg = messagesCollector.getMessage(true);
MqttMessage msg = m_messagesCollector.getMessage(true);
assertEquals("Hello world MQTT!!-1", new String(msg.getPayload()));
m_client.disconnect();
@@ -528,10 +535,10 @@ public class ServerIntegrationPahoTest {
//reconnect and expect to receive the hello 2 message
m_client.connect(options);
msg = messagesCollector.getMessage(true);
msg = m_messagesCollector.getMessage(true);
assertEquals("Hello world MQTT!!-2", new String(msg.getPayload()));
msg = messagesCollector.getMessage(true);
msg = m_messagesCollector.getMessage(true);
assertEquals("Hello world MQTT!!-3", new String(msg.getPayload()));
m_client.disconnect();
}
@@ -628,7 +635,7 @@ public class ServerIntegrationPahoTest {
return createClient(clientName, storeSuffix, null);
}
protected MqttClient createClient(String clientName, String storeSuffix, TestCallback cb) throws MqttException {
protected MqttClient createClient(String clientName, String storeSuffix, MessageCollector cb) throws MqttException {
String tmpDir = System.getProperty("java.io.tmpdir");
//clientX connect and subscribe to /topic QoS2
MqttClientPersistence dsClient = new MqttDefaultFilePersistence(tmpDir + File.separator + storeSuffix + clientName);