2 * Copyright © 2020 Orange. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.transportpce.common.mapping;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertNotNull;
14 import static org.junit.Assert.assertNull;
15 import static org.junit.Assert.assertTrue;
16 import static org.mockito.Mockito.mock;
17 import static org.mockito.Mockito.when;
18 import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_1_2_1;
19 import static org.opendaylight.transportpce.common.StringConstants.OPENROADM_DEVICE_VERSION_2_2_1;
21 import java.util.concurrent.ExecutionException;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.opendaylight.mdsal.binding.api.DataBroker;
25 import org.opendaylight.mdsal.binding.api.WriteTransaction;
26 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
27 import org.opendaylight.transportpce.test.DataStoreContext;
28 import org.opendaylight.transportpce.test.DataStoreContextImpl;
29 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.Network;
30 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.OpenroadmNodeVersion;
31 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.mapping.Mapping;
32 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.mapping.MappingBuilder;
33 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.mapping.MappingKey;
34 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.network.Nodes;
35 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.network.NodesBuilder;
36 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.network.NodesKey;
37 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.network.nodes.NodeInfo;
38 import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.portmapping.rev220114.network.nodes.NodeInfoBuilder;
39 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
41 public class PortMappingImplTest {
43 DataBroker dataBroker = null;
44 private PortMappingVersion710 portMappingVersion710;
45 private PortMappingVersion221 portMappingVersion221;
46 private PortMappingVersion121 portMappingVersion121;
47 private PortMapping portMapping;
50 public void setUp() throws Exception {
51 DataStoreContext dataStoreContext = new DataStoreContextImpl();
52 dataBroker = dataStoreContext.getDataBroker();
53 portMappingVersion710 = mock(PortMappingVersion710.class);
54 portMappingVersion221 = mock(PortMappingVersion221.class);
55 portMappingVersion121 = mock(PortMappingVersion121.class);
56 portMapping = new PortMappingImpl(dataBroker, portMappingVersion710,
57 portMappingVersion221, portMappingVersion121);
61 public void createMappingDataTest() {
62 //test create mapping version 1
63 when(portMappingVersion121.createMappingData("node")).thenReturn(true);
64 assertTrue(portMapping.createMappingData("node", OPENROADM_DEVICE_VERSION_1_2_1));
66 //test create mapping version 2
67 when(portMappingVersion221.createMappingData("node")).thenReturn(true);
68 assertTrue(portMapping.createMappingData("node", OPENROADM_DEVICE_VERSION_2_2_1));
70 //test create mapping version with wrong value
71 assertFalse(portMapping.createMappingData("node", "test"));
76 public void updateMappingTest() throws ExecutionException, InterruptedException {
77 Mapping mapping = new MappingBuilder().setLogicalConnectionPoint("logicalConnectionPoint")
78 .setPortDirection("1").setConnectionMapLcp("1").setPartnerLcp("1")
79 .setPortQual("1").setSupportingCircuitPackName("1").setSupportingOms("1")
80 .setSupportingOts("1").setSupportingPort("1").build();
81 InstanceIdentifier<Mapping> portMappingIID = InstanceIdentifier.builder(Network.class)
82 .child(Nodes.class, new NodesKey("node"))
83 .child(Mapping.class, new MappingKey("logicalConnectionPoint"))
85 InstanceIdentifier<NodeInfo> nodeInfoIID = InstanceIdentifier.builder(Network.class).child(Nodes.class,
86 new NodesKey("node")).child(NodeInfo.class).build();
87 final NodeInfo nodeInfo = new NodeInfoBuilder().setOpenroadmVersion(OpenroadmNodeVersion._221).build();
88 final NodeInfo nodeInfo2 = new NodeInfoBuilder().setOpenroadmVersion(OpenroadmNodeVersion._121).build();
89 Nodes nodes = new NodesBuilder().setNodeId("node").setNodeInfo(nodeInfo).build();
90 InstanceIdentifier<Nodes> nodeIID = InstanceIdentifier.builder(Network.class).child(Nodes.class,
91 new NodesKey("node")).build();
92 //create node with portmapping and nodeifno version 2
93 WriteTransaction wr = dataBroker.newWriteOnlyTransaction();
94 wr.merge(LogicalDatastoreType.CONFIGURATION, nodeIID, nodes);
95 wr.merge(LogicalDatastoreType.CONFIGURATION, portMappingIID, mapping);
96 wr.merge(LogicalDatastoreType.CONFIGURATION, nodeInfoIID, nodeInfo);
98 //test update port mapping version 2
99 when(portMappingVersion221.updateMapping("node", mapping)).thenReturn(true);
100 assertTrue("Update sould be ok", portMapping.updateMapping("node", mapping));
102 //replace node nodefino version 1 instead of version 2
103 WriteTransaction wr2 = dataBroker.newWriteOnlyTransaction();
104 wr2.merge(LogicalDatastoreType.CONFIGURATION, nodeInfoIID, nodeInfo2);
107 //test update portmapping version 1
108 when(portMappingVersion121.updateMapping("node", mapping)).thenReturn(true);
109 assertTrue(portMapping.updateMapping("node", mapping));
111 //test get node that exists
112 assertNotNull(portMapping.getNode("node"));
114 //test get node that doesn't exist
115 assertNull(portMapping.getNode("node2"));
117 //test get portmapping for existing node
118 assertEquals(portMapping
119 .getMapping("node", "logicalConnectionPoint"), mapping);
121 //test delete portmapping for existing node
122 portMapping.deletePortMappingNode("node");
124 //test get portmapping that was deleted above and doesn't exist anymore
125 assertNull(portMapping.getMapping("node", "logicalConnectionPoint"));