Merge "Fix a typo in javadoc"
[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 java.util.HashMap;
7 import java.util.HashSet;
8 import java.util.List;
9 import java.util.Map;
10 import java.util.Set;
11 import org.junit.Assert;
12 import org.junit.Test;
13 import org.opendaylight.controller.cluster.datastore.messages.DataChanged;
14 import org.opendaylight.controller.cluster.datastore.utils.ActorContext;
15 import org.opendaylight.controller.cluster.datastore.utils.DoNothingActor;
16 import org.opendaylight.controller.cluster.datastore.utils.MessageCollectorActor;
17 import org.opendaylight.controller.cluster.datastore.utils.MockClusterWrapper;
18 import org.opendaylight.controller.cluster.datastore.utils.MockConfiguration;
19 import org.opendaylight.controller.md.cluster.datastore.model.CompositeModel;
20 import org.opendaylight.controller.md.cluster.datastore.model.TestModel;
21 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
22 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
23 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
24
25 public class DataChangeListenerProxyTest extends AbstractActorTest {
26
27   private static class MockDataChangedEvent implements AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> {
28     Map<YangInstanceIdentifier,NormalizedNode<?,?>> createdData = new HashMap<>();
29     Map<YangInstanceIdentifier,NormalizedNode<?,?>> updatedData = new HashMap<>();
30     Map<YangInstanceIdentifier,NormalizedNode<?,?>> originalData = new HashMap<>();
31
32
33
34     @Override
35     public Map<YangInstanceIdentifier, NormalizedNode<?, ?>> getCreatedData() {
36       createdData.put(YangInstanceIdentifier.builder().build(), CompositeModel.createDocumentOne(CompositeModel.createTestContext()));
37       return createdData;
38     }
39
40     @Override
41     public Map<YangInstanceIdentifier, NormalizedNode<?, ?>> getUpdatedData() {
42       updatedData.put(YangInstanceIdentifier.builder().build(), CompositeModel.createTestContainer());
43       return updatedData;
44
45     }
46
47     @Override
48     public Set<YangInstanceIdentifier> getRemovedPaths() {
49       Set<YangInstanceIdentifier>ids = new HashSet<>();
50       ids.add( CompositeModel.TEST_PATH);
51       return ids;
52     }
53
54     @Override
55     public Map<YangInstanceIdentifier, NormalizedNode<?, ?>> getOriginalData() {
56       originalData.put(YangInstanceIdentifier.builder().build(), CompositeModel.createFamily());
57       return originalData;
58     }
59
60     @Override public NormalizedNode<?, ?> getOriginalSubtree() {
61       return CompositeModel.createFamily() ;
62     }
63
64     @Override public NormalizedNode<?, ?> getUpdatedSubtree() {
65       return CompositeModel.createTestContainer();
66     }
67   }
68
69
70   @Test
71     public void testOnDataChanged() throws Exception {
72         final Props props = Props.create(MessageCollectorActor.class);
73         final ActorRef actorRef = getSystem().actorOf(props);
74
75         DataChangeListenerProxy dataChangeListenerProxy = new DataChangeListenerProxy(
76                 TestModel.createTestContext(), getSystem().actorSelection(actorRef.path()));
77
78         dataChangeListenerProxy.onDataChanged(new MockDataChangedEvent());
79
80         //Check if it was received by the remote actor
81         ActorContext
82             testContext = new ActorContext(getSystem(), getSystem().actorOf(Props.create(DoNothingActor.class)), new MockClusterWrapper(), new MockConfiguration());
83         Object messages = testContext
84             .executeOperation(actorRef, "messages");
85
86         Assert.assertNotNull(messages);
87
88         Assert.assertTrue(messages instanceof List);
89
90         List<?> listMessages = (List<?>) messages;
91
92         Assert.assertEquals(1, listMessages.size());
93
94         Assert.assertTrue(listMessages.get(0).getClass().equals(DataChanged.class));
95
96     }
97 }