diff --git a/src/test/java/org/springframework/data/redis/SpinBarrier.java b/src/test/java/org/springframework/data/redis/SpinBarrier.java deleted file mode 100644 index 9165ee47f..000000000 --- a/src/test/java/org/springframework/data/redis/SpinBarrier.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2013-2021 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.data.redis; - -import java.util.concurrent.TimeUnit; - -import org.awaitility.Awaitility; - -/** - * @author Jennifer Hickey - * @author Mark Paluch - * @deprecated Use {@link Awaitility}. - */ -@Deprecated -public abstract class SpinBarrier { - - /** - * Periodically tests for a condition until it is met or a timeout occurs - * - * @param condition The condition to periodically test - * @param timeout The timeout - * @return true if condition passes, false if condition does not pass within timeout - */ - public static boolean waitFor(TestCondition condition, long timeout) { - - try { - Awaitility.await().atMost(timeout, TimeUnit.MILLISECONDS).until(condition::passes); - return true; - } catch (Exception e) { - return false; - } - } -} diff --git a/src/test/java/org/springframework/data/redis/TestCondition.java b/src/test/java/org/springframework/data/redis/TestCondition.java index 62159e939..da2f4ca27 100644 --- a/src/test/java/org/springframework/data/redis/TestCondition.java +++ b/src/test/java/org/springframework/data/redis/TestCondition.java @@ -15,8 +15,10 @@ */ package org.springframework.data.redis; +import org.awaitility.Awaitility; + /** - * A condition to test periodically, used in conjunction with {@link SpinBarrier} + * A condition to test periodically, used in conjunction with {@link Awaitility} * * @author Jennifer Hickey */ diff --git a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java index 5a26103fb..cd97fda02 100644 --- a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java @@ -17,7 +17,7 @@ package org.springframework.data.redis.connection; import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assumptions.*; -import static org.springframework.data.redis.SpinBarrier.*; +import static org.awaitility.Awaitility.await; import static org.springframework.data.redis.connection.BitFieldSubCommands.*; import static org.springframework.data.redis.connection.BitFieldSubCommands.BitFieldIncrBy.Overflow.*; import static org.springframework.data.redis.connection.BitFieldSubCommands.BitFieldType.*; @@ -36,6 +36,7 @@ import java.util.concurrent.LinkedBlockingDeque; import java.util.concurrent.TimeUnit; import org.assertj.core.data.Offset; +import org.awaitility.Awaitility; import org.junit.AssumptionViolatedException; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -162,7 +163,9 @@ public abstract class AbstractConnectionIntegrationTests { actual.add(connection.expire("exp", 1)); verifyResults(Arrays.asList(true, true)); - assertThat(waitFor(new KeyExpired("exp"), 3000L)).isTrue(); + + KeyExpired keyExpired = new KeyExpired("exp"); + await().atMost(Duration.ofMillis(3000L)).until(keyExpired::passes); } @Test // DATAREDIS-1103 @@ -185,7 +188,9 @@ public abstract class AbstractConnectionIntegrationTests { actual.add(connection.set("exp2", "true")); actual.add(connection.expireAt("exp2", System.currentTimeMillis() / 1000 + 1)); verifyResults(Arrays.asList(true, true)); - assertThat(waitFor(new KeyExpired("exp2"), 3000L)).isTrue(); + + KeyExpired keyExpired = new KeyExpired("exp2"); + await().atMost(Duration.ofMillis(3000L)).until(keyExpired::passes); } @LongRunningTest @@ -194,7 +199,9 @@ public abstract class AbstractConnectionIntegrationTests { actual.add(connection.set("exp", "true")); actual.add(connection.pExpire("exp", 100)); verifyResults(Arrays.asList(true, true)); - assertThat(waitFor(new KeyExpired("exp"), 1000L)).isTrue(); + + KeyExpired keyExpired = new KeyExpired("exp"); + await().atMost(Duration.ofMillis(1000L)).until(keyExpired::passes); } @Test @@ -209,7 +216,9 @@ public abstract class AbstractConnectionIntegrationTests { actual.add(connection.set("exp2", "true")); actual.add(connection.pExpireAt("exp2", System.currentTimeMillis() + 200)); verifyResults(Arrays.asList(true, true)); - assertThat(waitFor(new KeyExpired("exp2"), 1000L)).isTrue(); + + KeyExpired keyExpired = new KeyExpired("exp2"); + await().atMost(Duration.ofMillis(1000L)).until(keyExpired::passes); } @LongRunningTest @@ -390,7 +399,9 @@ public abstract class AbstractConnectionIntegrationTests { actual.add(connection.get("expy")); verifyResults(Arrays.asList(true, "yep")); - assertThat(waitFor(new KeyExpired("expy"), 2500L)).isTrue(); + + KeyExpired keyExpired = new KeyExpired("expy"); + await().atMost(Duration.ofMillis(2500L)).until(keyExpired::passes); } @LongRunningTest // DATAREDIS-271 @@ -400,7 +411,9 @@ public abstract class AbstractConnectionIntegrationTests { actual.add(connection.get("expy")); verifyResults(Arrays.asList(true, "yep")); - assertThat(waitFor(new KeyExpired("expy"), 2500L)).isTrue(); + + KeyExpired keyExpired = new KeyExpired("expy"); + await().atMost(Duration.ofMillis(2500L)).until(keyExpired::passes); } @LongRunningTest @@ -632,7 +645,8 @@ public abstract class AbstractConnectionIntegrationTests { Thread th = new Thread(() -> { // sync to let the registration happen - waitFor(connection::isSubscribed, 2000); + await().atMost(Duration.ofMillis(2000L)).until(connection::isSubscribed); + try { Thread.sleep(500); } catch (InterruptedException o_O) {} @@ -674,7 +688,7 @@ public abstract class AbstractConnectionIntegrationTests { Thread th = new Thread(() -> { // sync to let the registration happen - waitFor(connection::isSubscribed, 2000); + await().atMost(Duration.ofMillis(2000L)).until(connection::isSubscribed); try { Thread.sleep(500); @@ -1093,7 +1107,9 @@ public abstract class AbstractConnectionIntegrationTests { actual.add(connection.get("testing")); connection.restore("testing".getBytes(), 100L, (byte[]) results.get(1)); verifyResults(Arrays.asList(1L, null)); - assertThat(waitFor(new KeyExpired("testing"), 400L)).isTrue(); + + KeyExpired keyExpired = new KeyExpired("testing"); + await().atMost(Duration.ofMillis(400L)).until(keyExpired::passes); } @Test diff --git a/src/test/java/org/springframework/data/redis/core/DefaultValueOperationsIntegrationTests.java b/src/test/java/org/springframework/data/redis/core/DefaultValueOperationsIntegrationTests.java index 42a0ceee3..c1ff5f7ca 100644 --- a/src/test/java/org/springframework/data/redis/core/DefaultValueOperationsIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/core/DefaultValueOperationsIntegrationTests.java @@ -17,7 +17,7 @@ package org.springframework.data.redis.core; import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assumptions.*; -import static org.springframework.data.redis.SpinBarrier.*; +import static org.awaitility.Awaitility.await; import java.text.DecimalFormat; import java.time.Duration; @@ -31,6 +31,7 @@ import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.BeforeEach; import org.springframework.data.redis.ObjectFactory; +import org.springframework.data.redis.connection.AbstractConnectionIntegrationTests; import org.springframework.data.redis.test.condition.EnabledIfLongRunningTest; import org.springframework.data.redis.test.condition.EnabledOnCommand; import org.springframework.data.redis.test.extension.parametrized.MethodSource; @@ -316,7 +317,7 @@ public class DefaultValueOperationsIntegrationTests { valueOps.set(key, value, 1, TimeUnit.MILLISECONDS); - waitFor(() -> (!redisTemplate.hasKey(key)), 500); + await().atMost(Duration.ofMillis(500L)).until(() -> !redisTemplate.hasKey(key)); } @ParameterizedRedisTest diff --git a/src/test/java/org/springframework/data/redis/core/RedisTemplateIntegrationTests.java b/src/test/java/org/springframework/data/redis/core/RedisTemplateIntegrationTests.java index b6344e274..e88f04d8f 100644 --- a/src/test/java/org/springframework/data/redis/core/RedisTemplateIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/core/RedisTemplateIntegrationTests.java @@ -17,7 +17,7 @@ package org.springframework.data.redis.core; import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assumptions.*; -import static org.springframework.data.redis.SpinBarrier.*; +import static org.awaitility.Awaitility.await; import java.time.Duration; import java.time.Instant; @@ -617,7 +617,7 @@ public class RedisTemplateIntegrationTests { V value1 = valueFactory.instance(); redisTemplate.boundValueOps(key1).set(value1); redisTemplate.expireAt(key1, new Date(System.currentTimeMillis() + 5L)); - waitFor(() -> (!redisTemplate.hasKey(key1)), 5L); + await().atMost(Duration.ofMillis(5L)).until(() -> !redisTemplate.hasKey(key1)); } @ParameterizedRedisTest // DATAREDIS-611 @@ -626,7 +626,7 @@ public class RedisTemplateIntegrationTests { V value1 = valueFactory.instance(); redisTemplate.boundValueOps(key1).set(value1); redisTemplate.expireAt(key1, Instant.now().plus(5, ChronoUnit.MILLIS)); - waitFor(() -> (!redisTemplate.hasKey(key1)), 5L); + await().atMost(Duration.ofMillis(5L)).until(() -> !redisTemplate.hasKey(key1)); } @ParameterizedRedisTest @@ -644,7 +644,7 @@ public class RedisTemplateIntegrationTests { template2.boundValueOps((String) key1).set((String) value1); template2.expireAt((String) key1, new Date(System.currentTimeMillis() + 5L)); // Just ensure this works as expected, pExpireAt just adds some precision over expireAt - waitFor(() -> (!template2.hasKey((String) key1)), 5L); + await().atMost(Duration.ofMillis(5L)).until(() -> !template2.hasKey((String) key1)); } @ParameterizedRedisTest