diff --git a/build.gradle b/build.gradle index 153bd81..17317b9 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ plugins { ext { - VERSION = "1.6.1" + VERSION = "1.6.2" GROUP_ID = "com.absmartly.sdk" slf4jVersion = "1.7.30" diff --git a/core-api/src/test/java/com/absmartly/sdk/ABSmartlyTest.java b/core-api/src/test/java/com/absmartly/sdk/ABSmartlyTest.java index 3ad0b69..7b5e7a2 100644 --- a/core-api/src/test/java/com/absmartly/sdk/ABSmartlyTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/ABSmartlyTest.java @@ -13,6 +13,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.MockedConstruction; import org.mockito.MockedStatic; +import org.mockito.Mockito; import com.absmartly.sdk.java.time.Clock; import com.absmartly.sdk.json.ContextData; @@ -83,9 +84,9 @@ void createContext() { final ArgumentCaptor audienceMatcherCaptor = ArgumentCaptor .forClass(AudienceMatcher.class); - contextStatic.verify(times(1), + contextStatic.verify(Mockito.timeout(5000).times(1), () -> Context.create(any(), any(), any(), any(), any(), any(), any(), any(), any())); - contextStatic.verify(times(1), + contextStatic.verify(Mockito.timeout(5000).times(1), () -> Context.create(clockCaptor.capture(), configCaptor.capture(), schedulerCaptor.capture(), dataFutureCaptor.capture(), dataProviderCaptor.capture(), eventHandlerCaptor.capture(), eventLoggerCaptor.capture(), variableParserCaptor.capture(), @@ -124,7 +125,7 @@ void createContextWith() { final Context context = absmartly.createContextWith(contextConfig, data); assertSame(contextMock, context); - verify(dataProviderCtor.constructed().get(0), times(0)).getContextData(); + verify(dataProviderCtor.constructed().get(0), Mockito.timeout(5000).times(0)).getContextData(); final ArgumentCaptor clockCaptor = ArgumentCaptor.forClass(Clock.class); final ArgumentCaptor configCaptor = ArgumentCaptor.forClass(ContextConfig.class); @@ -143,9 +144,9 @@ void createContextWith() { final ArgumentCaptor audienceMatcherCaptor = ArgumentCaptor .forClass(AudienceMatcher.class); - contextStatic.verify(times(1), + contextStatic.verify(Mockito.timeout(5000).times(1), () -> Context.create(any(), any(), any(), any(), any(), any(), any(), any(), any())); - contextStatic.verify(times(1), + contextStatic.verify(Mockito.timeout(5000).times(1), () -> Context.create(clockCaptor.capture(), configCaptor.capture(), schedulerCaptor.capture(), dataFutureCaptor.capture(), dataProviderCaptor.capture(), eventHandlerCaptor.capture(), eventLoggerCaptor.capture(), variableParserCaptor.capture(), @@ -177,7 +178,7 @@ void getContextData() { final ABSmartly absmartly = ABSmartly.create(config); final CompletableFuture contextDataFuture = absmartly.getContextData(); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); assertSame(dataFuture, contextDataFuture); } @@ -234,9 +235,9 @@ void createContextWithCustomImpls() { final ArgumentCaptor variableParserCaptor = ArgumentCaptor.forClass(VariableParser.class); final ArgumentCaptor audienceMatcher = ArgumentCaptor.forClass(AudienceMatcher.class); - contextStatic.verify(times(1), + contextStatic.verify(Mockito.timeout(5000).times(1), () -> Context.create(any(), any(), any(), any(), any(), any(), any(), any(), any())); - contextStatic.verify(times(1), + contextStatic.verify(Mockito.timeout(5000).times(1), () -> Context.create(clockCaptor.capture(), configCaptor.capture(), schedulerCaptor.capture(), dataFutureCaptor.capture(), dataProviderCaptor.capture(), eventHandlerCaptor.capture(), eventLoggerCaptor.capture(), variableParserCaptor.capture(), audienceMatcher.capture())); @@ -274,7 +275,7 @@ void close() throws IOException, InterruptedException { absmartly.close(); - verify(scheduler, times(1)).awaitTermination(anyLong(), any()); + verify(scheduler, Mockito.timeout(5000).times(1)).awaitTermination(anyLong(), any()); } } } diff --git a/core-api/src/test/java/com/absmartly/sdk/ClientTest.java b/core-api/src/test/java/com/absmartly/sdk/ClientTest.java index 66bcff9..660d337 100644 --- a/core-api/src/test/java/com/absmartly/sdk/ClientTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/ClientTest.java @@ -12,6 +12,7 @@ import org.junit.jupiter.api.Test; import org.mockito.MockedConstruction; import org.mockito.MockedStatic; +import org.mockito.Mockito; import com.absmartly.sdk.java.nio.charset.StandardCharsets; import com.absmartly.sdk.json.ContextData; @@ -104,15 +105,18 @@ void createWithDefaults() { client.publish(event); assertDoesNotThrow(client::close); - verify(httpClient, times(1)).get("https://localhost/v1/context", expectedQuery, null); - verify(httpClient, times(1)).put("https://localhost/v1/context", null, expectedHeaders, publishBytes); - verify(httpClient, times(1)).close(); + verify(httpClient, Mockito.timeout(5000).times(1)).get("https://localhost/v1/context", expectedQuery, null); + verify(httpClient, Mockito.timeout(5000).times(1)).put("https://localhost/v1/context", null, + expectedHeaders, publishBytes); + verify(httpClient, Mockito.timeout(5000).times(1)).close(); - verify(deserCtor.constructed().get(0), times(1)).deserialize(any(), anyInt(), anyInt()); - verify(deserCtor.constructed().get(0), times(1)).deserialize(dataBytes, 0, dataBytes.length); + verify(deserCtor.constructed().get(0), Mockito.timeout(5000).times(1)).deserialize(any(), anyInt(), + anyInt()); + verify(deserCtor.constructed().get(0), Mockito.timeout(5000).times(1)).deserialize(dataBytes, 0, + dataBytes.length); - verify(serCtor.constructed().get(0), times(1)).serialize(any()); - verify(serCtor.constructed().get(0), times(1)).serialize(event); + verify(serCtor.constructed().get(0), Mockito.timeout(5000).times(1)).serialize(any()); + verify(serCtor.constructed().get(0), Mockito.timeout(5000).times(1)).serialize(event); } } @@ -194,8 +198,8 @@ void getContextDataExceptionallyHTTP() { assertTrue(actual.getCause() instanceof Exception); assertEquals("Internal Server Error", actual.getCause().getMessage()); - verify(httpClient, times(1)).get("https://localhost/v1/context", expectedQuery, null); - verify(deser, times(0)).deserialize(any(), anyInt(), anyInt()); + verify(httpClient, Mockito.timeout(5000).times(1)).get("https://localhost/v1/context", expectedQuery, null); + verify(deser, Mockito.timeout(5000).times(0)).deserialize(any(), anyInt(), anyInt()); } @Test @@ -223,8 +227,8 @@ void getContextDataExceptionallyConnection() { final CompletionException actual = assertThrows(CompletionException.class, dataFuture::join); assertSame(actual.getCause(), failure); - verify(httpClient, times(1)).get("https://localhost/v1/context", expectedQuery, null); - verify(deser, times(0)).deserialize(any(), anyInt(), anyInt()); + verify(httpClient, Mockito.timeout(5000).times(1)).get("https://localhost/v1/context", expectedQuery, null); + verify(deser, Mockito.timeout(5000).times(0)).deserialize(any(), anyInt(), anyInt()); } @Test @@ -255,9 +259,10 @@ void publish() { final CompletableFuture publishFuture = client.publish(event); publishFuture.join(); - verify(ser, times(1)).serialize(event); - verify(httpClient, times(1)).put(any(), any(), any(), any()); - verify(httpClient, times(1)).put("https://localhost/v1/context", null, expectedHeaders, bytes); + verify(ser, Mockito.timeout(5000).times(1)).serialize(event); + verify(httpClient, Mockito.timeout(5000).times(1)).put(any(), any(), any(), any()); + verify(httpClient, Mockito.timeout(5000).times(1)).put("https://localhost/v1/context", null, expectedHeaders, + bytes); } @Test @@ -291,8 +296,9 @@ void publishExceptionallyHTTP() { assertTrue(actual.getCause() instanceof Exception); assertEquals("Internal Server Error", actual.getCause().getMessage()); - verify(ser, times(1)).serialize(event); - verify(httpClient, times(1)).put("https://localhost/v1/context", null, expectedHeaders, bytes); + verify(ser, Mockito.timeout(5000).times(1)).serialize(event); + verify(httpClient, Mockito.timeout(5000).times(1)).put("https://localhost/v1/context", null, expectedHeaders, + bytes); } @Test @@ -326,7 +332,8 @@ void publishExceptionallyConnection() { final CompletionException actual = assertThrows(CompletionException.class, publishFuture::join); assertSame(actual.getCause(), failure); - verify(ser, times(1)).serialize(event); - verify(httpClient, times(1)).put("https://localhost/v1/context", null, expectedHeaders, bytes); + verify(ser, Mockito.timeout(5000).times(1)).serialize(event); + verify(httpClient, Mockito.timeout(5000).times(1)).put("https://localhost/v1/context", null, expectedHeaders, + bytes); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/ContextTest.java b/core-api/src/test/java/com/absmartly/sdk/ContextTest.java index 081fd7f..0abe1c0 100644 --- a/core-api/src/test/java/com/absmartly/sdk/ContextTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/ContextTest.java @@ -1,10 +1,25 @@ package com.absmartly.sdk; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.anyLong; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import java.util.*; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; import java.util.concurrent.ExecutionException; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; @@ -20,7 +35,13 @@ import org.mockito.Mockito; import com.absmartly.sdk.java.time.Clock; -import com.absmartly.sdk.json.*; +import com.absmartly.sdk.json.Attribute; +import com.absmartly.sdk.json.ContextData; +import com.absmartly.sdk.json.Experiment; +import com.absmartly.sdk.json.Exposure; +import com.absmartly.sdk.json.GoalAchievement; +import com.absmartly.sdk.json.PublishEvent; +import com.absmartly.sdk.json.Unit; class ContextTest extends TestUtils { final Map units = mapOf( @@ -215,13 +236,15 @@ void callsEventLoggerWhenReady() { dataFuture.complete(data); context.waitUntilReady(); - verify(eventLogger, times(1)).handleEvent(context, ContextEventLogger.EventType.Ready, data); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(context, ContextEventLogger.EventType.Ready, + data); } @Test void callsEventLoggerWithCompletedFuture() { final Context context = createReadyContext(); - verify(eventLogger, times(1)).handleEvent(context, ContextEventLogger.EventType.Ready, data); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(context, ContextEventLogger.EventType.Ready, + data); } @Test @@ -232,7 +255,8 @@ void callsEventLoggerWithException() { dataFuture.completeExceptionally(error); context.waitUntilReady(); - verify(eventLogger, times(1)).handleEvent(context, ContextEventLogger.EventType.Error, error); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(context, ContextEventLogger.EventType.Error, + error); } @Test @@ -457,15 +481,15 @@ void startsRefreshTimerWhenReady() { dataFuture.complete(data); context.waitUntilReady(); - verify(scheduler, times(1)).scheduleWithFixedDelay(any(), eq(config.getRefreshInterval()), + verify(scheduler, Mockito.timeout(5000).times(1)).scheduleWithFixedDelay(any(), eq(config.getRefreshInterval()), eq(config.getRefreshInterval()), eq(TimeUnit.MILLISECONDS)); - verify(dataProvider, times(0)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(0)).getContextData(); when(dataProvider.getContextData()).thenReturn(refreshDataFutureReady); runnable.get().run(); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); } @Test @@ -484,7 +508,7 @@ void doestNotStartRefreshTimerWhenFailed() { assertTrue(context.isFailed()); - verify(scheduler, times(0)).scheduleWithFixedDelay(any(), anyLong(), anyLong(), any()); + verify(scheduler, Mockito.timeout(5000).times(0)).scheduleWithFixedDelay(any(), anyLong(), anyLong(), any()); } @Test @@ -511,12 +535,13 @@ void startsPublishTimeoutWhenReadyWithQueueNotEmpty() { dataFuture.complete(data); context.waitUntilReady(); - verify(scheduler, times(1)).schedule((Runnable) any(), eq(config.getPublishDelay()), eq(TimeUnit.MILLISECONDS)); - verify(eventHandler, times(0)).publish(any(), any()); + verify(scheduler, Mockito.timeout(5000).times(1)).schedule((Runnable) any(), eq(config.getPublishDelay()), + eq(TimeUnit.MILLISECONDS)); + verify(eventHandler, Mockito.timeout(5000).times(0)).publish(any(), any()); runnable.get().run(); - verify(eventHandler, times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); } @Test @@ -559,8 +584,8 @@ void setUnitsBeforeReady() { context.publish(); - verify(eventHandler, times(1)).publish(any(), any()); - verify(eventHandler, times(1)).publish(context, expected); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(context, expected); } @Test @@ -975,8 +1000,8 @@ void getVariableValueQueuesExposureWithAudienceMismatchFalseOnAudienceMatch() { context.publish(); - verify(eventHandler, times(1)).publish(any(), any()); - verify(eventHandler, times(1)).publish(context, expected); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(context, expected); } @Test @@ -1003,8 +1028,8 @@ void getVariableValueQueuesExposureWithAudienceMismatchTrueOnAudienceMismatch() context.publish(); - verify(eventHandler, times(1)).publish(any(), any()); - verify(eventHandler, times(1)).publish(context, expected); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(context, expected); } @Test @@ -1028,10 +1053,10 @@ void getVariableValueCallsEventLogger() { new Exposure(1, "exp_test_ab", "session_id", 1, clock.millis(), true, true, false, false, false, false), }; - verify(eventLogger, times(exposures.length)).handleEvent(any(), any(), any()); + verify(eventLogger, Mockito.timeout(5000).times(exposures.length)).handleEvent(any(), any(), any()); for (Exposure expected : exposures) { - verify(eventLogger, times(1)).handleEvent(ArgumentMatchers.same(context), + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(ArgumentMatchers.same(context), ArgumentMatchers.eq(ContextEventLogger.EventType.Exposure), ArgumentMatchers.eq(expected)); } @@ -1040,7 +1065,7 @@ void getVariableValueCallsEventLogger() { context.getVariableValue("banner.border", null); context.getVariableValue("banner.size", null); - verify(eventLogger, times(0)).handleEvent(any(), any(), any()); + verify(eventLogger, Mockito.timeout(5000).times(0)).handleEvent(any(), any(), any()); } @Test @@ -1113,8 +1138,8 @@ void getTreatment() { context.publish(); - verify(eventHandler, times(1)).publish(any(), any()); - verify(eventHandler, times(1)).publish(context, expected); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(context, expected); context.close(); } @@ -1141,12 +1166,13 @@ void getTreatmentStartsPublishTimeoutAfterExposure() { context.getTreatment("exp_test_ab"); context.getTreatment("exp_test_abc"); - verify(scheduler, times(1)).schedule((Runnable) any(), eq(config.getPublishDelay()), eq(TimeUnit.MILLISECONDS)); - verify(eventHandler, times(0)).publish(any(), any()); + verify(scheduler, Mockito.timeout(5000).times(1)).schedule((Runnable) any(), eq(config.getPublishDelay()), + eq(TimeUnit.MILLISECONDS)); + verify(eventHandler, Mockito.timeout(5000).times(0)).publish(any(), any()); runnable.get().run(); - verify(eventHandler, times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); } @Test @@ -1183,8 +1209,8 @@ void getTreatmentReturnsOverrideVariant() { context.publish(); - verify(eventHandler, times(1)).publish(any(), any()); - verify(eventHandler, times(1)).publish(context, expected); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(context, expected); context.close(); } @@ -1208,7 +1234,7 @@ void getTreatmentQueuesExposureOnce() { context.publish(); - verify(eventHandler, times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); assertEquals(0, context.getPendingCount()); @@ -1247,8 +1273,8 @@ void getTreatmentQueuesExposureWithAudienceMismatchFalseOnAudienceMatch() { context.publish(); - verify(eventHandler, times(1)).publish(any(), any()); - verify(eventHandler, times(1)).publish(context, expected); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(context, expected); } @Test @@ -1275,8 +1301,8 @@ void getTreatmentQueuesExposureWithAudienceMismatchTrueOnAudienceMismatch() { context.publish(); - verify(eventHandler, times(1)).publish(any(), any()); - verify(eventHandler, times(1)).publish(context, expected); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(context, expected); } @Test @@ -1304,8 +1330,8 @@ void getTreatmentQueuesExposureWithAudienceMismatchTrueAndControlVariantOnAudien context.publish(); - verify(eventHandler, times(1)).publish(any(), any()); - verify(eventHandler, times(1)).publish(context, expected); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(context, expected); } @Test @@ -1322,10 +1348,10 @@ void getTreatmentCallsEventLogger() { new Exposure(0, "not_found", null, 0, clock.millis(), false, true, false, false, false, false), }; - verify(eventLogger, times(exposures.length)).handleEvent(any(), any(), any()); + verify(eventLogger, Mockito.timeout(5000).times(exposures.length)).handleEvent(any(), any(), any()); for (Exposure expected : exposures) { - verify(eventLogger, times(1)).handleEvent(ArgumentMatchers.same(context), + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(ArgumentMatchers.same(context), ArgumentMatchers.eq(ContextEventLogger.EventType.Exposure), ArgumentMatchers.eq(expected)); } @@ -1334,7 +1360,7 @@ void getTreatmentCallsEventLogger() { context.getTreatment("exp_test_ab"); context.getTreatment("not_found"); - verify(eventLogger, times(0)).handleEvent(any(), any(), any()); + verify(eventLogger, Mockito.timeout(5000).times(0)).handleEvent(any(), any(), any()); } @Test @@ -1367,8 +1393,8 @@ void track() { context.publish(); - verify(eventHandler, times(1)).publish(any(), any()); - verify(eventHandler, times(1)).publish(context, expected); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(context, expected); context.close(); } @@ -1385,10 +1411,10 @@ void trackCallsEventLogger() { new GoalAchievement("goal1", clock.millis(), properties) }; - verify(eventLogger, times(achievements.length)).handleEvent(any(), any(), any()); + verify(eventLogger, Mockito.timeout(5000).times(achievements.length)).handleEvent(any(), any(), any()); for (GoalAchievement goal : achievements) { - verify(eventLogger, times(1)).handleEvent(ArgumentMatchers.same(context), + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(ArgumentMatchers.same(context), ArgumentMatchers.eq(ContextEventLogger.EventType.Goal), ArgumentMatchers.eq(goal)); } @@ -1397,7 +1423,7 @@ void trackCallsEventLogger() { context.track("goal1", properties); for (GoalAchievement goal : achievements) { - verify(eventLogger, times(1)).handleEvent(ArgumentMatchers.same(context), + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(ArgumentMatchers.same(context), ArgumentMatchers.eq(ContextEventLogger.EventType.Goal), ArgumentMatchers.eq(goal)); } } @@ -1424,12 +1450,13 @@ void trackStartsPublishTimeoutAfterAchievement() { context.track("goal1", mapOf("amount", 125)); context.track("goal2", mapOf("value", 999.0)); - verify(scheduler, times(1)).schedule((Runnable) any(), eq(config.getPublishDelay()), eq(TimeUnit.MILLISECONDS)); - verify(eventHandler, times(0)).publish(any(), any()); + verify(scheduler, Mockito.timeout(5000).times(1)).schedule((Runnable) any(), eq(config.getPublishDelay()), + eq(TimeUnit.MILLISECONDS)); + verify(eventHandler, Mockito.timeout(5000).times(0)).publish(any(), any()); runnable.get().run(); - verify(eventHandler, times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); } @Test @@ -1450,7 +1477,7 @@ void publishDoesNotCallEventHandlerWhenQueueIsEmpty() { context.publish(); - verify(eventHandler, times(0)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(0)).publish(any(), any()); } @Test @@ -1475,8 +1502,9 @@ void publishCallsEventLogger() { context.publish(); - verify(eventLogger, times(1)).handleEvent(any(), any(), any()); - verify(eventLogger, times(1)).handleEvent(context, ContextEventLogger.EventType.Publish, expected); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(any(), any(), any()); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(context, ContextEventLogger.EventType.Publish, + expected); } @Test @@ -1493,8 +1521,9 @@ void publishCallsEventLoggerOnError() { final CompletionException actual = assertThrows(CompletionException.class, context::publish); assertSame(failure, actual.getCause()); - verify(eventLogger, times(1)).handleEvent(any(), any(), any()); - verify(eventLogger, times(1)).handleEvent(context, ContextEventLogger.EventType.Error, failure); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(any(), any(), any()); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(context, ContextEventLogger.EventType.Error, + failure); } @Test @@ -1551,8 +1580,8 @@ void publishResetsInternalQueuesAndKeepsAttributesOverridesAndCustomAssignments( assertEquals(3, context.getCustomAssignment("exp_test_abc")); assertEquals(3, context.getOverride("not_found")); - verify(eventHandler, times(1)).publish(any(), any()); - verify(eventHandler, times(1)).publish(context, expected); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(context, expected); Mockito.clearInvocations(eventHandler); @@ -1587,8 +1616,8 @@ void publishResetsInternalQueuesAndKeepsAttributesOverridesAndCustomAssignments( futureNext.join(); assertEquals(0, context.getPendingCount()); - verify(eventHandler, times(1)).publish(any(), any()); - verify(eventHandler, times(1)).publish(context, expectedNext); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(context, expectedNext); } @Test @@ -1606,7 +1635,7 @@ void publishDoesNotCallEventHandlerWhenFailed() { context.publish(); - verify(eventHandler, times(0)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(0)).publish(any(), any()); } @Test @@ -1625,7 +1654,7 @@ void publishExceptionally() { final CompletionException actual = assertThrows(CompletionException.class, context::publish); assertSame(failure, actual.getCause()); - verify(eventHandler, times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); } @Test @@ -1652,7 +1681,7 @@ void closeAsync() { assertFalse(context.isClosing()); assertTrue(context.isClosed()); - verify(eventHandler, times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); } @Test @@ -1677,7 +1706,7 @@ void close() throws InterruptedException { assertFalse(context.isClosing()); assertTrue(context.isClosed()); - verify(eventHandler, times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); context.close(); } @@ -1690,8 +1719,9 @@ void closeCallsEventLogger() throws InterruptedException { context.close(); - verify(eventLogger, times(1)).handleEvent(any(), any(), any()); - verify(eventLogger, times(1)).handleEvent(context, ContextEventLogger.EventType.Close, null); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(any(), any(), any()); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(context, ContextEventLogger.EventType.Close, + null); } @Test @@ -1721,9 +1751,11 @@ void closeCallsEventLoggerWithPendingEvents() throws InterruptedException { context.close(); publisher.join(); - verify(eventLogger, times(2)).handleEvent(any(), any(), any()); - verify(eventLogger, times(1)).handleEvent(context, ContextEventLogger.EventType.Publish, expected); - verify(eventLogger, times(1)).handleEvent(context, ContextEventLogger.EventType.Close, null); + verify(eventLogger, Mockito.timeout(5000).times(2)).handleEvent(any(), any(), any()); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(context, ContextEventLogger.EventType.Publish, + expected); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(context, ContextEventLogger.EventType.Close, + null); } @Test @@ -1746,8 +1778,9 @@ void closeCallsEventLoggerOnError() throws InterruptedException { publisher.join(); - verify(eventLogger, times(1)).handleEvent(any(), any(), any()); - verify(eventLogger, times(1)).handleEvent(context, ContextEventLogger.EventType.Error, failure); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(any(), any(), any()); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(context, ContextEventLogger.EventType.Error, + failure); } @Test @@ -1769,7 +1802,7 @@ void closeExceptionally() throws InterruptedException { publisher.join(); - verify(eventHandler, times(1)).publish(any(), any()); + verify(eventHandler, Mockito.timeout(5000).times(1)).publish(any(), any()); } @Test @@ -1788,7 +1821,7 @@ void closeStopsRefreshTimer() { context.close(); - verify(refreshTimer, times(1)).cancel(false); + verify(refreshTimer, Mockito.timeout(5000).times(1)).cancel(false); } @Test @@ -1801,7 +1834,7 @@ void refresh() { context.refresh(); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); final String[] experiments = Arrays.stream(refreshData.experiments).map(x -> x.name).toArray(String[]::new); assertArrayEquals(experiments, context.getExperiments()); @@ -1817,7 +1850,8 @@ void refreshCallsEventLogger() { context.refresh(); - verify(eventLogger, times(1)).handleEvent(context, ContextEventLogger.EventType.Refresh, refreshData); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(context, ContextEventLogger.EventType.Refresh, + refreshData); } @Test @@ -1832,7 +1866,8 @@ void refreshCallsEventLoggerOnError() { final CompletionException actual = assertThrows(CompletionException.class, context::refresh); assertSame(failure, actual.getCause()); - verify(eventLogger, times(1)).handleEvent(context, ContextEventLogger.EventType.Error, failure); + verify(eventLogger, Mockito.timeout(5000).times(1)).handleEvent(context, ContextEventLogger.EventType.Error, + failure); } @Test @@ -1851,7 +1886,7 @@ void refreshExceptionally() { final CompletionException actual = assertThrows(CompletionException.class, context::refresh); assertSame(failure, actual.getCause()); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); } @Test @@ -1868,7 +1903,7 @@ void refreshAsync() { refreshDataFuture.complete(refreshData); refreshFuture.join(); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); final String[] experiments = Arrays.stream(refreshData.experiments).map(x -> x.name).toArray(String[]::new); assertArrayEquals(experiments, context.getExperiments()); @@ -1888,7 +1923,7 @@ void refreshKeepsAssignmentCacheWhenNotChanged() { final CompletableFuture refreshFuture = context.refreshAsync(); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); refreshDataFuture.complete(refreshData); refreshFuture.join(); @@ -1911,7 +1946,7 @@ void refreshKeepsAssignmentCacheWhenNotChangedOnAudienceMismatch() { final CompletableFuture refreshFuture = context.refreshAsync(); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); refreshFuture.join(); @@ -1933,7 +1968,7 @@ void refreshKeepsAssignmentCacheWhenNotChangedWithOverride() { final CompletableFuture refreshFuture = context.refreshAsync(); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); refreshFuture.join(); @@ -1957,7 +1992,7 @@ void refreshClearAssignmentCacheForStoppedExperiment() { final CompletableFuture refreshFuture = context.refreshAsync(); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); refreshData.experiments = Arrays.stream(refreshData.experiments).filter(x -> !x.name.equals(experimentName)) .toArray(Experiment[]::new); @@ -1986,7 +2021,7 @@ void refreshClearAssignmentCacheForStartedExperiment() { final CompletableFuture refreshFuture = context.refreshAsync(); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); refreshDataFuture.complete(refreshData); refreshFuture.join(); @@ -2012,7 +2047,7 @@ void refreshClearAssignmentCacheForFullOnExperiment() { final CompletableFuture refreshFuture = context.refreshAsync(); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); Arrays.stream(refreshData.experiments).filter(x -> x.name.equals(experimentName)).forEach(experiment -> { assertEquals(0, experiment.fullOnVariant); @@ -2044,7 +2079,7 @@ void refreshClearAssignmentCacheForTrafficSplitChange() { final CompletableFuture refreshFuture = context.refreshAsync(); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); Arrays.stream(refreshData.experiments).filter(x -> x.name.equals(experimentName)) .forEach(experiment -> experiment.trafficSplit = new double[]{0.0, 1.0}); @@ -2073,7 +2108,7 @@ void refreshClearAssignmentCacheForIterationChange() { final CompletableFuture refreshFuture = context.refreshAsync(); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); Arrays.stream(refreshData.experiments).filter(x -> x.name.equals(experimentName)).forEach(experiment -> { experiment.iteration = 2; @@ -2107,7 +2142,7 @@ void refreshClearAssignmentCacheForExperimentIdChange() { final CompletableFuture refreshFuture = context.refreshAsync(); - verify(dataProvider, times(1)).getContextData(); + verify(dataProvider, Mockito.timeout(5000).times(1)).getContextData(); Arrays.stream(refreshData.experiments).filter(x -> x.name.equals(experimentName)).forEach(experiment -> { experiment.id = 11; diff --git a/core-api/src/test/java/com/absmartly/sdk/DefaultContextDataProviderTest.java b/core-api/src/test/java/com/absmartly/sdk/DefaultContextDataProviderTest.java index 5f7c9e7..487acb8 100644 --- a/core-api/src/test/java/com/absmartly/sdk/DefaultContextDataProviderTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/DefaultContextDataProviderTest.java @@ -8,6 +8,7 @@ import java8.util.concurrent.CompletionException; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; import com.absmartly.sdk.json.ContextData; @@ -40,6 +41,6 @@ void getContextDataExceptionally() { final CompletionException actual = assertThrows(CompletionException.class, dataFuture::join); assertSame(actual.getCause(), failure); - verify(client, times(1)).getContextData(); + verify(client, Mockito.timeout(5000).times(1)).getContextData(); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/DefaultContextEventHandlerTest.java b/core-api/src/test/java/com/absmartly/sdk/DefaultContextEventHandlerTest.java index 26ea1e3..c1ac63f 100644 --- a/core-api/src/test/java/com/absmartly/sdk/DefaultContextEventHandlerTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/DefaultContextEventHandlerTest.java @@ -8,6 +8,7 @@ import java8.util.concurrent.CompletionException; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; import com.absmartly.sdk.json.PublishEvent; @@ -42,6 +43,6 @@ void publishExceptionally() { final CompletionException actual = assertThrows(CompletionException.class, publishFuture::join); assertSame(actual.getCause(), failure); - verify(client, times(1)).publish(event); + verify(client, Mockito.timeout(5000).times(1)).publish(event); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/DefaultHTTPClientTest.java b/core-api/src/test/java/com/absmartly/sdk/DefaultHTTPClientTest.java index 8755ecf..0a3a4fd 100644 --- a/core-api/src/test/java/com/absmartly/sdk/DefaultHTTPClientTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/DefaultHTTPClientTest.java @@ -50,20 +50,23 @@ void constructorAndClose() { final DefaultHTTPClient httpClient = DefaultHTTPClient.create(DefaultHTTPClientConfig.create()); - verify(asyncHTTPClientBuilder, times(1)).disableCookieManagement(); - verify(asyncHTTPClientBuilder, times(1)).evictExpiredConnections(); - verify(asyncHTTPClientBuilder, times(1)).evictIdleConnections(TimeValue.ofSeconds(30)); - verify(asyncHTTPClientBuilder, times(1)) + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)).disableCookieManagement(); + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)).evictExpiredConnections(); + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)) + .evictIdleConnections(TimeValue.ofSeconds(30)); + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)) .setConnectionManager(any(PoolingAsyncClientConnectionManager.class)); - verify(asyncHTTPClientBuilder, times(1)).setVersionPolicy(HttpVersionPolicy.NEGOTIATE); - verify(asyncHTTPClientBuilder, times(1)).setRetryStrategy(any(DefaultHTTPClientRetryStrategy.class)); - verify(asyncHTTPClientBuilder, times(1)).build(); + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)) + .setVersionPolicy(HttpVersionPolicy.NEGOTIATE); + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)) + .setRetryStrategy(any(DefaultHTTPClientRetryStrategy.class)); + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)).build(); - verify(asyncHTTPClient, times(1)).start(); + verify(asyncHTTPClient, Mockito.timeout(5000).times(1)).start(); httpClient.close(); - verify(asyncHTTPClient, times(1)).close(CloseMode.GRACEFUL); + verify(asyncHTTPClient, Mockito.timeout(5000).times(1)).close(CloseMode.GRACEFUL); } } @@ -77,20 +80,23 @@ void constructorCustomConfig() { final DefaultHTTPClient httpClient = DefaultHTTPClient.create(DefaultHTTPClientConfig.create() .setHTTPVersionPolicy(HTTPVersionPolicy.FORCE_HTTP_2)); - verify(asyncHTTPClientBuilder, times(1)).disableCookieManagement(); - verify(asyncHTTPClientBuilder, times(1)).evictExpiredConnections(); - verify(asyncHTTPClientBuilder, times(1)).evictIdleConnections(TimeValue.ofSeconds(30)); - verify(asyncHTTPClientBuilder, times(1)) + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)).disableCookieManagement(); + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)).evictExpiredConnections(); + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)) + .evictIdleConnections(TimeValue.ofSeconds(30)); + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)) .setConnectionManager(any(PoolingAsyncClientConnectionManager.class)); - verify(asyncHTTPClientBuilder, times(1)).setRetryStrategy(any(DefaultHTTPClientRetryStrategy.class)); - verify(asyncHTTPClientBuilder, times(1)).setVersionPolicy(HttpVersionPolicy.FORCE_HTTP_2); - verify(asyncHTTPClientBuilder, times(1)).build(); + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)) + .setRetryStrategy(any(DefaultHTTPClientRetryStrategy.class)); + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)) + .setVersionPolicy(HttpVersionPolicy.FORCE_HTTP_2); + verify(asyncHTTPClientBuilder, Mockito.timeout(5000).times(1)).build(); - verify(asyncHTTPClient, times(1)).start(); + verify(asyncHTTPClient, Mockito.timeout(5000).times(1)).start(); httpClient.close(); - verify(asyncHTTPClient, times(1)).close(CloseMode.GRACEFUL); + verify(asyncHTTPClient, Mockito.timeout(5000).times(1)).close(CloseMode.GRACEFUL); } } @@ -174,7 +180,7 @@ void get() throws ExecutionException, InterruptedException { assertEquals("application/json", response.getContentType()); assertArrayEquals(new byte[]{123, 0}, response.getContent()); - verify(asyncHTTPClient, times(1)).execute(any(), any()); + verify(asyncHTTPClient, Mockito.timeout(5000).times(1)).execute(any(), any()); } } @@ -201,7 +207,7 @@ void getExceptionallyConnection() { .get("https://api.absmartly.com/v1/context", null, null); assertSame(failure, assertThrows(CompletionException.class, responseFuture::join).getCause()); - verify(asyncHTTPClient, times(1)).execute(any(), any()); + verify(asyncHTTPClient, Mockito.timeout(5000).times(1)).execute(any(), any()); } } @@ -239,7 +245,7 @@ void put() throws ExecutionException, InterruptedException { assertEquals("application/json", response.getContentType()); assertArrayEquals(new byte[]{123, 0}, response.getContent()); - verify(asyncHTTPClient, times(1)).execute(any(), any()); + verify(asyncHTTPClient, Mockito.timeout(5000).times(1)).execute(any(), any()); } } @@ -277,7 +283,7 @@ void post() throws ExecutionException, InterruptedException { assertEquals("application/json", response.getContentType()); assertArrayEquals(new byte[]{123, 0}, response.getContent()); - verify(asyncHTTPClient, times(1)).execute(any(), any()); + verify(asyncHTTPClient, Mockito.timeout(5000).times(1)).execute(any(), any()); } } } diff --git a/core-api/src/test/java/com/absmartly/sdk/internal/AlgorithmTest.java b/core-api/src/test/java/com/absmartly/sdk/internal/AlgorithmTest.java index 215280a..dbb3e21 100644 --- a/core-api/src/test/java/com/absmartly/sdk/internal/AlgorithmTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/internal/AlgorithmTest.java @@ -9,6 +9,7 @@ import java8.util.function.Function; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; @@ -30,7 +31,7 @@ public Object answer(InvocationOnMock invocation) throws Throwable { final Integer[] actual = Algorithm.mapSetToArray(ints, new Integer[0], square); assertArrayEquals(expected, actual); - verify(square, times(5)).apply(anyInt()); + verify(square, Mockito.timeout(5000).times(5)).apply(anyInt()); } @Test @@ -48,7 +49,7 @@ public Object answer(InvocationOnMock invocation) throws Throwable { final Integer[] actual = Algorithm.mapSetToArray(ints, new Integer[]{0, 0, 0, 0, 0}, square); assertArrayEquals(expected, actual); - verify(square, times(5)).apply(anyInt()); + verify(square, Mockito.timeout(5000).times(5)).apply(anyInt()); } @Test @@ -66,6 +67,6 @@ public Object answer(InvocationOnMock invocation) throws Throwable { final Integer[] actual = Algorithm.mapSetToArray(ints, new Integer[]{0, 0, 0, 0, 0, 0, 0}, square); assertArrayEquals(expected, actual); - verify(square, times(5)).apply(anyInt()); + verify(square, Mockito.timeout(5000).times(5)).apply(anyInt()); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/internal/ConcurrencyTest.java b/core-api/src/test/java/com/absmartly/sdk/internal/ConcurrencyTest.java index 3ea0203..ba1d46c 100644 --- a/core-api/src/test/java/com/absmartly/sdk/internal/ConcurrencyTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/internal/ConcurrencyTest.java @@ -9,6 +9,7 @@ import java8.util.function.Function; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; @@ -32,18 +33,18 @@ void computeIfAbsentRW() { final Integer result = Concurrency.computeIfAbsentRW(rwlock, map, 1, computer); assertEquals(5, result); - verify(map, times(2)).get(any()); - verify(map, times(2)).get(1); + verify(map, Mockito.timeout(5000).times(2)).get(any()); + verify(map, Mockito.timeout(5000).times(2)).get(1); - verify(rwlock, times(1)).readLock(); - verify(rwlock, times(1)).writeLock(); - verify(rlock, times(1)).lock(); - verify(rlock, times(1)).unlock(); - verify(wlock, times(1)).lock(); - verify(wlock, times(1)).unlock(); + verify(rwlock, Mockito.timeout(5000).times(1)).readLock(); + verify(rwlock, Mockito.timeout(5000).times(1)).writeLock(); + verify(rlock, Mockito.timeout(5000).times(1)).lock(); + verify(rlock, Mockito.timeout(5000).times(1)).unlock(); + verify(wlock, Mockito.timeout(5000).times(1)).lock(); + verify(wlock, Mockito.timeout(5000).times(1)).unlock(); - verify(computer, times(1)).apply(any()); - verify(computer, times(1)).apply(1); + verify(computer, Mockito.timeout(5000).times(1)).apply(any()); + verify(computer, Mockito.timeout(5000).times(1)).apply(1); } @Test @@ -61,15 +62,15 @@ void computeIfAbsentRWPresent() { final Integer result = Concurrency.computeIfAbsentRW(rwlock, map, 1, computer); assertEquals(5, result); - verify(map, times(1)).get(any()); - verify(map, times(1)).get(1); + verify(map, Mockito.timeout(5000).times(1)).get(any()); + verify(map, Mockito.timeout(5000).times(1)).get(1); - verify(rwlock, times(1)).readLock(); - verify(rwlock, times(0)).writeLock(); - verify(rlock, times(1)).lock(); - verify(rlock, times(1)).unlock(); + verify(rwlock, Mockito.timeout(5000).times(1)).readLock(); + verify(rwlock, Mockito.timeout(5000).times(0)).writeLock(); + verify(rlock, Mockito.timeout(5000).times(1)).lock(); + verify(rlock, Mockito.timeout(5000).times(1)).unlock(); - verify(computer, times(0)).apply(any()); + verify(computer, Mockito.timeout(5000).times(0)).apply(any()); } @Test @@ -91,17 +92,17 @@ public ReentrantReadWriteLock.WriteLock answer(InvocationOnMock invocation) thro final Integer result = Concurrency.computeIfAbsentRW(rwlock, map, 1, computer); assertEquals(5, result); - verify(map, times(2)).get(any()); - verify(map, times(2)).get(1); + verify(map, Mockito.timeout(5000).times(2)).get(any()); + verify(map, Mockito.timeout(5000).times(2)).get(1); - verify(rwlock, times(1)).readLock(); - verify(rwlock, times(1)).writeLock(); - verify(rlock, times(1)).lock(); - verify(rlock, times(1)).unlock(); - verify(wlock, times(1)).lock(); - verify(wlock, times(1)).unlock(); + verify(rwlock, Mockito.timeout(5000).times(1)).readLock(); + verify(rwlock, Mockito.timeout(5000).times(1)).writeLock(); + verify(rlock, Mockito.timeout(5000).times(1)).lock(); + verify(rlock, Mockito.timeout(5000).times(1)).unlock(); + verify(wlock, Mockito.timeout(5000).times(1)).lock(); + verify(wlock, Mockito.timeout(5000).times(1)).unlock(); - verify(computer, times(0)).apply(any()); + verify(computer, Mockito.timeout(5000).times(0)).apply(any()); } @Test @@ -114,13 +115,13 @@ void getRW() { final Integer result = Concurrency.getRW(rwlock, map, 1); assertNull(result); - verify(map, times(1)).get(any()); - verify(map, times(1)).get(1); + verify(map, Mockito.timeout(5000).times(1)).get(any()); + verify(map, Mockito.timeout(5000).times(1)).get(1); - verify(rwlock, times(1)).readLock(); - verify(rwlock, times(0)).writeLock(); - verify(lock, times(1)).lock(); - verify(lock, times(1)).unlock(); + verify(rwlock, Mockito.timeout(5000).times(1)).readLock(); + verify(rwlock, Mockito.timeout(5000).times(0)).writeLock(); + verify(lock, Mockito.timeout(5000).times(1)).lock(); + verify(lock, Mockito.timeout(5000).times(1)).unlock(); } @Test @@ -133,12 +134,12 @@ void putRW() { final Integer result = Concurrency.putRW(rwlock, map, 1, 5); assertNull(result); - verify(map, times(1)).put(any(), any()); - verify(map, times(1)).put(1, 5); + verify(map, Mockito.timeout(5000).times(1)).put(any(), any()); + verify(map, Mockito.timeout(5000).times(1)).put(1, 5); - verify(rwlock, times(0)).readLock(); - verify(rwlock, times(1)).writeLock(); - verify(lock, times(1)).lock(); - verify(lock, times(1)).unlock(); + verify(rwlock, Mockito.timeout(5000).times(0)).readLock(); + verify(rwlock, Mockito.timeout(5000).times(1)).writeLock(); + verify(lock, Mockito.timeout(5000).times(1)).lock(); + verify(lock, Mockito.timeout(5000).times(1)).unlock(); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/ExprEvaluatorTest.java b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/ExprEvaluatorTest.java index ce79ecb..bcd27be 100644 --- a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/ExprEvaluatorTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/ExprEvaluatorTest.java @@ -11,6 +11,7 @@ import org.junit.jupiter.api.Test; import org.mockito.ArgumentMatchers; +import org.mockito.Mockito; import com.absmartly.sdk.TestUtils; @@ -27,8 +28,8 @@ void testEvaluateConsidersListAsAndCombinator() { final List args = listOf(mapOf("value", true), mapOf("value", false)); assertNotNull(evaluator.evaluate(args)); - verify(orOperator, times(0)).evaluate(any(), any()); - verify(andOperator, times(1)).evaluate(any(Evaluator.class), ArgumentMatchers.eq(args)); + verify(orOperator, Mockito.timeout(5000).times(0)).evaluate(any(), any()); + verify(andOperator, Mockito.timeout(5000).times(1)).evaluate(any(Evaluator.class), ArgumentMatchers.eq(args)); } @Test @@ -40,7 +41,7 @@ void testEvaluateReturnsNullIfOperatorNotFound() { final ExprEvaluator evaluator = new ExprEvaluator(mapOf("value", valueOperator), EMPTY_MAP); assertNull(evaluator.evaluate(mapOf("not_found", true))); - verify(valueOperator, times(0)).evaluate(any(), any()); + verify(valueOperator, Mockito.timeout(5000).times(0)).evaluate(any(), any()); } @Test @@ -54,7 +55,7 @@ void testEvaluateCallsOperatorWithArgs() { final ExprEvaluator evaluator = new ExprEvaluator(mapOf("value", valueOperator), EMPTY_MAP); assertEquals(args, evaluator.evaluate(mapOf("value", args))); - verify(valueOperator, times(1)).evaluate(any(Evaluator.class), ArgumentMatchers.eq(args)); + verify(valueOperator, Mockito.timeout(5000).times(1)).evaluate(any(Evaluator.class), ArgumentMatchers.eq(args)); } @Test diff --git a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/AndCombinatorTest.java b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/AndCombinatorTest.java index 16f21e4..9bbf93f 100644 --- a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/AndCombinatorTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/AndCombinatorTest.java @@ -2,10 +2,10 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; class AndCombinatorTest extends OperatorTest { final AndCombinator combinator = new AndCombinator(); @@ -13,32 +13,32 @@ class AndCombinatorTest extends OperatorTest { @Test void testCombineTrue() { assertTrue((Boolean) combinator.combine(evaluator, listOf(true))); - verify(evaluator, times(1)).booleanConvert(true); - verify(evaluator, times(1)).evaluate(true); + verify(evaluator, Mockito.timeout(5000).times(1)).booleanConvert(true); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(true); } @Test void testCombineFalse() { assertFalse((Boolean) combinator.combine(evaluator, listOf(false))); - verify(evaluator, times(1)).booleanConvert(false); - verify(evaluator, times(1)).evaluate(false); + verify(evaluator, Mockito.timeout(5000).times(1)).booleanConvert(false); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(false); } @Test void testCombineNull() { assertFalse((Boolean) combinator.combine(evaluator, listOf((Object) null))); - verify(evaluator, times(1)).booleanConvert(null); - verify(evaluator, times(1)).evaluate(null); + verify(evaluator, Mockito.timeout(5000).times(1)).booleanConvert(null); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(null); } @Test void testCombineShortCircuit() { assertFalse((Boolean) combinator.combine(evaluator, listOf(true, false, true))); - verify(evaluator, times(1)).booleanConvert(true); - verify(evaluator, times(1)).evaluate(true); + verify(evaluator, Mockito.timeout(5000).times(1)).booleanConvert(true); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(true); - verify(evaluator, times(1)).booleanConvert(false); - verify(evaluator, times(1)).evaluate(false); + verify(evaluator, Mockito.timeout(5000).times(1)).booleanConvert(false); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(false); } @Test diff --git a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/EqualsOperatorTest.java b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/EqualsOperatorTest.java index a840aee..428eef9 100644 --- a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/EqualsOperatorTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/EqualsOperatorTest.java @@ -2,7 +2,6 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.jupiter.api.Test; @@ -14,54 +13,54 @@ class EqualsOperatorTest extends OperatorTest { @Test void testEvaluate() { assertTrue((Boolean) operator.evaluate(evaluator, listOf(0, 0))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(2)).evaluate(0); - verify(evaluator, times(1)).compare(0, 0); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(0, 0); Mockito.clearInvocations(evaluator); assertFalse((Boolean) operator.evaluate(evaluator, listOf(1, 0))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(0); - verify(evaluator, times(1)).evaluate(1); - verify(evaluator, times(1)).compare(1, 0); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(1); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(1, 0); Mockito.clearInvocations(evaluator); assertFalse((Boolean) operator.evaluate(evaluator, listOf(0, 1))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(0); - verify(evaluator, times(1)).evaluate(1); - verify(evaluator, times(1)).compare(0, 1); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(1); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(0, 1); Mockito.clearInvocations(evaluator); assertNull(operator.evaluate(evaluator, listOf(null, null))); - verify(evaluator, times(1)).evaluate(any()); - verify(evaluator, times(0)).compare(any(), any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(0)).compare(any(), any()); Mockito.clearInvocations(evaluator); assertTrue((Boolean) operator.evaluate(evaluator, listOf(listOf(1, 2), listOf(1, 2)))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).compare(any(), any()); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(any(), any()); Mockito.clearInvocations(evaluator); assertNull(operator.evaluate(evaluator, listOf(listOf(1, 2), listOf(2, 3)))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).compare(any(), any()); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(any(), any()); Mockito.clearInvocations(evaluator); assertTrue((Boolean) operator.evaluate(evaluator, listOf(mapOf("a", 1, "b", 2), mapOf("a", 1, "b", 2)))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).compare(any(), any()); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(any(), any()); Mockito.clearInvocations(evaluator); assertNull(operator.evaluate(evaluator, listOf(mapOf("a", 1, "b", 2), mapOf("a", 3, "b", 4)))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).compare(any(), any()); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(any(), any()); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/GreaterThanOperatorTest.java b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/GreaterThanOperatorTest.java index d0be776..6a6f502 100644 --- a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/GreaterThanOperatorTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/GreaterThanOperatorTest.java @@ -2,7 +2,6 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.jupiter.api.Test; @@ -14,30 +13,30 @@ class GreaterThanOperatorTest extends OperatorTest { @Test void testEvaluate() { assertFalse((Boolean) operator.evaluate(evaluator, listOf(0, 0))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(2)).evaluate(0); - verify(evaluator, times(1)).compare(0, 0); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(0, 0); Mockito.clearInvocations(evaluator); assertTrue((Boolean) operator.evaluate(evaluator, listOf(1, 0))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(0); - verify(evaluator, times(1)).evaluate(1); - verify(evaluator, times(1)).compare(1, 0); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(1); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(1, 0); Mockito.clearInvocations(evaluator); assertFalse((Boolean) operator.evaluate(evaluator, listOf(0, 1))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(0); - verify(evaluator, times(1)).evaluate(1); - verify(evaluator, times(1)).compare(0, 1); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(1); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(0, 1); Mockito.clearInvocations(evaluator); assertNull(operator.evaluate(evaluator, listOf(null, null))); - verify(evaluator, times(1)).evaluate(any()); - verify(evaluator, times(0)).compare(any(), any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(0)).compare(any(), any()); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/GreaterThanOrEqualOperatorTest.java b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/GreaterThanOrEqualOperatorTest.java index 384a3f5..9ea402a 100644 --- a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/GreaterThanOrEqualOperatorTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/GreaterThanOrEqualOperatorTest.java @@ -2,7 +2,6 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.jupiter.api.Test; @@ -14,30 +13,30 @@ class GreaterThanOrEqualOperatorTest extends OperatorTest { @Test void testEvaluate() { assertTrue((Boolean) operator.evaluate(evaluator, listOf(0, 0))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(2)).evaluate(0); - verify(evaluator, times(1)).compare(0, 0); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(0, 0); Mockito.clearInvocations(evaluator); assertTrue((Boolean) operator.evaluate(evaluator, listOf(1, 0))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(0); - verify(evaluator, times(1)).evaluate(1); - verify(evaluator, times(1)).compare(1, 0); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(1); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(1, 0); Mockito.clearInvocations(evaluator); assertFalse((Boolean) operator.evaluate(evaluator, listOf(0, 1))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(0); - verify(evaluator, times(1)).evaluate(1); - verify(evaluator, times(1)).compare(0, 1); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(1); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(0, 1); Mockito.clearInvocations(evaluator); assertNull(operator.evaluate(evaluator, listOf(null, null))); - verify(evaluator, times(1)).evaluate(any()); - verify(evaluator, times(0)).compare(any(), any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(0)).compare(any(), any()); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/InOperatorTest.java b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/InOperatorTest.java index f59d96c..9c07cde 100644 --- a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/InOperatorTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/InOperatorTest.java @@ -21,14 +21,14 @@ void testString() { assertNull(operator.evaluate(evaluator, listOf("abcdefghijk", null))); assertNull(operator.evaluate(evaluator, listOf(null, "abc"))); - verify(evaluator, times(4)).evaluate("abcdefghijk"); - verify(evaluator, times(1)).evaluate("abc"); - verify(evaluator, times(1)).evaluate("def"); - verify(evaluator, times(1)).evaluate("xxx"); - - verify(evaluator, times(1)).stringConvert("abc"); - verify(evaluator, times(1)).stringConvert("def"); - verify(evaluator, times(1)).stringConvert("xxx"); + verify(evaluator, Mockito.timeout(5000).times(4)).evaluate("abcdefghijk"); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate("abc"); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate("def"); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate("xxx"); + + verify(evaluator, Mockito.timeout(5000).times(1)).stringConvert("abc"); + verify(evaluator, Mockito.timeout(5000).times(1)).stringConvert("def"); + verify(evaluator, Mockito.timeout(5000).times(1)).stringConvert("xxx"); } @Test @@ -39,10 +39,10 @@ void testArrayEmpty() { assertFalse((Boolean) operator.evaluate(evaluator, listOf(listOf(), false))); assertNull(operator.evaluate(evaluator, listOf(listOf(), null))); - verify(evaluator, times(0)).booleanConvert(any()); - verify(evaluator, times(0)).numberConvert(any()); - verify(evaluator, times(0)).stringConvert(any()); - verify(evaluator, times(0)).compare(any(), any()); + verify(evaluator, Mockito.timeout(5000).times(0)).booleanConvert(any()); + verify(evaluator, Mockito.timeout(5000).times(0)).numberConvert(any()); + verify(evaluator, Mockito.timeout(5000).times(0)).stringConvert(any()); + verify(evaluator, Mockito.timeout(5000).times(0)).compare(any(), any()); } @Test @@ -51,34 +51,34 @@ void testArrayCompares() { final List haystack12 = listOf(1, 2); assertFalse((Boolean) operator.evaluate(evaluator, listOf(haystack01, 2))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(haystack01); - verify(evaluator, times(1)).evaluate(2); - verify(evaluator, times(2)).compare(anyInt(), ArgumentMatchers.eq(2)); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(haystack01); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(2); + verify(evaluator, Mockito.timeout(5000).times(2)).compare(anyInt(), ArgumentMatchers.eq(2)); Mockito.clearInvocations(evaluator); assertFalse((Boolean) operator.evaluate(evaluator, listOf(haystack12, 0))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(haystack12); - verify(evaluator, times(1)).evaluate(0); - verify(evaluator, times(2)).compare(anyInt(), ArgumentMatchers.eq(0)); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(haystack12); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(2)).compare(anyInt(), ArgumentMatchers.eq(0)); Mockito.clearInvocations(evaluator); assertTrue((Boolean) operator.evaluate(evaluator, listOf(haystack12, 1))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(haystack12); - verify(evaluator, times(1)).evaluate(1); - verify(evaluator, times(1)).compare(anyInt(), ArgumentMatchers.eq(1)); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(haystack12); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(1); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(anyInt(), ArgumentMatchers.eq(1)); Mockito.clearInvocations(evaluator); assertTrue((Boolean) operator.evaluate(evaluator, listOf(haystack12, 2))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(haystack12); - verify(evaluator, times(1)).evaluate(2); - verify(evaluator, times(2)).compare(anyInt(), ArgumentMatchers.eq(2)); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(haystack12); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(2); + verify(evaluator, Mockito.timeout(5000).times(2)).compare(anyInt(), ArgumentMatchers.eq(2)); Mockito.clearInvocations(evaluator); } @@ -89,43 +89,43 @@ void testObject() { final Map haystackbc = mapOf("b", 2, "c", 3, "0", 100); assertFalse((Boolean) operator.evaluate(evaluator, listOf(haystackab, "c"))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(haystackab); - verify(evaluator, times(1)).stringConvert(any()); - verify(evaluator, times(1)).stringConvert("c"); - verify(evaluator, times(1)).evaluate("c"); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(haystackab); + verify(evaluator, Mockito.timeout(5000).times(1)).stringConvert(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).stringConvert("c"); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate("c"); Mockito.clearInvocations(evaluator); assertFalse((Boolean) operator.evaluate(evaluator, listOf(haystackbc, "a"))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(haystackbc); - verify(evaluator, times(1)).stringConvert(any()); - verify(evaluator, times(1)).stringConvert("a"); - verify(evaluator, times(1)).evaluate("a"); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(haystackbc); + verify(evaluator, Mockito.timeout(5000).times(1)).stringConvert(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).stringConvert("a"); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate("a"); Mockito.clearInvocations(evaluator); assertTrue((Boolean) operator.evaluate(evaluator, listOf(haystackbc, "b"))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(haystackbc); - verify(evaluator, times(1)).stringConvert(any()); - verify(evaluator, times(1)).stringConvert("b"); - verify(evaluator, times(1)).evaluate("b"); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(haystackbc); + verify(evaluator, Mockito.timeout(5000).times(1)).stringConvert(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).stringConvert("b"); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate("b"); Mockito.clearInvocations(evaluator); assertTrue((Boolean) operator.evaluate(evaluator, listOf(haystackbc, "c"))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(haystackbc); - verify(evaluator, times(1)).stringConvert(any()); - verify(evaluator, times(1)).stringConvert("c"); - verify(evaluator, times(1)).evaluate("c"); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(haystackbc); + verify(evaluator, Mockito.timeout(5000).times(1)).stringConvert(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).stringConvert("c"); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate("c"); Mockito.clearInvocations(evaluator); assertTrue((Boolean) operator.evaluate(evaluator, listOf(haystackbc, 0))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(haystackbc); - verify(evaluator, times(1)).stringConvert(any()); - verify(evaluator, times(1)).stringConvert(0); - verify(evaluator, times(1)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(haystackbc); + verify(evaluator, Mockito.timeout(5000).times(1)).stringConvert(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).stringConvert(0); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(0); Mockito.clearInvocations(evaluator); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/LessThanOperatorTest.java b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/LessThanOperatorTest.java index f9e7f65..8ea2fa3 100644 --- a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/LessThanOperatorTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/LessThanOperatorTest.java @@ -2,7 +2,6 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.jupiter.api.Test; @@ -14,30 +13,30 @@ class LessThanOperatorTest extends OperatorTest { @Test void testEvaluate() { assertFalse((Boolean) operator.evaluate(evaluator, listOf(0, 0))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(2)).evaluate(0); - verify(evaluator, times(1)).compare(0, 0); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(0, 0); Mockito.clearInvocations(evaluator); assertFalse((Boolean) operator.evaluate(evaluator, listOf(1, 0))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(0); - verify(evaluator, times(1)).evaluate(1); - verify(evaluator, times(1)).compare(1, 0); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(1); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(1, 0); Mockito.clearInvocations(evaluator); assertTrue((Boolean) operator.evaluate(evaluator, listOf(0, 1))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(0); - verify(evaluator, times(1)).evaluate(1); - verify(evaluator, times(1)).compare(0, 1); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(1); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(0, 1); Mockito.clearInvocations(evaluator); assertNull(operator.evaluate(evaluator, listOf(null, null))); - verify(evaluator, times(1)).evaluate(any()); - verify(evaluator, times(0)).compare(any(), any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(0)).compare(any(), any()); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/LessThanOrEqualOperatorTest.java b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/LessThanOrEqualOperatorTest.java index 8142c21..206f335 100644 --- a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/LessThanOrEqualOperatorTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/LessThanOrEqualOperatorTest.java @@ -2,7 +2,6 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.jupiter.api.Test; @@ -14,30 +13,30 @@ class LessThanOrEqualOperatorTest extends OperatorTest { @Test void testEvaluate() { assertTrue((Boolean) operator.evaluate(evaluator, listOf(0, 0))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(2)).evaluate(0); - verify(evaluator, times(1)).compare(0, 0); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(0, 0); Mockito.clearInvocations(evaluator); assertFalse((Boolean) operator.evaluate(evaluator, listOf(1, 0))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(0); - verify(evaluator, times(1)).evaluate(1); - verify(evaluator, times(1)).compare(1, 0); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(1); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(1, 0); Mockito.clearInvocations(evaluator); assertTrue((Boolean) operator.evaluate(evaluator, listOf(0, 1))); - verify(evaluator, times(2)).evaluate(any()); - verify(evaluator, times(1)).evaluate(0); - verify(evaluator, times(1)).evaluate(1); - verify(evaluator, times(1)).compare(0, 1); + verify(evaluator, Mockito.timeout(5000).times(2)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(1); + verify(evaluator, Mockito.timeout(5000).times(1)).compare(0, 1); Mockito.clearInvocations(evaluator); assertNull(operator.evaluate(evaluator, listOf(null, null))); - verify(evaluator, times(1)).evaluate(any()); - verify(evaluator, times(0)).compare(any(), any()); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(0)).compare(any(), any()); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/NotOperatorTest.java b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/NotOperatorTest.java index 88e2137..432070d 100644 --- a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/NotOperatorTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/NotOperatorTest.java @@ -2,10 +2,10 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; class NotOperatorTest extends OperatorTest { final NotOperator operator = new NotOperator(); @@ -13,21 +13,21 @@ class NotOperatorTest extends OperatorTest { @Test void testFalse() { assertTrue((Boolean) operator.evaluate(evaluator, false)); - verify(evaluator, times(1)).evaluate(false); - verify(evaluator, times(1)).booleanConvert(false); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(false); + verify(evaluator, Mockito.timeout(5000).times(1)).booleanConvert(false); } @Test void testTrue() { assertFalse((Boolean) operator.evaluate(evaluator, true)); - verify(evaluator, times(1)).evaluate(true); - verify(evaluator, times(1)).booleanConvert(true); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(true); + verify(evaluator, Mockito.timeout(5000).times(1)).booleanConvert(true); } @Test void testNull() { assertTrue((Boolean) operator.evaluate(evaluator, null)); - verify(evaluator, times(1)).evaluate(null); - verify(evaluator, times(1)).booleanConvert(null); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(null); + verify(evaluator, Mockito.timeout(5000).times(1)).booleanConvert(null); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/NullOperatorTest.java b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/NullOperatorTest.java index 6718ca0..700f048 100644 --- a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/NullOperatorTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/NullOperatorTest.java @@ -2,10 +2,10 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; class NullOperatorTest extends OperatorTest { final NullOperator operator = new NullOperator(); @@ -13,18 +13,18 @@ class NullOperatorTest extends OperatorTest { @Test void testNull() { assertTrue((Boolean) operator.evaluate(evaluator, null)); - verify(evaluator, times(1)).evaluate(null); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(null); } @Test void testNotNull() { assertFalse((Boolean) operator.evaluate(evaluator, true)); - verify(evaluator, times(1)).evaluate(true); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(true); assertFalse((Boolean) operator.evaluate(evaluator, false)); - verify(evaluator, times(1)).evaluate(false); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(false); assertFalse((Boolean) operator.evaluate(evaluator, 0)); - verify(evaluator, times(1)).evaluate(0); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(0); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/OrCombinatorTest.java b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/OrCombinatorTest.java index 9f39d67..6f3ea5c 100644 --- a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/OrCombinatorTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/OrCombinatorTest.java @@ -2,10 +2,10 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; class OrCombinatorTest extends OperatorTest { @@ -14,32 +14,32 @@ class OrCombinatorTest extends OperatorTest { @Test void testCombineTrue() { assertTrue((Boolean) combinator.combine(evaluator, listOf(true))); - verify(evaluator, times(1)).booleanConvert(true); - verify(evaluator, times(1)).evaluate(true); + verify(evaluator, Mockito.timeout(5000).times(1)).booleanConvert(true); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(true); } @Test void testCombineFalse() { assertFalse((Boolean) combinator.combine(evaluator, listOf(false))); - verify(evaluator, times(1)).booleanConvert(false); - verify(evaluator, times(1)).evaluate(false); + verify(evaluator, Mockito.timeout(5000).times(1)).booleanConvert(false); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(false); } @Test void testCombineNull() { assertFalse((Boolean) combinator.combine(evaluator, listOf((Object) null))); - verify(evaluator, times(1)).booleanConvert(null); - verify(evaluator, times(1)).evaluate(null); + verify(evaluator, Mockito.timeout(5000).times(1)).booleanConvert(null); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(null); } @Test void testCombineShortCircuit() { assertTrue((Boolean) combinator.combine(evaluator, listOf(true, false, true))); - verify(evaluator, times(1)).booleanConvert(true); - verify(evaluator, times(1)).evaluate(true); + verify(evaluator, Mockito.timeout(5000).times(1)).booleanConvert(true); + verify(evaluator, Mockito.timeout(5000).times(1)).evaluate(true); - verify(evaluator, times(0)).booleanConvert(false); - verify(evaluator, times(0)).evaluate(false); + verify(evaluator, Mockito.timeout(5000).times(0)).booleanConvert(false); + verify(evaluator, Mockito.timeout(5000).times(0)).evaluate(false); } @Test diff --git a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/ValueOperatorTest.java b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/ValueOperatorTest.java index 1341bcc..5a463a4 100644 --- a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/ValueOperatorTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/ValueOperatorTest.java @@ -5,10 +5,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; class ValueOperatorTest extends OperatorTest { final ValueOperator operator = new ValueOperator(); @@ -24,6 +24,6 @@ void testEvaluate() { assertEquals(EMPTY_LIST, operator.evaluate(evaluator, EMPTY_LIST)); assertNull(operator.evaluate(evaluator, null)); - verify(evaluator, times(0)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(0)).evaluate(any()); } } diff --git a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/VarOperatorTest.java b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/VarOperatorTest.java index 77f7401..a7f4ed9 100644 --- a/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/VarOperatorTest.java +++ b/core-api/src/test/java/com/absmartly/sdk/jsonexpr/operators/VarOperatorTest.java @@ -2,10 +2,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; class VarOperatorTest extends OperatorTest { final VarOperator operator = new VarOperator(); @@ -14,8 +14,8 @@ class VarOperatorTest extends OperatorTest { void testEvaluate() { assertEquals("abc", operator.evaluate(evaluator, "a/b/c")); - verify(evaluator, times(1)).extractVar(any()); - verify(evaluator, times(1)).extractVar("a/b/c"); - verify(evaluator, times(0)).evaluate(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).extractVar(any()); + verify(evaluator, Mockito.timeout(5000).times(1)).extractVar("a/b/c"); + verify(evaluator, Mockito.timeout(5000).times(0)).evaluate(any()); } }