2 package org.opendaylight.controller.cluster.datastore;
4 import akka.actor.ActorRef;
5 import akka.actor.Props;
6 import java.util.HashMap;
7 import java.util.HashSet;
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;
25 public class DataChangeListenerProxyTest extends AbstractActorTest {
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<>();
35 public Map<YangInstanceIdentifier, NormalizedNode<?, ?>> getCreatedData() {
36 createdData.put(YangInstanceIdentifier.builder().build(), CompositeModel.createDocumentOne(CompositeModel.createTestContext()));
41 public Map<YangInstanceIdentifier, NormalizedNode<?, ?>> getUpdatedData() {
42 updatedData.put(YangInstanceIdentifier.builder().build(), CompositeModel.createTestContainer());
48 public Set<YangInstanceIdentifier> getRemovedPaths() {
49 Set<YangInstanceIdentifier>ids = new HashSet<>();
50 ids.add( CompositeModel.TEST_PATH);
55 public Map<YangInstanceIdentifier, NormalizedNode<?, ?>> getOriginalData() {
56 originalData.put(YangInstanceIdentifier.builder().build(), CompositeModel.createFamily());
60 @Override public NormalizedNode<?, ?> getOriginalSubtree() {
61 return CompositeModel.createFamily() ;
64 @Override public NormalizedNode<?, ?> getUpdatedSubtree() {
65 return CompositeModel.createTestContainer();
71 public void testOnDataChanged() throws Exception {
72 final Props props = Props.create(MessageCollectorActor.class);
73 final ActorRef actorRef = getSystem().actorOf(props);
75 DataChangeListenerProxy dataChangeListenerProxy = new DataChangeListenerProxy(
76 TestModel.createTestContext(), getSystem().actorSelection(actorRef.path()));
78 dataChangeListenerProxy.onDataChanged(new MockDataChangedEvent());
80 //Check if it was received by the remote actor
82 testContext = new ActorContext(getSystem(), getSystem().actorOf(Props.create(DoNothingActor.class)), new MockClusterWrapper(), new MockConfiguration());
83 Object messages = testContext
84 .executeOperation(actorRef, "messages");
86 Assert.assertNotNull(messages);
88 Assert.assertTrue(messages instanceof List);
90 List<?> listMessages = (List<?>) messages;
92 Assert.assertEquals(1, listMessages.size());
94 Assert.assertTrue(listMessages.get(0).getClass().equals(DataChanged.class));