X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Feos-dom-akka%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Feos%2Fakka%2FAbstractNativeEosTest.java;fp=opendaylight%2Fmd-sal%2Feos-dom-akka%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Feos%2Fakka%2FAbstractNativeEosTest.java;h=27b4bcba84deb45a14db68bf4c906bc6d4e96b08;hb=1adec580405aafae353f8b0b3a5a0f474a05c6c0;hp=365ef85676db447caed3ed916d9b11ee653b9dfd;hpb=f2868cf8e1ddc85ec1128199ed2607922ea74c24;p=controller.git diff --git a/opendaylight/md-sal/eos-dom-akka/src/test/java/org/opendaylight/controller/eos/akka/AbstractNativeEosTest.java b/opendaylight/md-sal/eos-dom-akka/src/test/java/org/opendaylight/controller/eos/akka/AbstractNativeEosTest.java index 365ef85676..27b4bcba84 100644 --- a/opendaylight/md-sal/eos-dom-akka/src/test/java/org/opendaylight/controller/eos/akka/AbstractNativeEosTest.java +++ b/opendaylight/md-sal/eos-dom-akka/src/test/java/org/opendaylight/controller/eos/akka/AbstractNativeEosTest.java @@ -92,7 +92,7 @@ public abstract class AbstractNativeEosTest { private static final String SEED_NODES_PARAM = "akka.cluster.seed-nodes"; private static final String DATA_CENTER_PARAM = "akka.cluster.multi-data-center.self-data-center"; - protected static MockNativeEntityOwnershipService startupNativeService(final int port, List roles, + protected static MockNativeEntityOwnershipService startupNativeService(final int port, final List roles, final List seedNodes) throws ExecutionException, InterruptedException { final Map overrides = new HashMap<>(); @@ -163,30 +163,51 @@ public abstract class AbstractNativeEosTest { protected static ClusterNode startupWithDatacenter(final int port, final List roles, final List seedNodes, final String dataCenter) throws ExecutionException, InterruptedException { + final akka.actor.ActorSystem system = startupActorSystem(port, roles, seedNodes, dataCenter); + final ActorRef eosBootstrap = + Adapter.spawn(system, EOSMain.create(CODEC_CONTEXT.getInstanceIdentifierCodec()), "EOSBootstrap"); + + final CompletionStage ask = AskPattern.ask(eosBootstrap, + GetRunningContext::new, + Duration.ofSeconds(5), + Adapter.toTyped(system.scheduler())); + final RunningContext runningContext = ask.toCompletableFuture().get(); + + return new ClusterNode(port, roles, system, eosBootstrap, runningContext.getListenerRegistry(), + runningContext.getCandidateRegistry(), runningContext.getOwnerSupervisor()); + } + + protected static akka.actor.ActorSystem startupActorSystem(final int port, final List roles, + final List seedNodes) { final Map overrides = new HashMap<>(); overrides.put(PORT_PARAM, port); overrides.put(ROLE_PARAM, roles); if (!seedNodes.isEmpty()) { overrides.put(SEED_NODES_PARAM, seedNodes); } - overrides.put(DATA_CENTER_PARAM, dataCenter); final Config config = ConfigFactory.parseMap(overrides) .withFallback(ConfigFactory.load()); // Create a classic Akka system since thats what we will have in osgi - final akka.actor.ActorSystem system = akka.actor.ActorSystem.create("ClusterSystem", config); - final ActorRef eosBootstrap = - Adapter.spawn(system, EOSMain.create(CODEC_CONTEXT.getInstanceIdentifierCodec()), "EOSBootstrap"); + return akka.actor.ActorSystem.create("ClusterSystem", config); + } - final CompletionStage ask = AskPattern.ask(eosBootstrap, - GetRunningContext::new, - Duration.ofSeconds(5), - Adapter.toTyped(system.scheduler())); - final RunningContext runningContext = ask.toCompletableFuture().get(); + protected static akka.actor.ActorSystem startupActorSystem(final int port, final List roles, + final List seedNodes, final String dataCenter) { + final Map overrides = new HashMap<>(); + overrides.put(PORT_PARAM, port); + overrides.put(ROLE_PARAM, roles); + if (!seedNodes.isEmpty()) { + overrides.put(SEED_NODES_PARAM, seedNodes); + } + overrides.put(DATA_CENTER_PARAM, dataCenter); - return new ClusterNode(port, roles, system, eosBootstrap, runningContext.getListenerRegistry(), - runningContext.getCandidateRegistry(), runningContext.getOwnerSupervisor()); + final Config config = ConfigFactory.parseMap(overrides) + .withFallback(ConfigFactory.load()); + + // Create a classic Akka system since thats what we will have in osgi + return akka.actor.ActorSystem.create("ClusterSystem", config); } private static Behavior rootBehavior() { @@ -300,12 +321,12 @@ public abstract class AbstractNativeEosTest { verifyNoNotifications(listener, 2); } - protected static void verifyNoNotifications(final MockEntityOwnershipListener listener, long delaySeconds) { + protected static void verifyNoNotifications(final MockEntityOwnershipListener listener, final long delaySeconds) { await().pollDelay(delaySeconds, TimeUnit.SECONDS).until(() -> listener.getChanges().isEmpty()); } protected static void verifyNoAdditionalNotifications( - final MockEntityOwnershipListener listener, long delaySeconds) { + final MockEntityOwnershipListener listener, final long delaySeconds) { listener.resetListener(); verifyNoNotifications(listener, delaySeconds); } @@ -393,9 +414,9 @@ public abstract class AbstractNativeEosTest { } protected static final class MockNativeEntityOwnershipService extends AkkaEntityOwnershipService { - private ActorSystem classicActorSystem; + private final ActorSystem classicActorSystem; - protected MockNativeEntityOwnershipService(ActorSystem classicActorSystem) + protected MockNativeEntityOwnershipService(final ActorSystem classicActorSystem) throws ExecutionException, InterruptedException { super(classicActorSystem, CODEC_CONTEXT); this.classicActorSystem = classicActorSystem;