From e6f686e857ce8a0cfa4fcabccadd2752d3253877 Mon Sep 17 00:00:00 2001 From: ssandy83 Date: Sat, 22 Oct 2022 19:52:32 +0530 Subject: [PATCH] ISSUE-1987: Replace thread.sleep with awaitility library (#8305) * ISSUE-1987: Replace thread.sleep with awaitility library * ISSUE-1987: Replace thread.sleep with awaitility library * ISSUE-1987: increase polling period to 100ms Co-authored-by: ssundaresha2 --- .../service/resources/EntityResourceTest.java | 22 +++++----- .../events/WebhookCallbackResource.java | 9 ++-- .../resources/events/WebhookResourceTest.java | 44 ++++++++++--------- .../service/util/LoginAttemptCacheTest.java | 9 ++-- 4 files changed, 45 insertions(+), 39 deletions(-) diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java index 4a99954d689..1cc3e47145f 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/EntityResourceTest.java @@ -81,6 +81,7 @@ import java.util.Map.Entry; import java.util.Optional; import java.util.Random; import java.util.UUID; +import java.util.concurrent.TimeUnit; import java.util.function.BiConsumer; import java.util.function.Predicate; import javax.json.JsonPatch; @@ -89,6 +90,7 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import lombok.extern.slf4j.Slf4j; import org.apache.http.client.HttpResponseException; +import org.awaitility.Awaitility; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -1842,7 +1844,7 @@ public abstract class EntityResourceTest finalChangeEvents = changeEvents; + Awaitility.await() + .atLeast(iteration * 100L, TimeUnit.MILLISECONDS) + .until(() -> finalChangeEvents != null && finalChangeEvents.getData().size() > 0); continue; } @@ -1916,11 +1917,10 @@ public abstract class EntityResourceTest finalChangeEvents = changeEvents; + Awaitility.await() + .atMost(iteration * 10L, TimeUnit.MILLISECONDS) + .until(() -> finalChangeEvents != null && finalChangeEvents.getData().size() > 0); continue; } for (ChangeEvent event : changeEvents.getData()) { diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/events/WebhookCallbackResource.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/events/WebhookCallbackResource.java index 90ca18dc323..e6149795961 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/events/WebhookCallbackResource.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/events/WebhookCallbackResource.java @@ -4,10 +4,12 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.openmetadata.common.utils.CommonUtil.listOrEmpty; import java.io.IOException; +import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.atomic.AtomicBoolean; import javax.ws.rs.Consumes; import javax.ws.rs.HeaderParam; import javax.ws.rs.POST; @@ -22,6 +24,7 @@ import javax.ws.rs.core.UriInfo; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; +import org.awaitility.Awaitility; import org.openmetadata.common.utils.CommonUtil; import org.openmetadata.schema.type.ChangeEvent; import org.openmetadata.schema.type.EventType; @@ -72,11 +75,7 @@ public class WebhookCallbackResource { public Response receiveEventWithTimeout( @Context UriInfo uriInfo, @Context SecurityContext securityContext, ChangeEventList events) { addEventDetails("simulate-timeout", events); - try { - Thread.sleep(15 * 1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } + Awaitility.await().pollDelay(Duration.ofSeconds(15L)).untilTrue(new AtomicBoolean(true)); return Response.ok().build(); } diff --git a/openmetadata-service/src/test/java/org/openmetadata/service/resources/events/WebhookResourceTest.java b/openmetadata-service/src/test/java/org/openmetadata/service/resources/events/WebhookResourceTest.java index 663f73e9332..2c2a822e8e9 100644 --- a/openmetadata-service/src/test/java/org/openmetadata/service/resources/events/WebhookResourceTest.java +++ b/openmetadata-service/src/test/java/org/openmetadata/service/resources/events/WebhookResourceTest.java @@ -25,16 +25,14 @@ import static org.openmetadata.service.util.TestUtils.ADMIN_AUTH_HEADERS; import com.fasterxml.jackson.core.type.TypeReference; import java.io.IOException; import java.net.URI; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.time.Duration; +import java.util.*; import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.atomic.AtomicBoolean; import javax.ws.rs.core.Response; import lombok.extern.slf4j.Slf4j; import org.apache.http.client.HttpResponseException; +import org.awaitility.Awaitility; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInfo; import org.openmetadata.schema.api.events.CreateWebhook; @@ -141,7 +139,7 @@ public class WebhookResourceTest extends EntityResourceTest callbackEvents = details.getEvents(); @@ -419,12 +419,12 @@ public class WebhookResourceTest extends EntityResourceTest received, int iteration, long sleepMillis) - throws InterruptedException, HttpResponseException { + throws HttpResponseException { int i = 0; List expected = getChangeEvents(entityCreated, entityUpdated, entityDeleted, timestamp, ADMIN_AUTH_HEADERS).getData(); while (expected.size() < received.size() && i < iteration) { - Thread.sleep(sleepMillis); + Awaitility.await().atLeast(Duration.ofMillis(sleepMillis)).untilFalse(new AtomicBoolean(false)); i++; } // Refresh the expected events again by getting list of events to compare with webhook received events @@ -445,12 +445,16 @@ public class WebhookResourceTest extends EntityResourceTest Assert.assertTrue(true)); assertFalse(cache.isLoginBlocked(testKey)); // Check Successful Login @@ -39,7 +42,7 @@ public class LoginAttemptCacheTest { assertFalse(cache.isLoginBlocked(testKey)); // Check Eviction - Thread.sleep(2000); + Awaitility.await().pollDelay(Duration.ofSeconds(2L)).untilAsserted(() -> Assert.assertTrue(true)); assertFalse(cache.isLoginBlocked(testKey)); } }