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.sal.common.api.data.AsyncDataChangeEvent;
21 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
22 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
23 public class DataChangeListenerProxyTest extends AbstractActorTest {
25 private static class MockDataChangedEvent implements AsyncDataChangeEvent<YangInstanceIdentifier, NormalizedNode<?, ?>> {
26 Map<YangInstanceIdentifier,NormalizedNode<?,?>> createdData = new HashMap<>();
27 Map<YangInstanceIdentifier,NormalizedNode<?,?>> updatedData = new HashMap<>();
28 Map<YangInstanceIdentifier,NormalizedNode<?,?>> originalData = new HashMap<>();
33 public Map<YangInstanceIdentifier, NormalizedNode<?, ?>> getCreatedData() {
34 createdData.put(YangInstanceIdentifier.builder().build(), CompositeModel.createDocumentOne(CompositeModel.createTestContext()));
39 public Map<YangInstanceIdentifier, NormalizedNode<?, ?>> getUpdatedData() {
40 updatedData.put(YangInstanceIdentifier.builder().build(), CompositeModel.createTestContainer());
46 public Set<YangInstanceIdentifier> getRemovedPaths() {
47 Set<YangInstanceIdentifier>ids = new HashSet<>();
48 ids.add( CompositeModel.TEST_PATH);
53 public Map<YangInstanceIdentifier, NormalizedNode<?, ?>> getOriginalData() {
54 originalData.put(YangInstanceIdentifier.builder().build(), CompositeModel.createFamily());
58 @Override public NormalizedNode<?, ?> getOriginalSubtree() {
59 return CompositeModel.createFamily() ;
62 @Override public NormalizedNode<?, ?> getUpdatedSubtree() {
63 return CompositeModel.createTestContainer();
69 public void testOnDataChanged() throws Exception {
70 final Props props = Props.create(MessageCollectorActor.class);
71 final ActorRef actorRef = getSystem().actorOf(props);
73 DataChangeListenerProxy dataChangeListenerProxy = new DataChangeListenerProxy(
74 getSystem().actorSelection(actorRef.path()));
76 dataChangeListenerProxy.onDataChanged(new MockDataChangedEvent());
78 //Check if it was received by the remote actor
80 testContext = new ActorContext(getSystem(), getSystem().actorOf(Props.create(DoNothingActor.class)), new MockClusterWrapper(), new MockConfiguration());
81 Object messages = testContext
82 .executeOperation(actorRef, "messages");
84 Assert.assertNotNull(messages);
86 Assert.assertTrue(messages instanceof List);
88 List<?> listMessages = (List<?>) messages;
90 Assert.assertEquals(1, listMessages.size());
92 Assert.assertTrue(listMessages.get(0).getClass().equals(DataChanged.class));