diff options
Diffstat (limited to 'container-core/src/test/java/com/yahoo/container/di')
9 files changed, 181 insertions, 170 deletions
diff --git a/container-core/src/test/java/com/yahoo/container/di/ConfigRetrieverTest.java b/container-core/src/test/java/com/yahoo/container/di/ConfigRetrieverTest.java index 695efbf7c17..942555e391d 100644 --- a/container-core/src/test/java/com/yahoo/container/di/ConfigRetrieverTest.java +++ b/container-core/src/test/java/com/yahoo/container/di/ConfigRetrieverTest.java @@ -9,18 +9,20 @@ import com.yahoo.container.di.ConfigRetriever.BootstrapConfigs; import com.yahoo.container.di.ConfigRetriever.ComponentsConfigs; import com.yahoo.container.di.ConfigRetriever.ConfigSnapshot; import com.yahoo.vespa.config.ConfigKey; -import org.junit.After; -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import java.io.File; import java.util.Collections; import java.util.HashSet; import java.util.Set; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; /** * @@ -32,18 +34,21 @@ public class ConfigRetrieverTest { private DirConfigSource dirConfigSource = null; - @Before + @TempDir + File tmpDir; + + @BeforeEach public void setup() { - dirConfigSource = new DirConfigSource("ConfigRetrieverTest-"); + dirConfigSource = new DirConfigSource(tmpDir, "ConfigRetrieverTest-"); } - @After + @AfterEach public void cleanup() { dirConfigSource.cleanup(); } @Test - public void require_that_bootstrap_configs_come_first() { + void require_that_bootstrap_configs_come_first() { writeConfigs(); ConfigRetriever retriever = createConfigRetriever(); ConfigSnapshot bootstrapConfigs = retriever.getConfigs(Collections.emptySet(), 0, true); @@ -53,7 +58,7 @@ public class ConfigRetrieverTest { @Test @SuppressWarnings("unused") - public void require_that_components_comes_after_bootstrap() { + void require_that_components_comes_after_bootstrap() { writeConfigs(); ConfigRetriever retriever = createConfigRetriever(); ConfigSnapshot bootstrapConfigs = retriever.getConfigs(Collections.emptySet(), 0, true); @@ -68,7 +73,7 @@ public class ConfigRetrieverTest { } } - @Ignore + @Disabled @SuppressWarnings("unused") public void require_exception_upon_modified_components_keys_without_bootstrap() { @@ -89,7 +94,7 @@ public class ConfigRetrieverTest { } @Test - public void require_that_empty_components_keys_after_bootstrap_returns_components_configs() { + void require_that_empty_components_keys_after_bootstrap_returns_components_configs() { writeConfigs(); ConfigRetriever retriever = createConfigRetriever(); assertTrue(retriever.getConfigs(Collections.emptySet(), 0, true) instanceof BootstrapConfigs); diff --git a/container-core/src/test/java/com/yahoo/container/di/ContainerTest.java b/container-core/src/test/java/com/yahoo/container/di/ContainerTest.java index 30dc4f313e4..04091c25ad6 100644 --- a/container-core/src/test/java/com/yahoo/container/di/ContainerTest.java +++ b/container-core/src/test/java/com/yahoo/container/di/ContainerTest.java @@ -9,8 +9,8 @@ import com.yahoo.container.di.componentgraph.Provider; import com.yahoo.container.di.componentgraph.core.ComponentGraph; import com.yahoo.container.di.componentgraph.core.ComponentGraphTest.SimpleComponent; import com.yahoo.container.di.componentgraph.core.ComponentNode.ComponentConstructorException; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; import org.osgi.framework.Bundle; import java.util.Collection; @@ -20,13 +20,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertThrows; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.*; /** * @author Tony Vaagenes @@ -36,7 +30,7 @@ import static org.junit.Assert.fail; public class ContainerTest extends ContainerTestBase { @Test - public void components_can_be_created_from_config() { + void components_can_be_created_from_config() { writeBootstrapConfigs(); dirConfigSource.writeConfig("test", "stringVal \"myString\""); @@ -49,7 +43,7 @@ public class ContainerTest extends ContainerTestBase { } @Test - public void components_are_reconfigured_after_config_update_without_bootstrap_configs() { + void components_are_reconfigured_after_config_update_without_bootstrap_configs() { writeBootstrapConfigs(); dirConfigSource.writeConfig("test", "stringVal \"original\""); @@ -71,7 +65,7 @@ public class ContainerTest extends ContainerTestBase { } @Test - public void graph_is_updated_after_bootstrap_update() { + void graph_is_updated_after_bootstrap_update() { dirConfigSource.writeConfig("test", "stringVal \"original\""); writeBootstrapConfigs("id1"); @@ -99,7 +93,7 @@ public class ContainerTest extends ContainerTestBase { } @Test - public void component_is_deconstructed_when_not_reused() { + void component_is_deconstructed_when_not_reused() { writeBootstrapConfigs("id1", DestructableComponent.class); Container container = newContainer(dirConfigSource); @@ -113,9 +107,9 @@ public class ContainerTest extends ContainerTestBase { assertTrue(componentToDestruct.deconstructed); } - @Ignore // because logAndDie is impossible(?) to verify programmatically + @Disabled // because logAndDie is impossible(?) to verify programmatically @Test - public void manually_verify_what_happens_when_first_graph_contains_component_that_throws_exception_in_ctor() { + void manually_verify_what_happens_when_first_graph_contains_component_that_throws_exception_in_ctor() { writeBootstrapConfigs("thrower", ComponentThrowingExceptionInConstructor.class); Container container = newContainer(dirConfigSource); try { @@ -127,7 +121,7 @@ public class ContainerTest extends ContainerTestBase { } @Test - public void previous_graph_is_retained_when_new_graph_contains_component_that_throws_exception_in_ctor() { + void previous_graph_is_retained_when_new_graph_contains_component_that_throws_exception_in_ctor() { ComponentEntry simpleComponentEntry = new ComponentEntry("simpleComponent", SimpleComponent.class); writeBootstrapConfigs(simpleComponentEntry); @@ -161,7 +155,7 @@ public class ContainerTest extends ContainerTestBase { } @Test - public void previous_graph_is_retained_when_new_graph_throws_exception_for_missing_config() { + void previous_graph_is_retained_when_new_graph_throws_exception_for_missing_config() { ComponentEntry simpleComponentEntry = new ComponentEntry("simpleComponent", SimpleComponent.class); writeBootstrapConfigs(simpleComponentEntry); @@ -185,7 +179,7 @@ public class ContainerTest extends ContainerTestBase { } @Test - public void getNewComponentGraph_hangs_waiting_for_valid_config_after_invalid_config() throws Exception { + void getNewComponentGraph_hangs_waiting_for_valid_config_after_invalid_config() throws Exception { dirConfigSource.writeConfig("test", "stringVal \"original\""); writeBootstrapConfigs("myId", ComponentTakingConfig.class); @@ -196,7 +190,7 @@ public class ContainerTest extends ContainerTestBase { container.reloadConfig(2); assertThrows(IllegalArgumentException.class, - () -> getNewComponentGraph(container, currentGraph)); + () -> getNewComponentGraph(container, currentGraph)); ExecutorService exec = Executors.newFixedThreadPool(1); Future<ComponentGraph> newGraph = exec.submit(() -> getNewComponentGraph(container, currentGraph)); @@ -215,7 +209,7 @@ public class ContainerTest extends ContainerTestBase { } @Test - public void providers_are_destructed() { + void providers_are_destructed() { writeBootstrapConfigs("id1", DestructableProvider.class); ComponentDeconstructor deconstructor = (generation, components, bundles) -> { @@ -226,7 +220,7 @@ public class ContainerTest extends ContainerTestBase { ((Provider<?>) component).deconstruct(); } }); - if (! bundles.isEmpty()) throw new IllegalArgumentException("This test should not use bundles"); + if (!bundles.isEmpty()) throw new IllegalArgumentException("This test should not use bundles"); }; Container container = newContainer(dirConfigSource, deconstructor); @@ -242,7 +236,7 @@ public class ContainerTest extends ContainerTestBase { } @Test - public void providers_are_invoked_only_when_needed() { + void providers_are_invoked_only_when_needed() { writeBootstrapConfigs("id1", FailOnGetProvider.class); Container container = newContainer(dirConfigSource); diff --git a/container-core/src/test/java/com/yahoo/container/di/ContainerTestBase.java b/container-core/src/test/java/com/yahoo/container/di/ContainerTestBase.java index e7f12d3f228..4383bd08f71 100644 --- a/container-core/src/test/java/com/yahoo/container/di/ContainerTestBase.java +++ b/container-core/src/test/java/com/yahoo/container/di/ContainerTestBase.java @@ -7,10 +7,12 @@ import com.yahoo.config.FileReference; import com.yahoo.container.bundle.BundleInstantiationSpecification; import com.yahoo.container.di.ContainerTest.ComponentTakingConfig; import com.yahoo.container.di.componentgraph.core.ComponentGraph; -import org.junit.After; -import org.junit.Before; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.io.TempDir; import org.osgi.framework.Bundle; +import java.io.File; import java.util.Collection; import java.util.Set; @@ -26,17 +28,20 @@ public class ContainerTestBase { private ComponentGraph componentGraph; protected DirConfigSource dirConfigSource = null; - @Before + @TempDir + File tmpDir; + + @BeforeEach public void setup() { - dirConfigSource = new DirConfigSource("ContainerTest-"); + dirConfigSource = new DirConfigSource(tmpDir, "ContainerTest-"); } - @After + @AfterEach public void cleanup() { dirConfigSource.cleanup(); } - @Before + @BeforeEach public void createGraph() { componentGraph = new ComponentGraph(0); } diff --git a/container-core/src/test/java/com/yahoo/container/di/DirConfigSource.java b/container-core/src/test/java/com/yahoo/container/di/DirConfigSource.java index 43b2c8ad8e6..db7e93f7c6e 100644 --- a/container-core/src/test/java/com/yahoo/container/di/DirConfigSource.java +++ b/container-core/src/test/java/com/yahoo/container/di/DirConfigSource.java @@ -3,7 +3,6 @@ package com.yahoo.container.di; import com.yahoo.config.subscription.ConfigSource; import com.yahoo.config.subscription.ConfigSourceSet; -import org.junit.rules.TemporaryFolder; import java.io.File; import java.io.FileOutputStream; @@ -18,15 +17,16 @@ import java.util.Random; */ public class DirConfigSource { - private final TemporaryFolder tempFolder = createTemporaryFolder(); + private final File tempFolder; public final ConfigSource configSource; - public DirConfigSource(String testSourcePrefix) { + public DirConfigSource(File tmpDir, String testSourcePrefix) { + this.tempFolder = tmpDir; this.configSource = new ConfigSourceSet(testSourcePrefix + new Random().nextLong()); } public void writeConfig(String name, String contents) { - File file = new File(tempFolder.getRoot(), name + ".cfg"); + File file = new File(tempFolder, name + ".cfg"); if (!file.exists()) { try { file.createNewFile(); @@ -39,7 +39,7 @@ public class DirConfigSource { } public String configId() { - return "dir:" + tempFolder.getRoot().getPath(); + return "dir:" + tempFolder.getPath(); } public ConfigSource configSource() { @@ -58,14 +58,4 @@ public class DirConfigSource { } } - private static TemporaryFolder createTemporaryFolder() { - TemporaryFolder folder = new TemporaryFolder(); - try { - folder.create(); - } catch (IOException e) { - throw new RuntimeException(e); - } - return folder; - } - } diff --git a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java index 4d44281658c..c21c1b35782 100644 --- a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java +++ b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ComponentGraphTest.java @@ -18,7 +18,7 @@ import com.yahoo.config.test.Test2Config; import com.yahoo.config.test.TestConfig; import com.yahoo.container.di.componentgraph.Provider; import com.yahoo.vespa.config.ConfigKey; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.lang.annotation.Annotation; import java.util.Collections; @@ -30,13 +30,7 @@ import java.util.concurrent.Executors; import java.util.function.Supplier; import static com.yahoo.container.di.componentgraph.core.ComponentGraph.isBindingAnnotation; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNotSame; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.*; /** * @author gjoranv @@ -50,6 +44,7 @@ public class ComponentGraphTest { super(); } + @SuppressWarnings("deprecation") public <T extends ConfigInstance> ConfigMap add(Class<T> clazz, String configId) { ConfigKey<T> key = new ConfigKey<>(clazz, configId); put(key, ConfigGetter.getConfig(key.getConfigClass(), key.getConfigId())); @@ -64,7 +59,7 @@ public class ComponentGraphTest { } @Test - public void component_taking_config_can_be_instantiated() { + void component_taking_config_can_be_instantiated() { ComponentGraph componentGraph = new ComponentGraph(); String configId = "raw:stringVal \"test-value\""; Node componentNode = mockComponentNode(ComponentTakingConfig.class, configId); @@ -79,7 +74,7 @@ public class ComponentGraphTest { } @Test - public void all_created_components_are_returned_in_reverse_topological_order() { + void all_created_components_are_returned_in_reverse_topological_order() { for (int i = 0; i < 10; i++) { Node innerComponent = mockComponentNode(SimpleComponent.class); Node middleComponent = mockComponentNode(ComponentTakingComponent.class); @@ -96,12 +91,12 @@ public class ComponentGraphTest { outerComponent.constructInstance(); assertEquals(List.of(outerComponent.constructedInstance().get(), middleComponent.constructedInstance().get(), innerComponent.constructedInstance().get()), - componentGraph.allConstructedComponentsAndProviders()); + componentGraph.allConstructedComponentsAndProviders()); } } @Test - public void component_can_be_injected_into_another_component() { + void component_can_be_explicitly_injected_into_another_component() { Node injectedComponent = mockComponentNode(SimpleComponent.class); Node targetComponent = mockComponentNode(ComponentTakingComponent.class); targetComponent.inject(injectedComponent); @@ -116,10 +111,26 @@ public class ComponentGraphTest { ComponentTakingComponent instance = componentGraph.getInstance(ComponentTakingComponent.class); assertNotNull(instance); + assertSame(injectedComponent.instance.get(), instance.injectedComponent); } @Test - public void interface_implementation_can_be_injected() { + void explicitly_injected_components_may_be_unused() { + Node notUsingInjected = mockComponentNode(SimpleComponent.class); + Node injectedComponent = mockComponentNode(SimpleComponent2.class); + notUsingInjected.inject(injectedComponent); + + ComponentGraph componentGraph = new ComponentGraph(); + componentGraph.add(injectedComponent); + componentGraph.add(notUsingInjected); + componentGraph.complete(); + + SimpleComponent instanceNotUsingInjected = componentGraph.getInstance(SimpleComponent.class); + assertNotNull(instanceNotUsingInjected); + } + + @Test + void interface_implementation_can_be_injected() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(ComponentImpl.class)); componentGraph.add(mockComponentNode(ComponentTakingInterface.class)); @@ -130,7 +141,7 @@ public class ComponentGraphTest { } @Test - public void private_class_with_public_ctor_can_be_instantiated() { + void private_class_with_public_ctor_can_be_instantiated() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(PrivateClassComponent.class)); componentGraph.complete(); @@ -140,7 +151,7 @@ public class ComponentGraphTest { } @Test - public void all_components_of_a_type_can_be_injected() { + void all_components_of_a_type_can_be_injected() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(SimpleComponent.class)); componentGraph.add(mockComponentNode(SimpleComponent.class)); @@ -153,7 +164,7 @@ public class ComponentGraphTest { } @Test - public void empty_component_registry_can_be_injected() { + void empty_component_registry_can_be_injected() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(ComponentTakingAllSimpleComponents.class)); componentGraph.complete(); @@ -163,7 +174,7 @@ public class ComponentGraphTest { } @Test - public void component_registry_with_wildcard_upper_bound_can_be_injected() { + void component_registry_with_wildcard_upper_bound_can_be_injected() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(SimpleComponent.class)); componentGraph.add(mockComponentNode(SimpleDerivedComponent.class)); @@ -175,22 +186,24 @@ public class ComponentGraphTest { assertEquals(2, instance.simpleComponents.allComponents().size()); } - @Test(expected = RuntimeException.class) - public void require_exception_when_injecting_registry_with_unknown_type_variable() { - @SuppressWarnings("rawtypes") - Class<ComponentTakingAllComponentsWithTypeVariable> clazz = ComponentTakingAllComponentsWithTypeVariable.class; + @Test + void require_exception_when_injecting_registry_with_unknown_type_variable() { + assertThrows(RuntimeException.class, () -> { + @SuppressWarnings("rawtypes") + Class<ComponentTakingAllComponentsWithTypeVariable> clazz = ComponentTakingAllComponentsWithTypeVariable.class; - ComponentGraph componentGraph = new ComponentGraph(); - componentGraph.add(mockComponentNode(SimpleComponent.class)); - componentGraph.add(mockComponentNode(SimpleDerivedComponent.class)); - componentGraph.add(mockComponentNode(clazz)); - componentGraph.complete(); + ComponentGraph componentGraph = new ComponentGraph(); + componentGraph.add(mockComponentNode(SimpleComponent.class)); + componentGraph.add(mockComponentNode(SimpleDerivedComponent.class)); + componentGraph.add(mockComponentNode(clazz)); + componentGraph.complete(); - componentGraph.getInstance(clazz); + componentGraph.getInstance(clazz); + }); } @Test - public void components_are_shared() { + void components_are_shared() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(SimpleComponent.class)); componentGraph.complete(); @@ -201,7 +214,7 @@ public class ComponentGraphTest { } @Test - public void singleton_components_can_be_injected() { + void singleton_components_can_be_injected() { ComponentGraph componentGraph = new ComponentGraph(); String configId = "raw:stringVal \"test-value\""; @@ -216,17 +229,19 @@ public class ComponentGraphTest { assertEquals("test-value", injected.config.stringVal()); } - @Test(expected = RuntimeException.class) - public void require_error_when_multiple_components_match_a_singleton_dependency() { - ComponentGraph componentGraph = new ComponentGraph(); - componentGraph.add(mockComponentNode(SimpleDerivedComponent.class)); - componentGraph.add(mockComponentNode(SimpleComponent.class)); - componentGraph.add(mockComponentNode(ComponentTakingComponent.class)); - componentGraph.complete(); + @Test + void require_error_when_multiple_components_match_a_singleton_dependency() { + assertThrows(RuntimeException.class, () -> { + ComponentGraph componentGraph = new ComponentGraph(); + componentGraph.add(mockComponentNode(SimpleDerivedComponent.class)); + componentGraph.add(mockComponentNode(SimpleComponent.class)); + componentGraph.add(mockComponentNode(ComponentTakingComponent.class)); + componentGraph.complete(); + }); } @Test - public void named_component_can_be_injected() { + void named_component_can_be_injected() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(SimpleComponent.class)); componentGraph.add(mockComponentNode(SimpleComponent.class, Names.named("named-test"))); @@ -235,7 +250,7 @@ public class ComponentGraphTest { } @Test - public void config_keys_can_be_retrieved() { + void config_keys_can_be_retrieved() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(ComponentTakingConfig.class, "raw:stringVal \"component1\"")); componentGraph.add(mockComponentNode(ComponentTakingConfig.class, "raw:stringVal \"component2\"")); @@ -252,7 +267,7 @@ public class ComponentGraphTest { } @Test - public void providers_can_be_instantiated() { + void providers_can_be_instantiated() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(ExecutorProvider.class)); componentGraph.complete(); @@ -261,7 +276,7 @@ public class ComponentGraphTest { } @Test - public void providers_can_be_inherited() { + void providers_can_be_inherited() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(DerivedExecutorProvider.class)); componentGraph.complete(); @@ -270,7 +285,7 @@ public class ComponentGraphTest { } @Test - public void providers_can_deliver_a_new_instance_for_each_component() { + void providers_can_deliver_a_new_instance_for_each_component() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(NewIntProvider.class)); componentGraph.complete(); @@ -282,7 +297,7 @@ public class ComponentGraphTest { } @Test - public void providers_can_be_injected_explicitly() { + void providers_can_be_injected_explicitly() { ComponentGraph componentGraph = new ComponentGraph(); Node componentTakingExecutor = mockComponentNode(ComponentTakingExecutor.class); @@ -299,7 +314,7 @@ public class ComponentGraphTest { } @Test - public void global_providers_can_be_injected() { + void global_providers_can_be_injected() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(ComponentTakingExecutor.class)); @@ -310,18 +325,20 @@ public class ComponentGraphTest { assertNotNull(componentGraph.getInstance(ComponentTakingExecutor.class)); } - @Test(expected = RuntimeException.class) - public void throw_if_multiple_global_providers_exist() { - ComponentGraph componentGraph = new ComponentGraph(); + @Test + void throw_if_multiple_global_providers_exist() { + assertThrows(RuntimeException.class, () -> { + ComponentGraph componentGraph = new ComponentGraph(); - componentGraph.add(mockComponentNode(ExecutorProvider.class)); - componentGraph.add(mockComponentNode(ExecutorProvider.class)); - componentGraph.add(mockComponentNode(ComponentTakingExecutor.class)); - componentGraph.complete(); + componentGraph.add(mockComponentNode(ExecutorProvider.class)); + componentGraph.add(mockComponentNode(ExecutorProvider.class)); + componentGraph.add(mockComponentNode(ComponentTakingExecutor.class)); + componentGraph.complete(); + }); } @Test - public void provider_is_not_used_when_component_of_provided_class_exists() { + void provider_is_not_used_when_component_of_provided_class_exists() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(SimpleComponent.class)); @@ -335,13 +352,13 @@ public class ComponentGraphTest { //TODO: move @Test - public void check_if_annotation_is_a_binding_annotation() { + void check_if_annotation_is_a_binding_annotation() { assertTrue(isBindingAnnotation(Names.named("name"))); assertFalse(isBindingAnnotation(Named.class.getAnnotations()[0])); } @Test - public void cycles_gives_exception() { + void cycles_gives_exception() { ComponentGraph componentGraph = new ComponentGraph(); Node node1 = mockComponentNode(ComponentCausingCycle.class); @@ -362,18 +379,20 @@ public class ComponentGraphTest { } } - @Test(expected = IllegalArgumentException.class) - public void abstract_classes_are_rejected() { - new ComponentNode(ComponentId.fromString("Test"), "", AbstractClass.class); + @Test + void abstract_classes_are_rejected() { + assertThrows(IllegalArgumentException.class, () -> { + new ComponentNode(ComponentId.fromString("Test"), "", AbstractClass.class); + }); } @Test - public void inject_constructor_is_preferred() { + void inject_constructor_is_preferred() { assertThatComponentCanBeCreated(ComponentWithInjectConstructor.class); } @Test - public void constructor_with_most_parameters_is_preferred() { + void constructor_with_most_parameters_is_preferred() { assertThatComponentCanBeCreated(ComponentWithMultipleConstructors.class); } @@ -390,7 +409,7 @@ public class ComponentGraphTest { } @Test - public void require_fallback_to_child_injector() { + void require_fallback_to_child_injector() { ComponentGraph componentGraph = new ComponentGraph(); componentGraph.add(mockComponentNode(ComponentTakingExecutor.class)); @@ -400,7 +419,7 @@ public class ComponentGraphTest { } @Test - public void child_injector_can_inject_multiple_instances_for_same_key() { + void child_injector_can_inject_multiple_instances_for_same_key() { Pair<Integer, Pair<Executor, Executor>> graph = buildGraphWithChildInjector(Executors::newSingleThreadExecutor); int graphSize = graph.getFirst(); Executor executorA = graph.getSecond().getFirst(); @@ -411,7 +430,7 @@ public class ComponentGraphTest { } @Test - public void components_injected_via_child_injector_can_be_shared() { + void components_injected_via_child_injector_can_be_shared() { Executor commonExecutor = Executors.newSingleThreadExecutor(); Pair<Integer, Pair<Executor, Executor>> graph = buildGraphWithChildInjector(() -> commonExecutor); int graphSize = graph.getFirst(); @@ -445,7 +464,7 @@ public class ComponentGraphTest { } @Test - public void providers_can_be_reused() { + void providers_can_be_reused() { ComponentGraph oldGraph = createReusingGraph(); Executor executor = oldGraph.getInstance(Executor.class); @@ -466,7 +485,7 @@ public class ComponentGraphTest { } @Test - public void component_id_can_be_injected() { + void component_id_can_be_injected() { String componentId = "myId:1.2@namespace"; ComponentGraph componentGraph = new ComponentGraph(); @@ -513,7 +532,7 @@ public class ComponentGraphTest { } public static class ComponentTakingComponent extends AbstractComponent { - private final SimpleComponent injectedComponent; + final SimpleComponent injectedComponent; public ComponentTakingComponent(SimpleComponent injectedComponent) { assertNotNull(injectedComponent); diff --git a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/FallbackToGuiceInjectorTest.java b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/FallbackToGuiceInjectorTest.java index 1e3d67ed463..878c245a708 100644 --- a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/FallbackToGuiceInjectorTest.java +++ b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/FallbackToGuiceInjectorTest.java @@ -11,18 +11,15 @@ import com.yahoo.component.AbstractComponent; import com.yahoo.component.ComponentId; import com.yahoo.config.ConfigInstance; import com.yahoo.vespa.config.ConfigKey; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import java.util.HashMap; import java.util.Map; import java.util.concurrent.Executor; import java.util.concurrent.Executors; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.*; /** * @author Tony Vaagenes @@ -36,7 +33,7 @@ public class FallbackToGuiceInjectorTest { private final Map<ConfigKey<? extends ConfigInstance>, ConfigInstance> configs = new HashMap<>(); - @Before + @BeforeEach public void createGraph() { injector = Guice.createInjector(); componentGraph = new ComponentGraph(0); @@ -70,7 +67,7 @@ public class FallbackToGuiceInjectorTest { } @Test - public void guice_injector_is_used_when_no_global_component_exists() { + void guice_injector_is_used_when_no_global_component_exists() { setInjector( Guice.createInjector(new AbstractModule() { @Override @@ -89,7 +86,7 @@ public class FallbackToGuiceInjectorTest { } @Test - public void guice_injector_creates_a_new_instance_with_default_ctor_when_no_explicit_binding_exists() { + void guice_injector_creates_a_new_instance_with_default_ctor_when_no_explicit_binding_exists() { setInjector(emptyGuiceInjector()); register(ComponentTakingDefaultString.class); complete(); @@ -99,7 +96,7 @@ public class FallbackToGuiceInjectorTest { } @Test - public void guice_injector_fails_when_no_explicit_binding_exists_and_class_has_no_default_ctor() { + void guice_injector_fails_when_no_explicit_binding_exists_and_class_has_no_default_ctor() { setInjector(emptyGuiceInjector()); register(ComponentThatCannotBeConstructed.class); try { diff --git a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ReuseComponentsTest.java b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ReuseComponentsTest.java index 29452f7babe..edd06e37e64 100644 --- a/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ReuseComponentsTest.java +++ b/container-core/src/test/java/com/yahoo/container/di/componentgraph/core/ReuseComponentsTest.java @@ -14,16 +14,14 @@ import com.yahoo.container.di.componentgraph.core.ComponentGraphTest.ExecutorPro import com.yahoo.container.di.componentgraph.core.ComponentGraphTest.SimpleComponent; import com.yahoo.container.di.componentgraph.core.ComponentGraphTest.SimpleComponent2; import com.yahoo.vespa.config.ConfigKey; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.Collections; import java.util.concurrent.Executor; import java.util.function.Function; import java.util.function.Supplier; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotSame; -import static org.junit.Assert.assertSame; +import static org.junit.jupiter.api.Assertions.*; /** * @author gjoranv @@ -32,7 +30,7 @@ import static org.junit.Assert.assertSame; */ public class ReuseComponentsTest { @Test - public void require_that_component_is_reused_when_componentNode_is_unmodified() { + void require_that_component_is_reused_when_componentNode_is_unmodified() { reuseAndTest(SimpleComponent.class, SimpleComponent.class); reuseAndTest(ExecutorProvider.class, Executor.class); } @@ -48,22 +46,25 @@ public class ReuseComponentsTest { assertSame(instance2, instance); } - @Test(expected = IllegalStateException.class) - public void require_that_component_is_not_reused_when_class_is_changed() { - ComponentGraph graph = buildGraphAndSetNoConfigs(SimpleComponent.class); - SimpleComponent instance = getComponent(graph, SimpleComponent.class); - - ComponentGraph newGraph = buildGraphAndSetNoConfigs(SimpleComponent2.class); - newGraph.reuseNodes(graph); - SimpleComponent2 instance2 = getComponent(newGraph, SimpleComponent2.class); - - assertEquals(instance2.getId(),instance.getId()); - @SuppressWarnings("unused") - SimpleComponent throwsException = getComponent(newGraph, SimpleComponent.class); + @Test + void require_that_component_is_not_reused_when_class_is_changed() { + assertThrows(IllegalStateException.class, () -> { + ComponentGraph graph = buildGraphAndSetNoConfigs(SimpleComponent.class); + SimpleComponent instance = getComponent(graph, SimpleComponent.class); + + ComponentGraph newGraph = buildGraphAndSetNoConfigs(SimpleComponent2.class); + newGraph.reuseNodes(graph); + SimpleComponent2 instance2 = getComponent(newGraph, SimpleComponent2.class); + + assertEquals(instance2.getId(), instance.getId()); + @SuppressWarnings("unused") + SimpleComponent throwsException = getComponent(newGraph, SimpleComponent.class); + }); } + @SuppressWarnings("deprecation") @Test - public void require_that_component_is_not_reused_when_config_is_changed() { + void require_that_component_is_not_reused_when_config_is_changed() { Class<ComponentTakingConfig> componentClass = ComponentTakingConfig.class; ComponentGraph graph = buildGraph(componentClass); @@ -80,8 +81,9 @@ public class ReuseComponentsTest { assertNotSame(instance2, instance); } + @SuppressWarnings("deprecation") @Test - public void require_that_component_is_not_reused_when_injected_component_is_changed() { + void require_that_component_is_not_reused_when_injected_component_is_changed() { Function<String, ComponentGraph> buildGraph = config -> { ComponentGraph graph = new ComponentGraph(); @@ -113,7 +115,7 @@ public class ReuseComponentsTest { } @Test - public void require_that_component_is_not_reused_when_injected_component_registry_has_one_component_removed() { + void require_that_component_is_not_reused_when_injected_component_registry_has_one_component_removed() { Function<Boolean, ComponentGraph> buildGraph = useBothInjectedComponents -> { ComponentGraph graph = new ComponentGraph(); graph.add(mockComponentNode(ComponentTakingAllSimpleComponents.class, "root_component")); @@ -144,8 +146,9 @@ public class ReuseComponentsTest { assertNotSame(newSimpleComponentRegistry, oldSimpleComponentRegistry); } + @SuppressWarnings("deprecation") @Test - public void require_that_injected_component_is_reused_even_when_dependent_component_is_changed() { + void require_that_injected_component_is_reused_even_when_dependent_component_is_changed() { Function<String, ComponentGraph> buildGraph = config -> { ComponentGraph graph = new ComponentGraph(); @@ -180,7 +183,7 @@ public class ReuseComponentsTest { } @Test - public void require_that_node_depending_on_guice_node_is_reused() { + void require_that_node_depending_on_guice_node_is_reused() { Supplier<ComponentGraph> makeGraph = () -> { ComponentGraph graph = new ComponentGraph(); graph.add(mockComponentNode(ComponentTakingExecutor.class, "dummyId")); @@ -199,7 +202,7 @@ public class ReuseComponentsTest { } @Test - public void require_that_node_equals_only_checks_first_level_components_to_inject() { + void require_that_node_equals_only_checks_first_level_components_to_inject() { Function<String, Node> createNodeWithInjectedNodeWithInjectedNode = indirectlyInjectedComponentId -> { ComponentNode targetComponent = mockComponentNode(SimpleComponent.class, "target"); ComponentNode directlyInjectedComponent = mockComponentNode(SimpleComponent.class, "directlyInjected"); diff --git a/container-core/src/test/java/com/yahoo/container/di/componentgraph/cycle/CycleFinderTest.java b/container-core/src/test/java/com/yahoo/container/di/componentgraph/cycle/CycleFinderTest.java index 65fbdc578aa..b7ce61c2f1a 100644 --- a/container-core/src/test/java/com/yahoo/container/di/componentgraph/cycle/CycleFinderTest.java +++ b/container-core/src/test/java/com/yahoo/container/di/componentgraph/cycle/CycleFinderTest.java @@ -2,7 +2,7 @@ package com.yahoo.container.di.componentgraph.cycle; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.List; @@ -10,7 +10,7 @@ import static com.yahoo.container.di.componentgraph.cycle.CycleFinderTest.Vertic import static com.yahoo.container.di.componentgraph.cycle.CycleFinderTest.Vertices.B; import static com.yahoo.container.di.componentgraph.cycle.CycleFinderTest.Vertices.C; import static com.yahoo.container.di.componentgraph.cycle.CycleFinderTest.Vertices.D; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * @author gjoranv @@ -20,7 +20,7 @@ public class CycleFinderTest { enum Vertices {A, B, C, D} @Test - public void graph_without_cycles_returns_no_cycle() { + void graph_without_cycles_returns_no_cycle() { var graph = new Graph<Vertices>(); graph.edge(A, B); graph.edge(B, C); @@ -32,7 +32,7 @@ public class CycleFinderTest { } @Test - public void graph_with_cycle_returns_cycle() { + void graph_with_cycle_returns_cycle() { var graph = new Graph<Vertices>(); graph.edge(A, B); graph.edge(B, C); @@ -43,7 +43,7 @@ public class CycleFinderTest { } @Test - public void graph_with_self_referencing_vertex_returns_cycle() { + void graph_with_self_referencing_vertex_returns_cycle() { var graph = new Graph<Vertices>(); graph.edge(A, A); @@ -52,7 +52,7 @@ public class CycleFinderTest { } @Test - public void leading_nodes_are_stripped_from_cycle() { + void leading_nodes_are_stripped_from_cycle() { var graph = new Graph<Vertices>(); graph.edge(A, B); graph.edge(B, C); @@ -63,7 +63,7 @@ public class CycleFinderTest { } @Test - public void findCycle_is_idempotent_with_cycle() { + void findCycle_is_idempotent_with_cycle() { var graph = new Graph<Vertices>(); graph.edge(A, A); @@ -73,7 +73,7 @@ public class CycleFinderTest { } @Test - public void findCycle_is_idempotent_without_cycle() { + void findCycle_is_idempotent_without_cycle() { var graph = new Graph<Vertices>(); graph.edge(A, B); diff --git a/container-core/src/test/java/com/yahoo/container/di/componentgraph/cycle/GraphTest.java b/container-core/src/test/java/com/yahoo/container/di/componentgraph/cycle/GraphTest.java index 526e683ad46..d945b4f0544 100644 --- a/container-core/src/test/java/com/yahoo/container/di/componentgraph/cycle/GraphTest.java +++ b/container-core/src/test/java/com/yahoo/container/di/componentgraph/cycle/GraphTest.java @@ -2,16 +2,14 @@ package com.yahoo.container.di.componentgraph.cycle; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.List; import static com.yahoo.container.di.componentgraph.cycle.GraphTest.Vertices.A; import static com.yahoo.container.di.componentgraph.cycle.GraphTest.Vertices.B; import static com.yahoo.container.di.componentgraph.cycle.GraphTest.Vertices.C; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.*; /** * @author gjoranv @@ -21,7 +19,7 @@ public class GraphTest { enum Vertices {A, B, C} @Test - public void vertices_and_edges_are_added_and_can_be_retrieved() { + void vertices_and_edges_are_added_and_can_be_retrieved() { var graph = new Graph<Vertices>(); graph.edge(A, B); graph.edge(B, C); @@ -34,7 +32,7 @@ public class GraphTest { } @Test - public void null_vertices_are_not_allowed() { + void null_vertices_are_not_allowed() { var graph = new Graph<Vertices>(); try { @@ -46,7 +44,7 @@ public class GraphTest { } @Test - public void duplicate_edges_are_ignored() { + void duplicate_edges_are_ignored() { var graph = new Graph<Vertices>(); graph.edge(A, B); graph.edge(A, B); @@ -55,7 +53,7 @@ public class GraphTest { } @Test - public void self_edges_are_allowed() { + void self_edges_are_allowed() { var graph = new Graph<Vertices>(); graph.edge(A, A); |