/** * This method checks if the offline publishing queue has the right * payload data. The queue is cloned in order to be polled for verification. */ private void checkOfflinePublishingQueue(AWSIotMqttManager testClient) { ConcurrentLinkedQueue<AWSIotMqttQueueMessage> queue = new ConcurrentLinkedQueue<AWSIotMqttQueueMessage>(testClient.getMqttMessageQueue()); int i = 0; while (!queue.isEmpty()) { AWSIotMqttQueueMessage message = queue.poll(); System.out.println("Message = " + new String(message.getMessage())); assertEquals("test payload " + i, new String(message.getMessage())); i++; } } }
assertEquals(1, testClient.getMqttMessageQueue().size()); assertEquals(9, testClient.getMqttMessageQueue().size()); assertEquals(10, testClient.getMqttMessageQueue().size()); assertEquals(11, testClient.getMqttMessageQueue().size()); testClient.getMqttMessageQueue().poll().getMessage(); assertEquals(10, testClient.getMqttMessageQueue().size());
assertEquals(1, testClient.getMqttMessageQueue().size()); assertEquals(9, testClient.getMqttMessageQueue().size()); assertEquals(10, testClient.getMqttMessageQueue().size()); SimpleUnitTestObject suto = new SimpleUnitTestObject(); testClient.publishString("test payload 10", "test/topic", AWSIotMqttQos.QOS0, mdcb, suto); assertEquals(10, testClient.getMqttMessageQueue().size());
@Test public void testPublishWithCallbackConnecting() throws Exception { MockMqttClient mockClient = new MockMqttClient(); AWSIotMqttManager testClient = new AWSIotMqttManager("test-client", Region.getRegion(Regions.US_EAST_1), TEST_ENDPOINT_PREFIX); testClient.setMqttClient(mockClient); testClient.setOfflinePublishQueueBound(100); TestClientStatusCallback csb = new TestClientStatusCallback(); TestMessageDeliveryCallback mdcb = new TestMessageDeliveryCallback(); KeyStore testKeystore = AWSIotKeystoreHelper .getIotKeystore(CERT_ID, KEYSTORE_PATH, KEYSTORE_NAME, KEYSTORE_PASSWORD); testClient.connect(testKeystore, csb); assertEquals(AWSIotMqttClientStatusCallback.AWSIotMqttClientStatus.Connecting, csb.statuses.get(0)); // publish, though not yet connected testClient.publishString("test payload 0", "test/topic", AWSIotMqttQos.QOS0, mdcb, "TEST_TOKEN"); // we don't queue when Disconnected (user disconnect or auto-reconnect exhausted) assertEquals(0, testClient.getMqttMessageQueue().size()); // callback not called assertEquals(1, mdcb.statuses.size()); assertEquals(1, mdcb.userDatas.size()); }
assertEquals(1, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls); assertEquals(2, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls); assertEquals(3, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls); assertEquals(2, testClient.getMqttMessageQueue().size()); assertEquals(3, testClient.getMqttMessageQueue().size()); assertEquals(0, testClient.getMqttMessageQueue().size());
@Test public void testPublishWithCallbackReconnecting() throws Exception { MockMqttClient mockClient = new MockMqttClient(); AWSIotMqttManager testClient = new AWSIotMqttManager("test-client", Region.getRegion(Regions.US_EAST_1), TEST_ENDPOINT_PREFIX); testClient.setMqttClient(mockClient); testClient.setOfflinePublishQueueEnabled(false); TestClientStatusCallback csb = new TestClientStatusCallback(); TestMessageDeliveryCallback mdcb = new TestMessageDeliveryCallback(); KeyStore testKeystore = AWSIotKeystoreHelper .getIotKeystore(CERT_ID, KEYSTORE_PATH, KEYSTORE_NAME, KEYSTORE_PASSWORD); testClient.connect(testKeystore, csb); mockClient.mockConnectFail(); assertEquals(AWSIotMqttClientStatusCallback.AWSIotMqttClientStatus.Reconnecting, csb.statuses.get(1)); // publish, though not yet connected final String userData = "TEST_TOKEN"; testClient.publishString("test payload 0", "test/topic", AWSIotMqttQos.QOS0, mdcb, userData); // we don't queue when Disconnected (user disconnect or auto-reconnect exhausted) assertEquals(0, testClient.getMqttMessageQueue().size()); // callback not called assertEquals(1, mdcb.statuses.size()); assertEquals(AWSIotMqttMessageDeliveryCallback.MessageDeliveryStatus.Fail, mdcb.statuses.get(0)); assertEquals(1, mdcb.userDatas.size()); assertEquals(userData, mdcb.userDatas.get(0)); }
@Test(expected = AmazonClientException.class) public void testPublishConnecting() throws Exception { MockMqttClient mockClient = new MockMqttClient(); AWSIotMqttManager testClient = new AWSIotMqttManager("test-client", Region.getRegion(Regions.US_EAST_1), TEST_ENDPOINT_PREFIX); testClient.setMqttClient(mockClient); testClient.setOfflinePublishQueueBound(100); TestClientStatusCallback csb = new TestClientStatusCallback(); KeyStore testKeystore = AWSIotKeystoreHelper .getIotKeystore(CERT_ID, KEYSTORE_PATH, KEYSTORE_NAME, KEYSTORE_PASSWORD); testClient.connect(testKeystore, csb); assertEquals(AWSIotMqttClientStatusCallback.AWSIotMqttClientStatus.Connecting, csb.statuses.get(0)); // publish, though not yet connected testClient.publishString("test payload 0", "test/topic", AWSIotMqttQos.QOS0); // we don't queue when Disconnected (user disconnect or auto-reconnect exhausted) assertEquals(0, testClient.getMqttMessageQueue().size()); }
assertEquals(1, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls); assertEquals(2, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls); assertEquals(3, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls); assertEquals(0, testClient.getMqttMessageQueue().size()); assertEquals(3, mockClient.publishCalls);
assertEquals(1, testClient.getMqttMessageQueue().size()); assertEquals(9, testClient.getMqttMessageQueue().size()); testClient.publishString("test payload 9", "test/topic", AWSIotMqttQos.QOS1, mdcb, "TEST_TOKEN_9"); assertEquals(10, testClient.getMqttMessageQueue().size()); assertEquals(0, mdcb.statuses.size()); assertEquals(10, testClient.getMqttMessageQueue().size()); assertEquals("test/topic", mockClient.mostRecentPublishTopic); assertEquals(AWSIotMqttQos.QOS1.asInt(), mockClient.mostRecentPublishQoS); assertEquals(9, testClient.getMqttMessageQueue().size()); assertEquals(10, testClient.getMqttMessageQueue().size()); assertEquals(10, testClient.getMqttMessageQueue().size()); assertEquals(0, testClient.getMqttMessageQueue().size());
@Test public void testPublishWithCallbackDisconnected() throws Exception { MockMqttClient mockClient = new MockMqttClient(); AWSIotMqttManager testClient = new AWSIotMqttManager("test-client", Region.getRegion(Regions.US_EAST_1), TEST_ENDPOINT_PREFIX); testClient.setMqttClient(mockClient); testClient.setOfflinePublishQueueBound(100); TestClientStatusCallback csb = new TestClientStatusCallback(); TestMessageDeliveryCallback mdcb = new TestMessageDeliveryCallback(); KeyStore testKeystore = AWSIotKeystoreHelper .getIotKeystore(CERT_ID, KEYSTORE_PATH, KEYSTORE_NAME, KEYSTORE_PASSWORD); testClient.connect(testKeystore, csb); mockClient.mockConnectSuccess(); testClient.disconnect(); testClient.publishString("test payload 0", "test/topic", AWSIotMqttQos.QOS0, mdcb, "TEST_TOKEN"); // we don't queue when Disconnected (user disconnect or auto-reconnect exhausted) assertEquals(0, testClient.getMqttMessageQueue().size()); // callback not called assertEquals(1, mdcb.statuses.size()); assertEquals(1, mdcb.userDatas.size()); }
@Test(expected = AmazonClientException.class) public void testPublishDisconnected() throws Exception { MockMqttClient mockClient = new MockMqttClient(); AWSIotMqttManager testClient = new AWSIotMqttManager("test-client", Region.getRegion(Regions.US_EAST_1), TEST_ENDPOINT_PREFIX); testClient.setMqttClient(mockClient); testClient.setOfflinePublishQueueBound(100); TestClientStatusCallback csb = new TestClientStatusCallback(); KeyStore testKeystore = AWSIotKeystoreHelper .getIotKeystore(CERT_ID, KEYSTORE_PATH, KEYSTORE_NAME, KEYSTORE_PASSWORD); testClient.connect(testKeystore, csb); mockClient.mockConnectSuccess(); testClient.disconnect(); testClient.publishString("test payload 0", "test/topic", AWSIotMqttQos.QOS0); // we don't queue when Disconnected (user disconnect or auto-reconnect exhausted) assertEquals(0, testClient.getMqttMessageQueue().size()); }
assertEquals(1, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls); assertEquals(2, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls); assertEquals(3, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls); assertEquals(2, testClient.getMqttMessageQueue().size()); assertEquals(0, mdcb1.statuses.size()); assertEquals(0, mdcb3.statuses.size()); assertEquals(1, testClient.getMqttMessageQueue().size()); assertEquals(1, mdcb1.statuses.size()); assertEquals(0, mdcb3.statuses.size());
assertEquals(1, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls); assertEquals(2, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls); assertEquals(3, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls);
assertEquals(10, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls); assertEquals("test/topic", mockClient.mostRecentPublishTopic); assertEquals(AWSIotMqttQos.QOS0.asInt(), mockClient.mostRecentPublishQoS); assertEquals(9, testClient.getMqttMessageQueue().size());
assertEquals(10, testClient.getMqttMessageQueue().size()); assertEquals(0, mockClient.publishCalls); checkOfflinePublishingQueue(testClient); assertEquals("test/topic", mockClient.mostRecentPublishTopic); assertEquals(AWSIotMqttQos.QOS0.asInt(), mockClient.mostRecentPublishQoS); assertEquals(9, testClient.getMqttMessageQueue().size());