X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FMockRaftActor.java;h=b4b558b6f357a908c8ac537dd80e86c3abdd5eca;hp=411b23d67290a309e793028fe8ef612d4864f6a4;hb=e1eca73a5ae2ffae8dd78c6fe5281cd2f45d5ef3;hpb=348a37f613ef444b10a0e65b400390396552fc48 diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActor.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActor.java index 411b23d672..b4b558b6f3 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActor.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActor.java @@ -10,10 +10,12 @@ package org.opendaylight.controller.cluster.raft; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; + import akka.actor.ActorRef; import akka.actor.Props; import com.google.common.base.Function; import com.google.common.base.Optional; +import com.google.common.base.Throwables; import com.google.common.util.concurrent.Uninterruptibles; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -47,13 +49,16 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, private final Function pauseLeaderFunction; protected MockRaftActor(AbstractBuilder builder) { - super(builder.id, builder.peerAddresses, Optional.fromNullable(builder.config), PAYLOAD_VERSION); + super(builder.id, builder.peerAddresses != null ? builder.peerAddresses : + Collections.emptyMap(), Optional.fromNullable(builder.config), PAYLOAD_VERSION); state = new ArrayList<>(); this.actorDelegate = mock(RaftActor.class); this.recoveryCohortDelegate = mock(RaftActorRecoveryCohort.class); - this.snapshotCohortDelegate = mock(RaftActorSnapshotCohort.class); - if(builder.dataPersistenceProvider == null){ + this.snapshotCohortDelegate = builder.snapshotCohort != null ? builder.snapshotCohort : + mock(RaftActorSnapshotCohort.class); + + if (builder.dataPersistenceProvider == null) { setPersistence(builder.persistent.isPresent() ? builder.persistent.get() : true); } else { setPersistence(builder.dataPersistenceProvider); @@ -88,7 +93,7 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, try { assertEquals("Recovery complete", true, recoveryComplete.await(5, TimeUnit.SECONDS)); } catch (InterruptedException e) { - e.printStackTrace(); + Throwables.propagate(e); } } @@ -96,14 +101,14 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, try { assertEquals("Behavior initialized", true, initializeBehaviorComplete.await(5, TimeUnit.SECONDS)); } catch (InterruptedException e) { - e.printStackTrace(); + Throwables.propagate(e); } } - public void waitUntilLeader(){ - for(int i = 0;i < 10; i++){ - if(isLeader()){ + public void waitUntilLeader() { + for (int i = 0; i < 10; i++) { + if (isLeader()) { break; } Uninterruptibles.sleepUninterruptibly(100, TimeUnit.MILLISECONDS); @@ -114,7 +119,6 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, return state; } - @Override protected void applyState(ActorRef clientActor, Identifier identifier, Object data) { actorDelegate.applyState(clientActor, identifier, data); @@ -166,13 +170,18 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, } private void applySnapshotBytes(byte[] bytes) { + if (bytes.length == 0) { + return; + } + try { Object data = toObject(bytes); if (data instanceof List) { + state.clear(); state.addAll((List) data); } - } catch (Exception e) { - e.printStackTrace(); + } catch (ClassNotFoundException | IOException e) { + Throwables.propagate(e); } } @@ -209,12 +218,12 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, @Override protected void handleCommand(final Object message) { - if(message instanceof RaftActorBehavior) { + if (message instanceof RaftActorBehavior) { super.changeCurrentBehavior((RaftActorBehavior)message); } else { super.handleCommand(message); - if(RaftActorSnapshotMessageSupport.COMMIT_SNAPSHOT.equals(message)) { + if (RaftActorSnapshotMessageSupport.COMMIT_SNAPSHOT.equals(message)) { snapshotCommitted.countDown(); } } @@ -222,7 +231,7 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, @Override protected void pauseLeader(Runnable operation) { - if(pauseLeaderFunction != null) { + if (pauseLeaderFunction != null) { pauseLeaderFunction.apply(operation); } else { super.pauseLeader(operation); @@ -248,7 +257,7 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, return obj; } - public ReplicatedLog getReplicatedLog(){ + public ReplicatedLog getReplicatedLog() { return this.getRaftActorContext().getReplicatedLog(); } @@ -257,15 +266,14 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, return restoreFromSnapshot; } - public static Props props(final String id, final Map peerAddresses, - ConfigParams config){ + public static Props props(final String id, final Map peerAddresses, ConfigParams config) { return builder().id(id).peerAddresses(peerAddresses).config(config).props(); } public static Props props(final String id, final Map peerAddresses, - ConfigParams config, DataPersistenceProvider dataPersistenceProvider){ - return builder().id(id).peerAddresses(peerAddresses).config(config). - dataPersistenceProvider(dataPersistenceProvider).props(); + ConfigParams config, DataPersistenceProvider dataPersistenceProvider) { + return builder().id(id).peerAddresses(peerAddresses).config(config) + .dataPersistenceProvider(dataPersistenceProvider).props(); } public static Builder builder() { @@ -283,6 +291,7 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, private Optional persistent = Optional.absent(); private final Class actorClass; private Function pauseLeaderFunction; + private RaftActorSnapshotCohort snapshotCohort; protected AbstractBuilder(Class actorClass) { this.actorClass = actorClass; @@ -293,48 +302,53 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, return (T) this; } - public T id(String id) { - this.id = id; + public T id(String newId) { + this.id = newId; + return self(); + } + + public T peerAddresses(Map newPeerAddresses) { + this.peerAddresses = newPeerAddresses; return self(); } - public T peerAddresses(Map peerAddresses) { - this.peerAddresses = peerAddresses; + public T config(ConfigParams newConfig) { + this.config = newConfig; return self(); } - public T config(ConfigParams config) { - this.config = config; + public T dataPersistenceProvider(DataPersistenceProvider newDataPersistenceProvider) { + this.dataPersistenceProvider = newDataPersistenceProvider; return self(); } - public T dataPersistenceProvider(DataPersistenceProvider dataPersistenceProvider) { - this.dataPersistenceProvider = dataPersistenceProvider; + public T roleChangeNotifier(ActorRef newRoleChangeNotifier) { + this.roleChangeNotifier = newRoleChangeNotifier; return self(); } - public T roleChangeNotifier(ActorRef roleChangeNotifier) { - this.roleChangeNotifier = roleChangeNotifier; + public T snapshotMessageSupport(RaftActorSnapshotMessageSupport newSnapshotMessageSupport) { + this.snapshotMessageSupport = newSnapshotMessageSupport; return self(); } - public T snapshotMessageSupport(RaftActorSnapshotMessageSupport snapshotMessageSupport) { - this.snapshotMessageSupport = snapshotMessageSupport; + public T restoreFromSnapshot(byte[] newRestoreFromSnapshot) { + this.restoreFromSnapshot = newRestoreFromSnapshot; return self(); } - public T restoreFromSnapshot(byte[] restoreFromSnapshot) { - this.restoreFromSnapshot = restoreFromSnapshot; + public T persistent(Optional newPersistent) { + this.persistent = newPersistent; return self(); } - public T persistent(Optional persistent) { - this.persistent = persistent; + public T pauseLeaderFunction(Function newPauseLeaderFunction) { + this.pauseLeaderFunction = newPauseLeaderFunction; return self(); } - public T pauseLeaderFunction(Function pauseLeaderFunction) { - this.pauseLeaderFunction = pauseLeaderFunction; + public T snapshotCohort(RaftActorSnapshotCohort newSnapshotCohort) { + this.snapshotCohort = newSnapshotCohort; return self(); }