1 package org.opendaylight.controller.sal.binding.test.connect.dom;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotNull;
5 import static org.junit.Assert.assertNull;
7 import java.util.concurrent.Executors;
8 import java.util.concurrent.Future;
10 import org.junit.Before;
11 import org.junit.Test;
12 import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
13 import org.opendaylight.controller.sal.binding.api.data.DataModificationTransaction;
14 import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
15 import org.opendaylight.controller.sal.binding.impl.DataBrokerImpl;
16 import org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentDataServiceConnector;
17 import org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentMappingService;
18 import org.opendaylight.controller.sal.binding.impl.connect.dom.MappingServiceImpl;
19 import org.opendaylight.controller.sal.binding.impl.connect.dom.RuntimeGeneratedMappingServiceImpl;
20 import org.opendaylight.controller.sal.core.api.data.DataBrokerService;
21 import org.opendaylight.controller.sal.dom.broker.impl.HashMapDataStore;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
28 import org.opendaylight.yangtools.yang.binding.DataObject;
29 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
30 import org.opendaylight.yangtools.yang.common.RpcResult;
32 import com.google.common.util.concurrent.ListeningExecutorService;
33 import com.google.common.util.concurrent.MoreExecutors;
35 public class BrokerIntegrationTest {
37 DataBrokerService biDataService;
38 DataProviderService baDataService;
39 private RuntimeGeneratedMappingServiceImpl mappingServiceImpl;
40 private BindingIndependentMappingService mappingService;
41 private DataBrokerImpl baDataImpl;
42 private org.opendaylight.controller.sal.dom.broker.DataBrokerImpl biDataImpl;
43 private ListeningExecutorService executor;
44 private BindingIndependentDataServiceConnector connectorServiceImpl;
45 private HashMapDataStore dataStore;
50 executor = MoreExecutors.sameThreadExecutor();
51 baDataImpl = new DataBrokerImpl();
52 baDataService = baDataImpl;
53 baDataImpl.setExecutor(executor);
55 biDataImpl = new org.opendaylight.controller.sal.dom.broker.DataBrokerImpl();
56 biDataService = biDataImpl;
57 biDataImpl.setExecutor(executor);
59 dataStore = new HashMapDataStore();
60 org.opendaylight.yangtools.yang.data.api.InstanceIdentifier treeRoot = org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.builder().toInstance();
61 biDataImpl.registerConfigurationReader(treeRoot, dataStore);
62 biDataImpl.registerOperationalReader(treeRoot, dataStore);
63 biDataImpl.registerCommitHandler(treeRoot, dataStore);
65 mappingServiceImpl = new RuntimeGeneratedMappingServiceImpl();
66 mappingService = mappingServiceImpl;
67 mappingServiceImpl.start();
69 connectorServiceImpl = new BindingIndependentDataServiceConnector();
70 connectorServiceImpl.setBaDataService(baDataService);
71 connectorServiceImpl.setBiDataService(biDataService);
72 connectorServiceImpl.setMappingService(mappingServiceImpl);
73 connectorServiceImpl.start();
75 String[] yangFiles = new String[] { "yang-ext.yang", "ietf-inet-types.yang", "ietf-yang-types.yang",
76 "node-inventory.yang" };
78 mappingServiceImpl.onGlobalContextUpdated(MappingServiceTest.getContext(yangFiles));
83 public void simpleModifyOperation() throws Exception {
86 NodeRef node1 = createNodeRef("0");
87 DataObject node = baDataService.readConfigurationData(node1.getValue());
89 Node nodeData1 = createNode("0");
92 DataModificationTransaction transaction = baDataService.beginTransaction();
93 transaction.putConfigurationData(node1.getValue(), nodeData1);
94 Future<RpcResult<TransactionStatus>> commitResult = transaction.commit();
95 assertNotNull(commitResult);
97 RpcResult<TransactionStatus> result = commitResult.get();
99 assertNotNull(result);
100 assertNotNull(result.getResult());
101 assertEquals(TransactionStatus.COMMITED, result.getResult());
103 Node readedData = (Node) baDataService.readConfigurationData(node1.getValue());
104 assertNotNull(readedData);
105 assertEquals(nodeData1.getKey(), readedData.getKey());
108 NodeRef nodeFoo = createNodeRef("foo");
109 NodeRef nodeBar = createNodeRef("bar");
110 Node nodeFooData = createNode("foo");
111 Node nodeBarData = createNode("bar");
114 DataModificationTransaction insertMoreTr = baDataService.beginTransaction();
115 insertMoreTr.putConfigurationData(nodeFoo.getValue(), nodeFooData);
116 insertMoreTr.putConfigurationData(nodeBar.getValue(), nodeBarData);
117 RpcResult<TransactionStatus> result2 = insertMoreTr.commit().get();
119 assertNotNull(result2);
120 assertNotNull(result2.getResult());
121 assertEquals(TransactionStatus.COMMITED, result.getResult());
123 Nodes allNodes = (Nodes) baDataService.readConfigurationData(InstanceIdentifier.builder().node(Nodes.class).toInstance());
124 assertNotNull(allNodes);
125 assertNotNull(allNodes.getNode());
126 assertEquals(3, allNodes.getNode().size());
130 * We create transaction no 2
133 DataModificationTransaction removalTransaction = baDataService.beginTransaction();
134 assertNotNull(transaction);
140 removalTransaction.removeConfigurationData(node1.getValue());
143 * We commit transaction
145 Future<RpcResult<TransactionStatus>> commitResult2 = removalTransaction.commit();
146 assertNotNull(commitResult2);
148 RpcResult<TransactionStatus> result3 = commitResult2.get();
150 assertNotNull(result3);
151 assertNotNull(result3.getResult());
152 assertEquals(TransactionStatus.COMMITED, result2.getResult());
154 DataObject readedData2 = baDataService.readConfigurationData(node1.getValue());
155 assertNull(readedData2);
158 private static NodeRef createNodeRef(String string) {
159 NodeKey key = new NodeKey(new NodeId(string));
160 InstanceIdentifier<Node> path = InstanceIdentifier.builder().node(Nodes.class).node(Node.class, key)
162 return new NodeRef(path);
165 private static Node createNode(String string) {
166 NodeBuilder ret = new NodeBuilder();
167 ret.setId(new NodeId(string));
168 ret.setKey(new NodeKey(ret.getId()));