Merge "Fixed acquiring meter statistics from device"
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / util / PortTranslatorUtilTest.java
1 package org.opendaylight.openflowplugin.openflow.md.util;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotNull;
5 import static org.mockito.Mockito.mock;
6 import static org.mockito.Mockito.when;
7
8 import java.math.BigInteger;
9 import org.junit.Before;
10 import org.junit.Test;
11 import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
12 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfigV10;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping;
20
21 /**
22  * Created by Martin Bobak mbobak@cisco.com on 7/29/14.
23  */
24 public class PortTranslatorUtilTest {
25
26     private static final String MAC_ADDRESS = "00:01:02:03:04:05";
27     private static final String NAME = "PortTranslatorTest";
28     private final Boolean[] pfBls = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false};
29     private final boolean[] pfV10Bls = {false, false, false, false, false, false, false, false, false, false, false, false};
30     private final boolean[] portCfgBools = {false, false, false, false};
31     private final boolean[] portCfgV10bools = {false, false, false, false, false, false, false};
32     private final boolean[] portStateBools = {false, false, false, false};
33     private final Long currentSpeed = Long.decode("4294967295");
34     private static final Long maxSpeed = Long.decode("4294967295");
35
36     @Before
37     public void setupEnvironment(){
38         OpenflowPortsUtil.init();
39     }
40
41     /**
42      * Test  method for {@link PortTranslatorUtil#translatePortFeatures(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures)}
43      */
44     @Test
45     public void testTranslatePortFeatures() {
46
47
48         for (int i = 0; i < pfBls.length; i++) {
49             pfBls[i] = true;
50             final PortFeatures apf = getPortFeatures();
51             org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures npf = PortTranslatorUtil.translatePortFeatures(apf);
52             assertEqualsPortFeatures(apf, npf);
53             pfBls[i] = false;
54         }
55
56     }
57
58     private PortFeatures getPortFeatures() {
59         return new PortFeatures(pfBls[0], pfBls[1], pfBls[2], pfBls[3], pfBls[4], pfBls[5], pfBls[6], pfBls[7], pfBls[8],
60                 pfBls[9], pfBls[10], pfBls[11], pfBls[12], pfBls[13], pfBls[14], pfBls[15]);
61     }
62
63     /**
64      * Test  method for {@link PortTranslatorUtil#translatePortFeatures(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10)}
65      */
66     @Test
67     public void testTranslatePortFeaturesV10() {
68
69
70         for (int i = 0; i < pfV10Bls.length; i++) {
71
72             pfV10Bls[i] = true;
73             final PortFeaturesV10 apfV10 = getPortFeaturesV10();
74             org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures npf = PortTranslatorUtil.translatePortFeatures(apfV10);
75             assertEqualsPortFeaturesV10(apfV10, npf);
76             pfV10Bls[i] = false;
77
78         }
79
80     }
81
82     private PortFeaturesV10 getPortFeaturesV10() {
83         return new PortFeaturesV10(pfV10Bls[0], pfV10Bls[1], pfV10Bls[2], pfV10Bls[3], pfV10Bls[4], pfV10Bls[5], pfV10Bls[6],
84                 pfV10Bls[7], pfV10Bls[8], pfV10Bls[9], pfV10Bls[10], pfV10Bls[11]);
85     }
86
87     /**
88      * Test  method for {@link PortTranslatorUtil#translatePort(Short, java.math.BigInteger, Long, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping)} ()}
89      */
90     @Test
91     public void testTranslatePort() {
92
93         Short version = OpenflowVersion.OF10.getVersion();
94
95         BigInteger dataPathId = BigInteger.ONE;
96         Long portNumber = Long.MAX_VALUE;
97         PortGrouping portGrouping = mockPortGrouping();
98
99         NodeConnectorUpdated nodeConnectorUpdated = PortTranslatorUtil.translatePort(version, dataPathId, portNumber, portGrouping);
100         assertNotNull(nodeConnectorUpdated);
101         version = OpenflowVersion.OF13.getVersion();
102         nodeConnectorUpdated = PortTranslatorUtil.translatePort(version, dataPathId, portNumber, portGrouping);
103         assertNotNull(nodeConnectorUpdated);
104
105         version = OpenflowVersion.UNSUPPORTED.getVersion();
106         nodeConnectorUpdated = PortTranslatorUtil.translatePort(version, dataPathId, portNumber, portGrouping);
107         assertNotNull(nodeConnectorUpdated);
108
109
110     }
111
112     private PortGrouping mockPortGrouping() {
113         PortGrouping portGrouping = mock(PortGrouping.class);
114         when(portGrouping.getAdvertisedFeatures()).thenReturn(getPortFeatures());
115         when(portGrouping.getAdvertisedFeaturesV10()).thenReturn(getPortFeaturesV10());
116         when(portGrouping.getConfig()).thenReturn(getPortConfig());
117         when(portGrouping.getConfigV10()).thenReturn(getPortConfigV10());
118         when(portGrouping.getCurrentFeatures()).thenReturn(getPortFeatures());
119         when(portGrouping.getCurrentFeaturesV10()).thenReturn(getPortFeaturesV10());
120         when(portGrouping.getCurrSpeed()).thenReturn(currentSpeed);
121         when(portGrouping.getHwAddr()).thenReturn(getMacAddress());
122         when(portGrouping.getName()).thenReturn(NAME);
123         when(portGrouping.getMaxSpeed()).thenReturn(maxSpeed);
124         when(portGrouping.getPeerFeatures()).thenReturn(getPortFeatures());
125         when(portGrouping.getPeerFeaturesV10()).thenReturn(getPortFeaturesV10());
126         when(portGrouping.getPortNo()).thenReturn(Long.MAX_VALUE);
127         when(portGrouping.getState()).thenReturn(getPortState());
128         when(portGrouping.getSupportedFeatures()).thenReturn(getPortFeatures());
129         when(portGrouping.getSupportedFeaturesV10()).thenReturn(getPortFeaturesV10());
130         return portGrouping;
131     }
132
133     private PortState getPortState() {
134         PortState portState = new PortState(portStateBools[0], portStateBools[1], portStateBools[2]);
135         return portState;
136     }
137
138     private MacAddress getMacAddress() {
139         return new MacAddress(MAC_ADDRESS);
140     }
141
142     private PortConfigV10 getPortConfigV10() {
143         return new PortConfigV10(portCfgV10bools[0], portCfgV10bools[1], portCfgV10bools[2], portCfgV10bools[3], portCfgV10bools[4], portCfgV10bools[5], portCfgV10bools[6]);
144     }
145
146     private PortConfig getPortConfig() {
147         return new PortConfig(portCfgBools[0], portCfgBools[1], portCfgBools[2], portCfgBools[3]);
148     }
149
150     private void assertEqualsPortFeaturesV10(PortFeaturesV10 apfV10, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures npf) {
151         assertEquals(apfV10.is_100mbFd(), npf.isHundredMbFd());
152         assertEquals(apfV10.is_100mbHd(), npf.isHundredMbHd());
153
154         assertEquals(apfV10.is_10gbFd(), npf.isTenGbFd());
155         assertEquals(apfV10.is_10mbFd(), npf.isTenMbFd());
156         assertEquals(apfV10.is_10mbHd(), npf.isTenMbHd());
157
158         assertEquals(apfV10.is_1gbFd(), npf.isOneGbFd());
159         assertEquals(apfV10.is_1gbHd(), npf.isOneGbHd());
160
161         assertEquals(apfV10.isAutoneg(), npf.isAutoeng());
162         assertEquals(apfV10.isCopper(), npf.isCopper());
163         assertEquals(apfV10.isFiber(), npf.isFiber());
164         assertEquals(apfV10.isPause(), npf.isPause());
165         assertEquals(apfV10.isPauseAsym(), npf.isPauseAsym());
166     }
167
168     private void assertEqualsPortFeatures(PortFeatures apf, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures npf) {
169         assertEquals(apf.is_100gbFd(), npf.isHundredGbFd());
170         assertEquals(apf.is_100mbFd(), npf.isHundredMbFd());
171         assertEquals(apf.is_100mbHd(), npf.isHundredMbHd());
172
173         assertEquals(apf.is_10gbFd(), npf.isTenGbFd());
174         assertEquals(apf.is_10mbFd(), npf.isTenMbFd());
175         assertEquals(apf.is_10mbHd(), npf.isTenMbHd());
176
177         assertEquals(apf.is_1gbFd(), npf.isOneGbFd());
178         assertEquals(apf.is_1gbHd(), npf.isOneGbHd());
179         assertEquals(apf.is_1tbFd(), npf.isOneTbFd());
180
181         assertEquals(apf.is_40gbFd(), npf.isFortyGbFd());
182
183         assertEquals(apf.isAutoneg(), npf.isAutoeng());
184         assertEquals(apf.isCopper(), npf.isCopper());
185         assertEquals(apf.isFiber(), npf.isFiber());
186         assertEquals(apf.isOther(), npf.isOther());
187         assertEquals(apf.isPause(), npf.isPause());
188         assertEquals(apf.isPauseAsym(), npf.isPauseAsym());
189     }
190
191 }