X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-remoterpc-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fremote%2Frpc%2Fregistry%2FRpcRegistryTest.java;h=d9c686c9abbede1493c9ce4dd6de601875defb06;hb=refs%2Fchanges%2F22%2F65622%2F11;hp=0c3a57e8c9661e7c000884e62ba0010d376f8033;hpb=d04b71990a802071a786fe8f0df57bc4adbdec3f;p=controller.git diff --git a/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/registry/RpcRegistryTest.java b/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/registry/RpcRegistryTest.java index 0c3a57e8c9..d9c686c9ab 100644 --- a/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/registry/RpcRegistryTest.java +++ b/opendaylight/md-sal/sal-remoterpc-connector/src/test/java/org/opendaylight/controller/remote/rpc/registry/RpcRegistryTest.java @@ -9,6 +9,8 @@ package org.opendaylight.controller.remote.rpc.registry; import static org.junit.Assert.fail; +import static org.opendaylight.controller.remote.rpc.registry.gossip.BucketStoreAccess.Singletons.GET_ALL_BUCKETS; +import static org.opendaylight.controller.remote.rpc.registry.gossip.BucketStoreAccess.Singletons.GET_BUCKET_VERSIONS; import akka.actor.ActorRef; import akka.actor.ActorSystem; @@ -18,15 +20,15 @@ import akka.cluster.ClusterEvent.CurrentClusterState; import akka.cluster.Member; import akka.cluster.MemberStatus; import akka.cluster.UniqueAddress; -import akka.testkit.JavaTestKit; +import akka.testkit.javadsl.TestKit; import com.google.common.base.Stopwatch; import com.google.common.collect.Sets; import com.google.common.util.concurrent.Uninterruptibles; import com.typesafe.config.ConfigFactory; import java.net.URI; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; @@ -40,20 +42,15 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.controller.cluster.common.actor.AkkaConfigurationReader; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcIdentifier; import org.opendaylight.controller.remote.rpc.RemoteRpcProviderConfig; -import org.opendaylight.controller.remote.rpc.RouteIdentifierImpl; import org.opendaylight.controller.remote.rpc.registry.RpcRegistry.Messages.AddOrUpdateRoutes; import org.opendaylight.controller.remote.rpc.registry.RpcRegistry.Messages.RemoveRoutes; import org.opendaylight.controller.remote.rpc.registry.RpcRegistry.Messages.UpdateRemoteEndpoints; import org.opendaylight.controller.remote.rpc.registry.RpcRegistry.RemoteRpcEndpoint; import org.opendaylight.controller.remote.rpc.registry.gossip.Bucket; -import org.opendaylight.controller.remote.rpc.registry.gossip.Messages.BucketStoreMessages.GetAllBuckets; -import org.opendaylight.controller.remote.rpc.registry.gossip.Messages.BucketStoreMessages.GetAllBucketsReply; -import org.opendaylight.controller.remote.rpc.registry.gossip.Messages.BucketStoreMessages.GetBucketVersions; -import org.opendaylight.controller.remote.rpc.registry.gossip.Messages.BucketStoreMessages.GetBucketVersionsReply; -import org.opendaylight.controller.sal.connector.api.RpcRouter; -import org.opendaylight.controller.sal.connector.api.RpcRouter.RouteIdentifier; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import scala.concurrent.duration.Duration; @@ -66,12 +63,12 @@ public class RpcRegistryTest { private static ActorSystem node2; private static ActorSystem node3; - private JavaTestKit invoker1; - private JavaTestKit invoker2; - private JavaTestKit invoker3; - private JavaTestKit registrar1; - private JavaTestKit registrar2; - private JavaTestKit registrar3; + private TestKit invoker1; + private TestKit invoker2; + private TestKit invoker3; + private TestKit registrar1; + private TestKit registrar2; + private TestKit registrar3; private ActorRef registry1; private ActorRef registry2; private ActorRef registry3; @@ -116,21 +113,21 @@ public class RpcRegistryTest { @AfterClass public static void staticTeardown() { - JavaTestKit.shutdownActorSystem(node1); - JavaTestKit.shutdownActorSystem(node2); - JavaTestKit.shutdownActorSystem(node3); + TestKit.shutdownActorSystem(node1); + TestKit.shutdownActorSystem(node2); + TestKit.shutdownActorSystem(node3); } @Before public void setup() { - invoker1 = new JavaTestKit(node1); - registrar1 = new JavaTestKit(node1); + invoker1 = new TestKit(node1); + registrar1 = new TestKit(node1); registry1 = node1.actorOf(RpcRegistry.props(config(node1), invoker1.getRef(), registrar1.getRef())); - invoker2 = new JavaTestKit(node2); - registrar2 = new JavaTestKit(node2); + invoker2 = new TestKit(node2); + registrar2 = new TestKit(node2); registry2 = node2.actorOf(RpcRegistry.props(config(node2), invoker2.getRef(), registrar2.getRef())); - invoker3 = new JavaTestKit(node3); - registrar3 = new JavaTestKit(node3); + invoker3 = new TestKit(node3); + registrar3 = new TestKit(node3); registry3 = node3.actorOf(RpcRegistry.props(config(node3), invoker3.getRef(), registrar3.getRef())); } @@ -183,12 +180,12 @@ public class RpcRegistryTest { // Add rpc on node 1 - List> addedRouteIds = createRouteIds(); + List addedRouteIds = createRouteIds(); registry1.tell(new AddOrUpdateRoutes(addedRouteIds), ActorRef.noSender()); // Bucket store should get an update bucket message. Updated bucket contains added rpc. - final JavaTestKit testKit = new JavaTestKit(node1); + final TestKit testKit = new TestKit(node1); Map> buckets = retrieveBuckets(registry1, testKit, nodeAddress); verifyBucket(buckets.get(nodeAddress), addedRouteIds); @@ -217,7 +214,7 @@ public class RpcRegistryTest { LOG.info("testRpcAddRemoveInCluster starting"); - List> addedRouteIds = createRouteIds(); + List addedRouteIds = createRouteIds(); Address node1Address = node1.provider().getDefaultAddress(); @@ -225,7 +222,7 @@ public class RpcRegistryTest { registry1.tell(new AddOrUpdateRoutes(addedRouteIds), ActorRef.noSender()); // Bucket store on node2 should get a message to update its local copy of remote buckets - final JavaTestKit testKit = new JavaTestKit(node2); + final TestKit testKit = new TestKit(node2); Map> buckets = retrieveBuckets(registry2, testKit, node1Address); verifyBucket(buckets.get(node1Address), addedRouteIds); @@ -241,7 +238,7 @@ public class RpcRegistryTest { LOG.info("testRpcAddRemoveInCluster ending"); } - private void verifyEmptyBucket(final JavaTestKit testKit, final ActorRef registry, final Address address) + private void verifyEmptyBucket(final TestKit testKit, final ActorRef registry, final Address address) throws AssertionError { Map> buckets; int numTries = 0; @@ -249,7 +246,7 @@ public class RpcRegistryTest { buckets = retrieveBuckets(registry1, testKit, address); try { - verifyBucket(buckets.get(address), Collections.>emptyList()); + verifyBucket(buckets.get(address), Collections.emptyList()); break; } catch (AssertionError e) { if (++numTries >= 50) { @@ -266,17 +263,17 @@ public class RpcRegistryTest { */ @Test public void testRpcAddedOnMultiNodes() throws Exception { - final JavaTestKit testKit = new JavaTestKit(node3); + final TestKit testKit = new TestKit(node3); // Add rpc on node 1 - List> addedRouteIds1 = createRouteIds(); + List addedRouteIds1 = createRouteIds(); registry1.tell(new AddOrUpdateRoutes(addedRouteIds1), ActorRef.noSender()); final UpdateRemoteEndpoints req1 = registrar3.expectMsgClass(Duration.create(3, TimeUnit.SECONDS), UpdateRemoteEndpoints.class); // Add rpc on node 2 - List> addedRouteIds2 = createRouteIds(); + List addedRouteIds2 = createRouteIds(); registry2.tell(new AddOrUpdateRoutes(addedRouteIds2), ActorRef.noSender()); final UpdateRemoteEndpoints req2 = registrar3.expectMsgClass(Duration.create(3, TimeUnit.SECONDS), @@ -301,8 +298,7 @@ public class RpcRegistryTest { } - private static void assertEndpoints(final UpdateRemoteEndpoints msg, final Address address, - final JavaTestKit invoker) { + private static void assertEndpoints(final UpdateRemoteEndpoints msg, final Address address, final TestKit invoker) { final Map> endpoints = msg.getEndpoints(); Assert.assertEquals(1, endpoints.size()); @@ -319,18 +315,17 @@ public class RpcRegistryTest { Assert.assertEquals("hello", s); } - private static Map retrieveVersions(final ActorRef bucketStore, final JavaTestKit testKit) { - bucketStore.tell(new GetBucketVersions(), testKit.getRef()); - GetBucketVersionsReply reply = testKit.expectMsgClass(Duration.create(3, TimeUnit.SECONDS), - GetBucketVersionsReply.class); - return reply.getVersions(); + private static Map retrieveVersions(final ActorRef bucketStore, final TestKit testKit) { + bucketStore.tell(GET_BUCKET_VERSIONS, testKit.getRef()); + @SuppressWarnings("unchecked") + final Map reply = testKit.expectMsgClass(Duration.create(3, TimeUnit.SECONDS), Map.class); + return reply; } - private static void verifyBucket(final Bucket bucket, - final List> expRouteIds) { + private static void verifyBucket(final Bucket bucket, final List expRouteIds) { RoutingTable table = bucket.getData(); Assert.assertNotNull("Bucket RoutingTable is null", table); - for (RouteIdentifier r : expRouteIds) { + for (DOMRpcIdentifier r : expRouteIds) { if (!table.contains(r)) { Assert.fail("RoutingTable does not contain " + r + ". Actual: " + table); } @@ -340,15 +335,14 @@ public class RpcRegistryTest { } private static Map> retrieveBuckets(final ActorRef bucketStore, - final JavaTestKit testKit, final Address... addresses) { + final TestKit testKit, final Address... addresses) { int numTries = 0; while (true) { - bucketStore.tell(new GetAllBuckets(), testKit.getRef()); + bucketStore.tell(GET_ALL_BUCKETS, testKit.getRef()); @SuppressWarnings("unchecked") - GetAllBucketsReply reply = testKit.expectMsgClass(Duration.create(3, TimeUnit.SECONDS), - GetAllBucketsReply.class); + Map> buckets = testKit.expectMsgClass(Duration.create(3, TimeUnit.SECONDS), + Map.class); - Map> buckets = reply.getBuckets(); boolean foundAll = true; for (Address addr : addresses) { Bucket bucket = buckets.get(addr); @@ -372,34 +366,33 @@ public class RpcRegistryTest { } @Test - public void testAddRoutesConcurrency() throws Exception { - final JavaTestKit testKit = new JavaTestKit(node1); + public void testAddRoutesConcurrency() { + final TestKit testKit = new TestKit(node1); final int nRoutes = 500; - final RouteIdentifier[] added = new RouteIdentifier[nRoutes]; + final Collection added = new ArrayList<>(nRoutes); for (int i = 0; i < nRoutes; i++) { - final RouteIdentifierImpl routeId = new RouteIdentifierImpl(null, - new QName(new URI("/mockrpc"), "type" + i), null); - added[i] = routeId; + final DOMRpcIdentifier routeId = DOMRpcIdentifier.create(SchemaPath.create(true, + QName.create(URI.create("/mockrpc"), "type" + i))); + added.add(routeId); //Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS); - registry1.tell(new AddOrUpdateRoutes(Arrays.>asList(routeId)), + registry1.tell(new AddOrUpdateRoutes(Arrays.asList(routeId)), ActorRef.noSender()); } - GetAllBuckets getAllBuckets = new GetAllBuckets(); FiniteDuration duration = Duration.create(3, TimeUnit.SECONDS); int numTries = 0; while (true) { - registry1.tell(getAllBuckets, testKit.getRef()); + registry1.tell(GET_ALL_BUCKETS, testKit.getRef()); @SuppressWarnings("unchecked") - GetAllBucketsReply reply = testKit.expectMsgClass(duration, GetAllBucketsReply.class); + Map> buckets = testKit.expectMsgClass(duration, Map.class); - Bucket localBucket = reply.getBuckets().values().iterator().next(); + Bucket localBucket = buckets.values().iterator().next(); RoutingTable table = localBucket.getData(); if (table != null && table.size() == nRoutes) { - for (RouteIdentifier r : added) { - Assert.assertEquals("RoutingTable contains " + r, true, table.contains(r)); + for (DOMRpcIdentifier r : added) { + Assert.assertTrue("RoutingTable contains " + r, table.contains(r)); } break; @@ -413,10 +406,10 @@ public class RpcRegistryTest { } } - private List> createRouteIds() throws URISyntaxException { - QName type = new QName(new URI("/mockrpc"), "mockrpc" + routeIdCounter++); - List> routeIds = new ArrayList<>(1); - routeIds.add(new RouteIdentifierImpl(null, type, null)); + private List createRouteIds() { + QName type = QName.create(URI.create("/mockrpc"), "mockrpc" + routeIdCounter++); + List routeIds = new ArrayList<>(1); + routeIds.add(DOMRpcIdentifier.create(SchemaPath.create(true, type))); return routeIds; } }