diff --git a/testing/notification-test-aws/src/test/java/org/opengroup/osdu/notification/subscriptions/TestNotificationsEndpoint.java b/testing/notification-test-aws/src/test/java/org/opengroup/osdu/notification/subscriptions/TestNotificationsEndpoint.java index e37a8479fca5e895007049b11a0879592c583058..941c712492a1f580cacd657e1fdd90b54ba228d3 100644 --- a/testing/notification-test-aws/src/test/java/org/opengroup/osdu/notification/subscriptions/TestNotificationsEndpoint.java +++ b/testing/notification-test-aws/src/test/java/org/opengroup/osdu/notification/subscriptions/TestNotificationsEndpoint.java @@ -388,23 +388,38 @@ public class TestNotificationsEndpoint { PubSubInfo expectedStorageMessage = storageUtils.createAndPutRecord(UUID.randomUUID().toString(), INDEXER_LEGAL_TAG_NAME); // Get Queue Messages - List<List<Message>> messagesLists = pollForMessages(600, 1, storageQueue, indexerQueue); - assertEquals(2, messagesLists.size()); - List<Message> storageSQSMessages = messagesLists.get(0); - List<Message> indexerSQSMessages = messagesLists.get(1); - - Instant end = Instant.now(); - - storageUtils.assertFirstMessagesSimilar(expectedStorageMessage, storageSQSMessages); - IndexerMessage indexerMessage = AwsTestUtils.unwrapFirst(indexerSQSMessages, IndexerMessage[].class); - assertEquals(expectedStorageMessage.getKind(), indexerMessage.kind()); - assertEquals(expectedStorageMessage.getId(), indexerMessage.id()); - assertEquals("create", indexerMessage.operationType()); - assertEquals("SUCCESS", indexerMessage.status()); - assertNotNull(indexerMessage.indexProgress()); - assertEquals(200, indexerMessage.indexProgress().statusCode()); - Instant lastChanged = Instant.parse(indexerMessage.indexProgress().lastUpdateTime()); - assertTrue(lastChanged.isAfter(start) && lastChanged.isBefore(end)); + List<List<Message>> messagesLists = pollForMessages(storageQueue); + assertEquals(1, messagesLists.size()); + List<Message> sqsMessages = messagesLists.get(0); + storageUtils.assertFirstMessagesSimilar(expectedStorageMessage, sqsMessages); + int failedCount = 0; + int timeout = 300; + while (failedCount < MAX_RETRIES) { + messagesLists = pollForMessages(timeout, 1, indexerQueue); + timeout = 30; + assertEquals(1, messagesLists.size()); + Instant end = Instant.now(); + sqsMessages = messagesLists.get(0); + IndexerMessage indexerMessage = AwsTestUtils.unwrapFirst(sqsMessages, IndexerMessage[].class); + + assertEquals(expectedStorageMessage.getKind(), indexerMessage.kind()); + assertEquals(expectedStorageMessage.getId(), indexerMessage.id()); + assertEquals("create", indexerMessage.operationType()); + if (indexerMessage.status().equals("SUCCESS")) { + assertEquals("SUCCESS", indexerMessage.status()); + assertNotNull(indexerMessage.indexProgress()); + assertEquals(200, indexerMessage.indexProgress().statusCode()); + Instant lastChanged = Instant.parse(indexerMessage.indexProgress().lastUpdateTime()); + assertTrue(lastChanged.isAfter(start) && lastChanged.isBefore(end)); + break; + } else { + + System.out.printf("The %d time checking the first successful message failed with status %s. Deleting message and getting another one.\n", failedCount, indexerMessage.status()); + Message toDelete = sqsMessages.get(0); + sqsClient.deleteMessage(indexerQueue.queueUrl, toDelete.getReceiptHandle()); + failedCount++; + } + } } catch (Exception e) { System.err.println(e.toString()); e.printStackTrace();