diff --git a/archaius2-api/src/test/java/com/netflix/archaius/api/ArchaiusTypeTest.java b/archaius2-api/src/test/java/com/netflix/archaius/api/ArchaiusTypeTest.java index b2dc540f..1caea038 100644 --- a/archaius2-api/src/test/java/com/netflix/archaius/api/ArchaiusTypeTest.java +++ b/archaius2-api/src/test/java/com/netflix/archaius/api/ArchaiusTypeTest.java @@ -1,5 +1,7 @@ package com.netflix.archaius.api; +import com.google.common.reflect.TypeParameter; +import com.google.common.reflect.TypeToken; import org.junit.jupiter.api.Test; import java.lang.reflect.ParameterizedType; @@ -13,6 +15,15 @@ import static org.junit.jupiter.api.Assertions.assertNotSame; public class ArchaiusTypeTest { + + private static final Type listOfString = new TypeToken>() {}.getType(); + private static final Type setOfLong = new TypeToken>() {}.getType(); + private static final Type mapOfIntToCharSequence = new TypeToken>() {}.getType(); + + private static TypeToken> listOfType(Class klazz) { + return new TypeToken>() {}.where(new TypeParameter() {}, klazz); + } + @Test public void testEquals() { ParameterizedType archaiusType = ArchaiusType.forListOf(String.class); @@ -21,6 +32,9 @@ public void testEquals() { assertEquals(archaiusType, ArchaiusType.forListOf(String.class)); assertNotEquals(archaiusType, ArchaiusType.forListOf(Integer.class)); assertNotEquals(archaiusType, setOfLong); + + // Test against Guava's ParameterizedType implementation + assertEquals(archaiusType, listOfType(String.class).getType()); } @Test @@ -29,6 +43,9 @@ public void testHashCode() { assertEquals(ArchaiusType.forListOf(String.class).hashCode(), ArchaiusType.forListOf(String.class).hashCode()); assertEquals(setOfLong.hashCode(), ArchaiusType.forSetOf(Long.class).hashCode()); assertEquals(ArchaiusType.forMapOf(Integer.class, CharSequence.class).hashCode(), mapOfIntToCharSequence.hashCode()); + + // Test against Guava's ParameterizedType implementation + assertEquals(ArchaiusType.forListOf(String.class).hashCode(), listOfType(String.class).getType().hashCode()); } @Test @@ -53,21 +70,4 @@ public void testGetTypeParameters() { assertEquals(1, typeArguments.length); assertEquals(Long.class, typeArguments[0]); } - - private static List listOfString() { throw new AssertionError(); } - private static Set setOfLong() { throw new AssertionError(); } - private static Map mapOfIntToCharSequence() { throw new AssertionError(); } - private static final ParameterizedType listOfString; - private static final ParameterizedType setOfLong; - private static final ParameterizedType mapOfIntToCharSequence; - - static { - try { - listOfString = (ParameterizedType) ArchaiusTypeTest.class.getDeclaredMethod("listOfString").getGenericReturnType(); - setOfLong = (ParameterizedType) ArchaiusTypeTest.class.getDeclaredMethod("setOfLong").getGenericReturnType(); - mapOfIntToCharSequence = (ParameterizedType) ArchaiusTypeTest.class.getDeclaredMethod("mapOfIntToCharSequence").getGenericReturnType(); - } catch (NoSuchMethodException exc) { - throw new AssertionError("Method not found", exc); - } - } } diff --git a/archaius2-core/src/test/java/com/netflix/archaius/DefaultDecoderTest.java b/archaius2-core/src/test/java/com/netflix/archaius/DefaultDecoderTest.java index 7ea5903c..caec3c28 100644 --- a/archaius2-core/src/test/java/com/netflix/archaius/DefaultDecoderTest.java +++ b/archaius2-core/src/test/java/com/netflix/archaius/DefaultDecoderTest.java @@ -15,7 +15,6 @@ */ package com.netflix.archaius; -import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.math.BigDecimal; import java.math.BigInteger; @@ -43,6 +42,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; +import com.google.common.reflect.TypeToken; import com.netflix.archaius.api.Decoder; import com.netflix.archaius.api.TypeConverter; import com.netflix.archaius.converters.ArrayTypeConverterFactory; @@ -58,30 +58,10 @@ public class DefaultDecoderTest { - @SuppressWarnings("unused") // accessed via reflection - private static Collection collectionOfLong; - @SuppressWarnings("unused") // accessed via reflection - private static List listOfInteger; - @SuppressWarnings("unused") // accessed via reflection - private static Set setOfLong; - @SuppressWarnings("unused") // accessed via reflection - private static Map mapOfStringToInteger; - - private static final ParameterizedType collectionOfLongType; - private static final ParameterizedType listOfIntegerType; - private static final ParameterizedType setOfLongType; - private static final ParameterizedType mapofStringToIntegerType; - - static { - try { - collectionOfLongType = (ParameterizedType) DefaultDecoderTest.class.getDeclaredField("collectionOfLong").getGenericType(); - listOfIntegerType = (ParameterizedType) DefaultDecoderTest.class.getDeclaredField("listOfInteger").getGenericType(); - setOfLongType = (ParameterizedType) DefaultDecoderTest.class.getDeclaredField("setOfLong").getGenericType(); - mapofStringToIntegerType = (ParameterizedType) DefaultDecoderTest.class.getDeclaredField("mapOfStringToInteger").getGenericType(); - } catch (NoSuchFieldException exc) { - throw new AssertionError("listOfString field not found", exc); - } - } + private static final Type collectionOfLongType = new TypeToken>() {}.getType(); + private static final Type listOfIntegerType = new TypeToken>() {}.getType(); + private static final Type setOfLongType = new TypeToken>() {}.getType(); + private static final Type mapofStringToIntegerType = new TypeToken>() {}.getType(); @Test public void testJavaNumbers() { diff --git a/archaius2-core/src/test/java/com/netflix/archaius/TestUtils.java b/archaius2-core/src/test/java/com/netflix/archaius/TestUtils.java deleted file mode 100644 index bbe36d03..00000000 --- a/archaius2-core/src/test/java/com/netflix/archaius/TestUtils.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.netflix.archaius; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedHashSet; -import java.util.Set; - -public class TestUtils { - @SafeVarargs - public static Set set(T ... values) { - return Collections.unmodifiableSet(new LinkedHashSet<>(Arrays.asList(values))); - } - - public static Set set(Iterator values) { - Set vals = new LinkedHashSet<>(); - values.forEachRemaining(vals::add); - return Collections.unmodifiableSet(vals); - } - - public static Set set(Iterable values) { - return values instanceof Collection ? new HashSet<>((Collection) values) : set(values.iterator()); - } - - public static int size(Iterable values) { - if (values instanceof Collection) { - return ((Collection) values).size(); - } - int count = 0; - for (T el : values) { - count++; - } - return count; - } -} diff --git a/archaius2-core/src/test/java/com/netflix/archaius/config/CompositeConfigTest.java b/archaius2-core/src/test/java/com/netflix/archaius/config/CompositeConfigTest.java index 0a76f3f2..7dd5a20f 100644 --- a/archaius2-core/src/test/java/com/netflix/archaius/config/CompositeConfigTest.java +++ b/archaius2-core/src/test/java/com/netflix/archaius/config/CompositeConfigTest.java @@ -24,6 +24,8 @@ import java.util.Properties; import java.util.concurrent.Callable; +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; import com.netflix.archaius.api.Config; import com.netflix.archaius.api.config.SettableConfig; import com.netflix.archaius.config.polling.ManualPollingStrategy; @@ -37,8 +39,6 @@ import com.netflix.archaius.visitor.PrintStreamVisitor; import org.junit.jupiter.api.Test; -import static com.netflix.archaius.TestUtils.set; -import static com.netflix.archaius.TestUtils.size; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -151,18 +151,18 @@ public void getKeysTest() throws ConfigException { composite.addConfig("b", MapConfig.builder().put("b1", "A").put("b2", "B").build()); iter = composite.getKeys(); - assertEquals(set("b1", "b2"), set(iter)); + assertEquals(Sets.newHashSet("b1", "b2"), Sets.newHashSet(iter)); composite.addConfig("c", EmptyConfig.INSTANCE); iter = composite.getKeys(); - assertEquals(set("b1", "b2"), set(iter)); + assertEquals(Sets.newHashSet("b1", "b2"), Sets.newHashSet(iter)); composite.addConfig("d", MapConfig.builder().put("d1", "A").put("d2", "B").build()); composite.addConfig("e", MapConfig.builder().put("e1", "A").put("e2", "B").build()); iter = composite.getKeys(); - assertEquals(set("b1", "b2", "d1", "d2", "e1", "e2"), set(iter)); + assertEquals(Sets.newHashSet("b1", "b2", "d1", "d2", "e1", "e2"), Sets.newHashSet(iter)); } @Test @@ -189,8 +189,8 @@ public void testKeysIterable() throws ConfigException { Iterable keys = composite.keys(); - assertEquals(4, size(keys)); - assertEquals(set("d1", "d2", "e1", "e2"), set(keys)); + assertEquals(4, Iterables.size(keys)); + assertEquals(Sets.newHashSet("d1", "d2", "e1", "e2"), Sets.newHashSet(keys)); } @Test diff --git a/archaius2-core/src/test/java/com/netflix/archaius/config/DefaultLayeredConfigTest.java b/archaius2-core/src/test/java/com/netflix/archaius/config/DefaultLayeredConfigTest.java index 4346c7bb..6d5e72d1 100644 --- a/archaius2-core/src/test/java/com/netflix/archaius/config/DefaultLayeredConfigTest.java +++ b/archaius2-core/src/test/java/com/netflix/archaius/config/DefaultLayeredConfigTest.java @@ -1,5 +1,7 @@ package com.netflix.archaius.config; +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; import com.netflix.archaius.Layers; import com.netflix.archaius.api.Config; import com.netflix.archaius.api.ConfigListener; @@ -16,13 +18,12 @@ import java.lang.ref.Reference; import java.lang.ref.WeakReference; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.concurrent.Callable; -import static com.netflix.archaius.TestUtils.set; -import static com.netflix.archaius.TestUtils.size; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; @@ -41,7 +42,8 @@ public void validateApiOnEmptyConfig() { assertFalse(config.getProperty("propname").isPresent()); assertNull(config.getRawProperty("propname")); - + + @SuppressWarnings("unchecked") LayeredConfig.LayeredVisitor visitor = Mockito.mock(LayeredConfig.LayeredVisitor.class); config.accept(visitor); Mockito.verify(visitor, Mockito.never()).visitConfig(any(), any()); @@ -227,8 +229,8 @@ public void testKeysIterable() { config.addConfig(Layers.LIBRARY, libConfig); Iterable keys = config.keys(); - assertEquals(1, size(keys)); - assertEquals(set("propname"), set(keys)); + assertEquals(1, Iterables.size(keys)); + assertEquals(Collections.singleton("propname"), Sets.newHashSet(keys)); } @Test diff --git a/archaius2-core/src/test/java/com/netflix/archaius/config/DefaultSettableConfigTest.java b/archaius2-core/src/test/java/com/netflix/archaius/config/DefaultSettableConfigTest.java index dbbbc1f9..b8099627 100644 --- a/archaius2-core/src/test/java/com/netflix/archaius/config/DefaultSettableConfigTest.java +++ b/archaius2-core/src/test/java/com/netflix/archaius/config/DefaultSettableConfigTest.java @@ -1,13 +1,13 @@ package com.netflix.archaius.config; +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; import com.netflix.archaius.api.config.SettableConfig; import org.junit.jupiter.api.Test; import java.util.Collection; import java.util.Properties; -import static com.netflix.archaius.TestUtils.set; -import static com.netflix.archaius.TestUtils.size; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -25,18 +25,18 @@ public void testGetKeys() { config.setProperty("prop2", "value2"); config.setProperty("prop3", "value3"); - assertEquals(set("prop1", "prop2", "prop3"), set(config.getKeys())); + assertEquals(Sets.newHashSet("prop1", "prop2", "prop3"), Sets.newHashSet(config.getKeys())); config.clearProperty("prop3"); - assertEquals(set("prop1", "prop2"), set(config.getKeys())); + assertEquals(Sets.newHashSet("prop1", "prop2"), Sets.newHashSet(config.getKeys())); config.setProperties(MapConfig.builder().put("prop4", "value4").build()); - assertEquals(set("prop1", "prop2", "prop4"), set(config.getKeys())); + assertEquals(Sets.newHashSet("prop1", "prop2", "prop4"), Sets.newHashSet(config.getKeys())); Properties props = new Properties(); props.put("prop5", "value5"); config.setProperties(props); - assertEquals(set("prop1", "prop2", "prop4", "prop5"), set(config.getKeys())); + assertEquals(Sets.newHashSet("prop1", "prop2", "prop4", "prop5"), Sets.newHashSet(config.getKeys())); } @SuppressWarnings("deprecation") @@ -68,24 +68,24 @@ public void testGetKeysIteratorRemoveThrows() { public void testKeysIterable() { SettableConfig config = new DefaultSettableConfig(); - assertEquals(0, size(config.keys())); + assertEquals(0, Iterables.size(config.keys())); config.setProperty("prop1", "value1"); config.setProperty("prop2", "value2"); config.setProperty("prop3", "value3"); - assertEquals(set("prop1", "prop2", "prop3"), set(config.keys())); + assertEquals(Sets.newHashSet("prop1", "prop2", "prop3"), Sets.newHashSet(config.keys())); config.clearProperty("prop3"); - assertEquals(set("prop1", "prop2"), set(config.keys())); + assertEquals(Sets.newHashSet("prop1", "prop2"), Sets.newHashSet(config.keys())); config.setProperties(MapConfig.builder().put("prop4", "value4").build()); - assertEquals(set("prop1", "prop2", "prop4"), set(config.keys())); + assertEquals(Sets.newHashSet("prop1", "prop2", "prop4"), Sets.newHashSet(config.keys())); Properties props = new Properties(); props.put("prop5", "value5"); config.setProperties(props); - assertEquals(set("prop1", "prop2", "prop4", "prop5"), set(config.keys())); + assertEquals(Sets.newHashSet("prop1", "prop2", "prop4", "prop5"), Sets.newHashSet(config.keys())); } @Test diff --git a/archaius2-core/src/test/java/com/netflix/archaius/config/MapConfigTest.java b/archaius2-core/src/test/java/com/netflix/archaius/config/MapConfigTest.java index 92ad34d5..5379b1a2 100644 --- a/archaius2-core/src/test/java/com/netflix/archaius/config/MapConfigTest.java +++ b/archaius2-core/src/test/java/com/netflix/archaius/config/MapConfigTest.java @@ -23,12 +23,12 @@ import java.util.NoSuchElementException; import java.util.Set; +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; import com.netflix.archaius.api.Config; import com.netflix.archaius.exceptions.ParseException; import org.junit.jupiter.api.Test; -import static com.netflix.archaius.TestUtils.set; -import static com.netflix.archaius.TestUtils.size; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -226,8 +226,8 @@ public void testKeysIterable() { .build(); Iterable keys = config.keys(); - assertEquals(2, size(keys)); - assertEquals(set("key1", "key2"), set(keys)); + assertEquals(2, Iterables.size(keys)); + assertEquals(Sets.newHashSet("key1", "key2"), Sets.newHashSet(keys)); } @Test diff --git a/archaius2-core/src/test/java/com/netflix/archaius/config/PollingDynamicConfigTest.java b/archaius2-core/src/test/java/com/netflix/archaius/config/PollingDynamicConfigTest.java index 75eae925..27004aa1 100644 --- a/archaius2-core/src/test/java/com/netflix/archaius/config/PollingDynamicConfigTest.java +++ b/archaius2-core/src/test/java/com/netflix/archaius/config/PollingDynamicConfigTest.java @@ -25,6 +25,8 @@ import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicInteger; +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; import com.netflix.archaius.api.PropertyDetails; import com.netflix.archaius.config.polling.PollingResponse; import com.netflix.archaius.instrumentation.AccessMonitorUtil; @@ -39,8 +41,6 @@ import org.junit.jupiter.api.Timeout; import org.junit.jupiter.api.extension.RegisterExtension; -import static com.netflix.archaius.TestUtils.set; -import static com.netflix.archaius.TestUtils.size; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; @@ -290,8 +290,8 @@ public void testKeysIterable() throws Exception { strategy.fire(); Iterable keys = config.keys(); - assertEquals(2, size(keys)); - assertEquals(set("foo", "bar"), set(keys)); + assertEquals(2, Iterables.size(keys)); + assertEquals(Sets.newHashSet("foo", "bar"), Sets.newHashSet(keys)); } @Test diff --git a/archaius2-core/src/test/java/com/netflix/archaius/config/PrefixedViewTest.java b/archaius2-core/src/test/java/com/netflix/archaius/config/PrefixedViewTest.java index c6662d7d..eb2ad5ad 100644 --- a/archaius2-core/src/test/java/com/netflix/archaius/config/PrefixedViewTest.java +++ b/archaius2-core/src/test/java/com/netflix/archaius/config/PrefixedViewTest.java @@ -1,5 +1,7 @@ package com.netflix.archaius.config; +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; import com.netflix.archaius.api.Config; import com.netflix.archaius.api.ConfigListener; import com.netflix.archaius.api.PropertyDetails; @@ -22,8 +24,6 @@ import org.junit.jupiter.api.Test; import org.mockito.Mockito; -import static com.netflix.archaius.TestUtils.set; -import static com.netflix.archaius.TestUtils.size; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; @@ -150,8 +150,8 @@ public void testKeysIterable() { .getPrefixedView("foo"); Iterable keys = config.keys(); - assertEquals(2, size(keys)); - assertEquals(set("prop1", "prop2"), set(keys)); + assertEquals(2, Iterables.size(keys)); + assertEquals(Sets.newHashSet("prop1", "prop2"), Sets.newHashSet(keys)); } @Test diff --git a/archaius2-core/src/test/java/com/netflix/archaius/config/PrivateViewTest.java b/archaius2-core/src/test/java/com/netflix/archaius/config/PrivateViewTest.java index acadc139..73d444b9 100644 --- a/archaius2-core/src/test/java/com/netflix/archaius/config/PrivateViewTest.java +++ b/archaius2-core/src/test/java/com/netflix/archaius/config/PrivateViewTest.java @@ -1,5 +1,7 @@ package com.netflix.archaius.config; +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; import com.netflix.archaius.api.Config; import com.netflix.archaius.api.ConfigListener; import com.netflix.archaius.api.Decoder; @@ -22,8 +24,6 @@ import java.util.Set; import java.util.concurrent.Callable; -import static com.netflix.archaius.TestUtils.set; -import static com.netflix.archaius.TestUtils.size; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotSame; @@ -161,8 +161,8 @@ public void testKeysIterable() { .getPrivateView(); Iterable keys = config.keys(); - assertEquals(2, size(keys)); - assertEquals(set("foo", "bar"), set(keys)); + assertEquals(2, Iterables.size(keys)); + assertEquals(Sets.newHashSet("foo", "bar"), Sets.newHashSet(keys)); } @Test diff --git a/archaius2-core/src/test/java/com/netflix/archaius/mapper/ProxyFactoryTest.java b/archaius2-core/src/test/java/com/netflix/archaius/mapper/ProxyFactoryTest.java index 06b94b2f..35abf4b2 100644 --- a/archaius2-core/src/test/java/com/netflix/archaius/mapper/ProxyFactoryTest.java +++ b/archaius2-core/src/test/java/com/netflix/archaius/mapper/ProxyFactoryTest.java @@ -189,8 +189,6 @@ public void testProxy() throws ConfigException { assertThat(c.getFloat2(), equalTo(2.1f)); assertThat(c.getDouble(), equalTo(1.1)); assertThat(c.getDouble2(), equalTo(2.1)); - - System.out.println(c.toString()); } @Test diff --git a/build.gradle b/build.gradle index bc3f59ec..6ed0fb3e 100644 --- a/build.gradle +++ b/build.gradle @@ -26,6 +26,7 @@ subprojects { } dependencies { + testImplementation 'com.google.guava:guava:33.+' testImplementation 'org.slf4j:slf4j-reload4j:1.7.36' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.+' testImplementation 'org.hamcrest:hamcrest-all:1.3'