1 package org.opendaylight.controller.cluster.datastore;
3 import akka.actor.ActorRef;
4 import akka.actor.Props;
5 import junit.framework.Assert;
7 import org.opendaylight.controller.cluster.datastore.messages.DataChanged;
8 import org.opendaylight.controller.cluster.datastore.utils.ActorContext;
9 import org.opendaylight.controller.cluster.datastore.utils.DoNothingActor;
10 import org.opendaylight.controller.cluster.datastore.utils.MessageCollectorActor;
11 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
12 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
13 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
15 import java.util.List;
19 public class DataChangeListenerProxyTest extends AbstractActorTest {
21 private static class MockDataChangeEvent implements
22 AsyncDataChangeEvent<InstanceIdentifier,NormalizedNode<?,?>> {
25 public Map<InstanceIdentifier, NormalizedNode<?, ?>> getCreatedData() {
26 throw new UnsupportedOperationException("getCreatedData");
30 public Map<InstanceIdentifier, NormalizedNode<?, ?>> getUpdatedData() {
31 throw new UnsupportedOperationException("getUpdatedData");
34 @Override public Set<InstanceIdentifier> getRemovedPaths() {
35 throw new UnsupportedOperationException("getRemovedPaths");
39 public Map<InstanceIdentifier, ? extends NormalizedNode<?, ?>> getOriginalData() {
40 throw new UnsupportedOperationException("getOriginalData");
43 @Override public NormalizedNode<?, ?> getOriginalSubtree() {
44 throw new UnsupportedOperationException("getOriginalSubtree");
47 @Override public NormalizedNode<?, ?> getUpdatedSubtree() {
48 throw new UnsupportedOperationException("getUpdatedSubtree");
53 public void testOnDataChanged() throws Exception {
54 final Props props = Props.create(MessageCollectorActor.class);
55 final ActorRef actorRef = getSystem().actorOf(props);
57 DataChangeListenerProxy dataChangeListenerProxy =
58 new DataChangeListenerProxy(
59 getSystem().actorSelection(actorRef.path()));
61 dataChangeListenerProxy.onDataChanged(new MockDataChangeEvent());
63 //Check if it was received by the remote actor
65 testContext = new ActorContext(getSystem(), getSystem().actorOf(Props.create(DoNothingActor.class)));
66 Object messages = testContext
67 .executeLocalOperation(actorRef, "messages",
68 ActorContext.ASK_DURATION);
70 Assert.assertNotNull(messages);
72 Assert.assertTrue(messages instanceof List);
74 List<Object> listMessages = (List<Object>) messages;
76 Assert.assertEquals(1, listMessages.size());
78 Assert.assertTrue(listMessages.get(0) instanceof DataChanged);