From 751643d4c4fc32802bc88ab57cb142ad3f99de0b Mon Sep 17 00:00:00 2001 From: Michael Reiche <48999328+mikereiche@users.noreply.github.com> Date: Tue, 12 Jul 2022 16:59:31 -0700 Subject: [PATCH] Fix expiry tests so they are not so sensitive to server expiry timing. Closes #1500. --- ...hbaseTemplateKeyValueIntegrationTests.java | 41 +++++++++++-------- ...hbaseTemplateKeyValueIntegrationTests.java | 41 +++++++++++-------- 2 files changed, 49 insertions(+), 33 deletions(-) diff --git a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateKeyValueIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateKeyValueIntegrationTests.java index 38af1b2a..2529d54c 100644 --- a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateKeyValueIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateKeyValueIntegrationTests.java @@ -103,10 +103,13 @@ class CouchbaseTemplateKeyValueIntegrationTests extends JavaIntegrationTests { User foundUser = couchbaseTemplate.findById(User.class).withExpiry(Duration.ofSeconds(1)).one(user1.getId()); user1.setVersion(foundUser.getVersion());// version will have changed assertEquals(user1, foundUser); - sleepMs(3000); - - Collection foundUsers = (Collection) couchbaseTemplate.findById(User.class) - .all(Arrays.asList(user1.getId(), user2.getId())); + int tries = 0; + Collection foundUsers; + do { + sleepSecs(1); + foundUsers = (Collection) couchbaseTemplate.findById(User.class) + .all(Arrays.asList(user1.getId(), user2.getId())); + } while (tries++ < 10 && foundUsers.size() != 1 && !user2.equals(foundUsers.iterator().next())); assertEquals(1, foundUsers.size(), "should have found exactly 1 user"); assertEquals(user2, foundUsers.iterator().next()); } finally { @@ -286,24 +289,28 @@ class CouchbaseTemplateKeyValueIntegrationTests extends JavaIntegrationTests { } } // check that they are gone after a few seconds. - sleepSecs(4); - List errorList = new LinkedList(); - for (User user : users) { - User found = couchbaseTemplate.findById(user.getClass()).one(user.getId()); - if (user.getId().endsWith(UserAnnotated3.class.getSimpleName())) { - if (found == null) { - errorList.add("\nfound should be non null as it was set to have no expiry " + user.getId()); + int tries = 0; + List errorList = new LinkedList<>(); + do { + sleepSecs(1); + for (User user : users) { + errorList = new LinkedList<>(); + User found = couchbaseTemplate.findById(user.getClass()).one(user.getId()); + if (user.getId().endsWith(UserAnnotated3.class.getSimpleName())) { + if (found == null) { + errorList.add("\nfound should be non null as it was set to have no expiry " + user.getId()); + } + } else { + if (found != null) { + errorList.add("\nfound should have been null as document should be expired " + user.getId()); + } } - } else { if (found != null) { - errorList.add("\nfound should have been null as document should be expired " + user.getId()); + couchbaseTemplate.removeById(user.getClass()).one(user.getId()); } } - if (found != null) { - couchbaseTemplate.removeById(user.getClass()).one(user.getId()); - } - } + } while (tries++ < 10 && !errorList.isEmpty()); if (!errorList.isEmpty()) { throw new RuntimeException(errorList.toString()); } diff --git a/src/test/java/org/springframework/data/couchbase/core/ReactiveCouchbaseTemplateKeyValueIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/core/ReactiveCouchbaseTemplateKeyValueIntegrationTests.java index f57f4625..ba037ce5 100644 --- a/src/test/java/org/springframework/data/couchbase/core/ReactiveCouchbaseTemplateKeyValueIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/ReactiveCouchbaseTemplateKeyValueIntegrationTests.java @@ -103,10 +103,14 @@ class ReactiveCouchbaseTemplateKeyValueIntegrationTests extends JavaIntegrationT .one(user1.getId()).block(); user1.setVersion(foundUser.getVersion());// version will have changed assertEquals(user1, foundUser); - sleepMs(3000); - Collection foundUsers = (Collection) reactiveCouchbaseTemplate.findById(User.class) - .all(Arrays.asList(user1.getId(), user2.getId())).collectList().block(); + int tries = 0; + Collection foundUsers; + do { + sleepSecs(1); + foundUsers = (Collection) reactiveCouchbaseTemplate.findById(User.class) + .all(Arrays.asList(user1.getId(), user2.getId())).collectList().block(); + } while (tries++ < 10 && foundUsers.size() != 1 && !user2.equals(foundUsers.iterator().next())); assertEquals(1, foundUsers.size(), "should have found exactly 1 user"); assertEquals(user2, foundUsers.iterator().next()); } finally { @@ -230,23 +234,28 @@ class ReactiveCouchbaseTemplateKeyValueIntegrationTests extends JavaIntegrationT } } // check that they are gone after a few seconds. - sleepSecs(4); - List errorList = new LinkedList(); - for (User user : users) { - User found = reactiveCouchbaseTemplate.findById(user.getClass()).one(user.getId()).block(); - if (user.getId().endsWith(UserAnnotated3.class.getSimpleName())) { - if (found == null) { - errorList.add("\nfound should be non null as it was set to have no expiry " + user.getId()); + int tries = 0; + List errorList = new LinkedList<>(); + do { + sleepSecs(1); + for (User user : users) { + errorList = new LinkedList<>(); + User found = reactiveCouchbaseTemplate.findById(user.getClass()).one(user.getId()).block(); + if (user.getId().endsWith(UserAnnotated3.class.getSimpleName())) { + if (found == null) { + errorList.add("\nfound should be non null as it was set to have no expiry " + user.getId()); + } + } else { + if (found != null) { + errorList.add("\nfound should have been null as document should be expired " + user.getId()); + } } - } else { if (found != null) { - errorList.add("\nfound should have been null as document should be expired " + user.getId()); + couchbaseTemplate.removeById(user.getClass()).one(user.getId()); } } - if (found != null) { - couchbaseTemplate.removeById(user.getClass()).one(user.getId()); - } - } + + } while (tries++ < 10 && !errorList.isEmpty()); if (!errorList.isEmpty()) { throw new RuntimeException(errorList.toString());