Pattern for switching from POJO messages to Protocol Buffer messages
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / DataChangeListenerProxyTest.java
1
2 package org.opendaylight.controller.cluster.datastore;
3
4 import akka.actor.ActorRef;
5 import akka.actor.Props;
6 import junit.framework.Assert;
7 import org.junit.Test;
8 import org.opendaylight.controller.cluster.datastore.messages.DataChanged;
9 import org.opendaylight.controller.cluster.datastore.utils.ActorContext;
10 import org.opendaylight.controller.cluster.datastore.utils.DoNothingActor;
11 import org.opendaylight.controller.cluster.datastore.utils.MessageCollectorActor;
12 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
13 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
14 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
15
16 import java.util.List;
17 import java.util.Map;
18 import java.util.Set;
19
20 public class DataChangeListenerProxyTest extends AbstractActorTest {
21
22     private static class MockDataChangeEvent implements
23         AsyncDataChangeEvent<InstanceIdentifier,NormalizedNode<?,?>> {
24
25         @Override
26         public Map<InstanceIdentifier, NormalizedNode<?, ?>> getCreatedData() {
27             throw new UnsupportedOperationException("getCreatedData");
28         }
29
30         @Override
31         public Map<InstanceIdentifier, NormalizedNode<?, ?>> getUpdatedData() {
32             throw new UnsupportedOperationException("getUpdatedData");
33         }
34
35         @Override public Set<InstanceIdentifier> getRemovedPaths() {
36             throw new UnsupportedOperationException("getRemovedPaths");
37         }
38
39         @Override
40         public Map<InstanceIdentifier, NormalizedNode<?, ?>> getOriginalData() {
41             throw new UnsupportedOperationException("getOriginalData");
42         }
43
44         @Override public NormalizedNode<?, ?> getOriginalSubtree() {
45             throw new UnsupportedOperationException("getOriginalSubtree");
46         }
47
48         @Override public NormalizedNode<?, ?> getUpdatedSubtree() {
49             throw new UnsupportedOperationException("getUpdatedSubtree");
50         }
51     }
52
53     @Test
54     public void testOnDataChanged() throws Exception {
55         final Props props = Props.create(MessageCollectorActor.class);
56         final ActorRef actorRef = getSystem().actorOf(props);
57
58         DataChangeListenerProxy dataChangeListenerProxy =
59             new DataChangeListenerProxy(
60                 getSystem().actorSelection(actorRef.path()));
61
62         dataChangeListenerProxy.onDataChanged(new MockDataChangeEvent());
63
64         //Check if it was received by the remote actor
65         ActorContext
66             testContext = new ActorContext(getSystem(), getSystem().actorOf(Props.create(DoNothingActor.class)));
67         Object messages = testContext
68             .executeLocalOperation(actorRef, "messages",
69                 ActorContext.ASK_DURATION);
70
71         Assert.assertNotNull(messages);
72
73         Assert.assertTrue(messages instanceof List);
74
75         List<Object> listMessages = (List<Object>) messages;
76
77         Assert.assertEquals(1, listMessages.size());
78
79         Assert.assertTrue(listMessages.get(0) instanceof DataChanged);
80
81     }
82 }