Skip to content

Commit b349abe

Browse files
authored
fix(aws-android-sdk-iot): fix message queue not respecting size limit (#2565)
* fix(aws-android-sdk-iot): fix message queue not respecting size limit * fix test
1 parent b182ac2 commit b349abe

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

aws-android-sdk-iot/src/main/java/com/amazonaws/mobileconnectors/iot/AWSIotMqttManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1685,7 +1685,7 @@ void putMessageInQueueAndNotify(byte[] data, String topic, AWSIotMqttQos qos,
16851685
new AmazonClientException("Failed to publish the message. Queue is full and set to hold onto the oldest messages."));
16861686
return;
16871687
} else {
1688-
mqttMessageQueue.remove(0);
1688+
mqttMessageQueue.remove();
16891689
}
16901690
}
16911691

aws-android-sdk-iot/src/test/java/com/amazonaws/mobileconnectors/iot/AWSIotMqttManagerTest.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2331,13 +2331,11 @@ public void testOfflinePublishQueueLimitNewest() throws Exception {
23312331

23322332
// queue is now full - publish one more message to ensure queue keeps newest messages
23332333
testClient.publishString("test payload 10", "test/topic", AWSIotMqttQos.QOS0);
2334-
assertEquals(11, testClient.getMqttMessageQueue().size());
2334+
assertEquals(10, testClient.getMqttMessageQueue().size());
23352335

23362336
// verify the payload
2337-
checkOfflinePublishingQueue(testClient);
2338-
2339-
testClient.getMqttMessageQueue().poll().getMessage();
2340-
assertEquals(10, testClient.getMqttMessageQueue().size());
2337+
// 0th (oldest) message has been removed so it should contain 1-10
2338+
checkOfflinePublishingQueue(testClient, 1);
23412339
}
23422340

23432341
@Test
@@ -3138,16 +3136,18 @@ public void refresh() {
31383136
* This method checks if the offline publishing queue has the right
31393137
* payload data. The queue is cloned in order to be polled for verification.
31403138
*/
3141-
private void checkOfflinePublishingQueue(AWSIotMqttManager testClient) {
3142-
ConcurrentLinkedQueue<AWSIotMqttQueueMessage> queue =
3139+
private void checkOfflinePublishingQueue(AWSIotMqttManager testClient, int start) {
3140+
ConcurrentLinkedQueue<AWSIotMqttQueueMessage> queue =
31433141
new ConcurrentLinkedQueue<AWSIotMqttQueueMessage>(testClient.getMqttMessageQueue());
3144-
int i = 0;
3142+
int i = start;
31453143
while (!queue.isEmpty()) {
31463144
AWSIotMqttQueueMessage message = queue.poll();
31473145
System.out.println("Message = " + new String(message.getMessage()));
3148-
assertEquals("test payload " + i,
3149-
new String(message.getMessage()));
3150-
i++;
3146+
assertEquals("test payload " + i++, new String(message.getMessage()));
31513147
}
31523148
}
3149+
3150+
private void checkOfflinePublishingQueue(AWSIotMqttManager testClient) {
3151+
checkOfflinePublishingQueue(testClient, 0);
3152+
}
31533153
}

0 commit comments

Comments
 (0)