From ea22969932b2824d1e8df5e1d90296082d0cdf64 Mon Sep 17 00:00:00 2001 From: Thuan Vo Date: Wed, 11 Jan 2023 17:59:45 -0500 Subject: [PATCH] test(discovery): expect target notifications Signed-off-by: Thuan Vo --- .../discovery/DiscoveryStorageTest.java | 59 ++++++++++++++----- 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/src/test/java/io/cryostat/discovery/DiscoveryStorageTest.java b/src/test/java/io/cryostat/discovery/DiscoveryStorageTest.java index 80258afa9f..77fd4b3d65 100644 --- a/src/test/java/io/cryostat/discovery/DiscoveryStorageTest.java +++ b/src/test/java/io/cryostat/discovery/DiscoveryStorageTest.java @@ -687,16 +687,31 @@ public ServiceRef answer(InvocationOnMock invocation) throws Throwable { null, URI.create("service:jmx:rmi:///jndi/rmi://localhost:1/jmxrmi"), "serviceRef1"); + ServiceRef updatedServiceRef1 = + new ServiceRef( + serviceRef1.getAlias().get(), + serviceRef1.getServiceUri(), + serviceRef1.getAlias().get()); ServiceRef serviceRef2 = new ServiceRef( null, URI.create("service:jmx:rmi:///jndi/rmi://localhost:2/jmxrmi"), "serviceRef2"); + ServiceRef updatedServiceRef2 = + new ServiceRef( + serviceRef2.getAlias().get(), + serviceRef2.getServiceUri(), + serviceRef2.getAlias().get()); ServiceRef serviceRef3 = new ServiceRef( null, URI.create("service:jmx:rmi:///jndi/rmi://localhost:3/jmxrmi"), "serviceRef3"); + ServiceRef updatedServiceRef3 = + new ServiceRef( + serviceRef3.getAlias().get(), + serviceRef3.getServiceUri(), + serviceRef3.getAlias().get()); ServiceRef serviceRef4 = new ServiceRef( null, @@ -735,13 +750,19 @@ public PluginInfo answer(InvocationOnMock invocation) throws Throwable { } }); + List discoveryEvents = new ArrayList<>(); + storage.addTargetDiscoveryListener(discoveryEvents::add); + var updatedSubtree = storage.update(id, List.of(realm2)); MatcherAssert.assertThat(updatedSubtree, Matchers.notNullValue()); MatcherAssert.assertThat(updatedSubtree, Matchers.hasSize(1)); - for (AbstractNode node : updatedSubtree) { - if (node instanceof TargetNode) { - TargetNode target = (TargetNode) node; + AbstractNode node = updatedSubtree.get(0); // realm2 + MatcherAssert.assertThat(node, Matchers.instanceOf(EnvironmentNode.class)); + + for (AbstractNode childNode : ((EnvironmentNode) node).getChildren()) { + if (childNode instanceof TargetNode) { + TargetNode target = (TargetNode) childNode; MatcherAssert.assertThat( target.getTarget().getAlias().isPresent(), Matchers.is(true)); MatcherAssert.assertThat(target.getTarget().getJvmId(), Matchers.notNullValue()); @@ -749,22 +770,28 @@ public PluginInfo answer(InvocationOnMock invocation) throws Throwable { target.getTarget().getJvmId(), Matchers.equalTo(target.getTarget().getAlias().get())); } else { - MatcherAssert.assertThat(node, Matchers.instanceOf(EnvironmentNode.class)); - EnvironmentNode env = (EnvironmentNode) node; - for (AbstractNode nested : env.getChildren()) { - if (nested instanceof TargetNode) { - TargetNode target = (TargetNode) nested; - MatcherAssert.assertThat( - target.getTarget().getAlias().isPresent(), Matchers.is(true)); - MatcherAssert.assertThat( - target.getTarget().getJvmId(), Matchers.notNullValue()); - MatcherAssert.assertThat( - target.getTarget().getJvmId(), - Matchers.equalTo(target.getTarget().getAlias().get())); - } + MatcherAssert.assertThat(childNode, Matchers.instanceOf(EnvironmentNode.class)); + for (AbstractNode nestedNode : ((EnvironmentNode) childNode).getChildren()) { + TargetNode target = (TargetNode) nestedNode; + MatcherAssert.assertThat( + target.getTarget().getAlias().isPresent(), Matchers.is(true)); + MatcherAssert.assertThat( + target.getTarget().getJvmId(), Matchers.notNullValue()); + MatcherAssert.assertThat( + target.getTarget().getJvmId(), + Matchers.equalTo(target.getTarget().getAlias().get())); } } } + + MatcherAssert.assertThat(discoveryEvents, Matchers.hasSize(4)); + MatcherAssert.assertThat( + discoveryEvents, + Matchers.containsInAnyOrder( + new TargetDiscoveryEvent(EventKind.LOST, serviceRef4), + new TargetDiscoveryEvent(EventKind.FOUND, updatedServiceRef1), + new TargetDiscoveryEvent(EventKind.FOUND, updatedServiceRef2), + new TargetDiscoveryEvent(EventKind.FOUND, updatedServiceRef3))); } @Test