1 package org.opendaylight.openflowplugin.openflow.md.util;
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 import java.math.BigInteger;
8 import org.junit.Before;
10 import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
11 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfigV10;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping;
21 * Created by Martin Bobak mbobak@cisco.com on 7/29/14.
23 public class PortTranslatorUtilTest {
25 private static final String MAC_ADDRESS = "00:01:02:03:04:05";
26 private static final String NAME = "PortTranslatorTest";
27 private final Boolean[] pfBls = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false};
28 private final boolean[] pfV10Bls = {false, false, false, false, false, false, false, false, false, false, false, false};
29 private final boolean[] portCfgBools = {false, false, false, false};
30 private final boolean[] portCfgV10bools = {false, false, false, false, false, false, false};
31 private final boolean[] portStateBools = {false, false, false, false};
32 private final Long currentSpeed = Long.decode("4294967295");
33 private static final Long maxSpeed = Long.decode("4294967295");
36 public void setupEnvironment(){
37 OpenflowPortsUtil.init();
41 * Test method for {@link PortTranslatorUtil#translatePortFeatures(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures)}
44 public void testTranslatePortFeatures() {
47 for (int i = 0; i < pfBls.length; i++) {
49 final PortFeatures apf = getPortFeatures();
50 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures npf = PortTranslatorUtil.translatePortFeatures(apf);
51 assertEqualsPortFeatures(apf, npf);
57 private PortFeatures getPortFeatures() {
58 return new PortFeatures(pfBls[0], pfBls[1], pfBls[2], pfBls[3], pfBls[4], pfBls[5], pfBls[6], pfBls[7], pfBls[8],
59 pfBls[9], pfBls[10], pfBls[11], pfBls[12], pfBls[13], pfBls[14], pfBls[15]);
63 * Test method for {@link PortTranslatorUtil#translatePortFeatures(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10)}
66 public void testTranslatePortFeaturesV10() {
69 for (int i = 0; i < pfV10Bls.length; i++) {
72 final PortFeaturesV10 apfV10 = getPortFeaturesV10();
73 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures npf = PortTranslatorUtil.translatePortFeatures(apfV10);
74 assertEqualsPortFeaturesV10(apfV10, npf);
81 private PortFeaturesV10 getPortFeaturesV10() {
82 return new PortFeaturesV10(pfV10Bls[0], pfV10Bls[1], pfV10Bls[2], pfV10Bls[3], pfV10Bls[4], pfV10Bls[5], pfV10Bls[6],
83 pfV10Bls[7], pfV10Bls[8], pfV10Bls[9], pfV10Bls[10], pfV10Bls[11]);
87 * Test method for {@link PortTranslatorUtil#translatePort(Short, java.math.BigInteger, Long, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping)} ()}
90 public void testTranslatePort() {
92 Short version = OpenflowVersion.OF10.getVersion();
94 BigInteger dataPathId = BigInteger.ONE;
95 Long portNumber = Long.MAX_VALUE;
96 PortGrouping portGrouping = mockPortGrouping();
98 NodeConnectorUpdated nodeConnectorUpdated = PortTranslatorUtil.translatePort(version, dataPathId, portNumber, portGrouping);
99 assertNotNull(nodeConnectorUpdated);
100 version = OpenflowVersion.OF13.getVersion();
101 nodeConnectorUpdated = PortTranslatorUtil.translatePort(version, dataPathId, portNumber, portGrouping);
102 assertNotNull(nodeConnectorUpdated);
104 version = OpenflowVersion.UNSUPPORTED.getVersion();
105 nodeConnectorUpdated = PortTranslatorUtil.translatePort(version, dataPathId, portNumber, portGrouping);
106 assertNotNull(nodeConnectorUpdated);
111 private PortGrouping mockPortGrouping() {
112 PortGrouping portGrouping = mock(PortGrouping.class);
113 when(portGrouping.getAdvertisedFeatures()).thenReturn(getPortFeatures());
114 when(portGrouping.getAdvertisedFeaturesV10()).thenReturn(getPortFeaturesV10());
115 when(portGrouping.getConfig()).thenReturn(getPortConfig());
116 when(portGrouping.getConfigV10()).thenReturn(getPortConfigV10());
117 when(portGrouping.getCurrentFeatures()).thenReturn(getPortFeatures());
118 when(portGrouping.getCurrentFeaturesV10()).thenReturn(getPortFeaturesV10());
119 when(portGrouping.getCurrSpeed()).thenReturn(currentSpeed);
120 when(portGrouping.getHwAddr()).thenReturn(getMacAddress());
121 when(portGrouping.getName()).thenReturn(NAME);
122 when(portGrouping.getMaxSpeed()).thenReturn(maxSpeed);
123 when(portGrouping.getPeerFeatures()).thenReturn(getPortFeatures());
124 when(portGrouping.getPeerFeaturesV10()).thenReturn(getPortFeaturesV10());
125 when(portGrouping.getPortNo()).thenReturn(Long.MAX_VALUE);
126 when(portGrouping.getState()).thenReturn(getPortState());
127 when(portGrouping.getSupportedFeatures()).thenReturn(getPortFeatures());
128 when(portGrouping.getSupportedFeaturesV10()).thenReturn(getPortFeaturesV10());
132 private PortState getPortState() {
133 PortState portState = new PortState(portStateBools[0], portStateBools[1], portStateBools[2]);
137 private static MacAddress getMacAddress() {
138 return new MacAddress(MAC_ADDRESS);
141 private PortConfigV10 getPortConfigV10() {
142 return new PortConfigV10(portCfgV10bools[0], portCfgV10bools[1], portCfgV10bools[2], portCfgV10bools[3], portCfgV10bools[4], portCfgV10bools[5], portCfgV10bools[6]);
145 private PortConfig getPortConfig() {
146 return new PortConfig(portCfgBools[0], portCfgBools[1], portCfgBools[2], portCfgBools[3]);
149 private static void assertEqualsPortFeaturesV10(final PortFeaturesV10 apfV10, final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures npf) {
150 assertEquals(apfV10.is_100mbFd(), npf.isHundredMbFd());
151 assertEquals(apfV10.is_100mbHd(), npf.isHundredMbHd());
153 assertEquals(apfV10.is_10gbFd(), npf.isTenGbFd());
154 assertEquals(apfV10.is_10mbFd(), npf.isTenMbFd());
155 assertEquals(apfV10.is_10mbHd(), npf.isTenMbHd());
157 assertEquals(apfV10.is_1gbFd(), npf.isOneGbFd());
158 assertEquals(apfV10.is_1gbHd(), npf.isOneGbHd());
160 assertEquals(apfV10.isAutoneg(), npf.isAutoeng());
161 assertEquals(apfV10.isCopper(), npf.isCopper());
162 assertEquals(apfV10.isFiber(), npf.isFiber());
163 assertEquals(apfV10.isPause(), npf.isPause());
164 assertEquals(apfV10.isPauseAsym(), npf.isPauseAsym());
167 private static void assertEqualsPortFeatures(final PortFeatures apf, final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures npf) {
168 assertEquals(apf.is_100gbFd(), npf.isHundredGbFd());
169 assertEquals(apf.is_100mbFd(), npf.isHundredMbFd());
170 assertEquals(apf.is_100mbHd(), npf.isHundredMbHd());
172 assertEquals(apf.is_10gbFd(), npf.isTenGbFd());
173 assertEquals(apf.is_10mbFd(), npf.isTenMbFd());
174 assertEquals(apf.is_10mbHd(), npf.isTenMbHd());
176 assertEquals(apf.is_1gbFd(), npf.isOneGbFd());
177 assertEquals(apf.is_1gbHd(), npf.isOneGbHd());
178 assertEquals(apf.is_1tbFd(), npf.isOneTbFd());
180 assertEquals(apf.is_40gbFd(), npf.isFortyGbFd());
182 assertEquals(apf.isAutoneg(), npf.isAutoeng());
183 assertEquals(apf.isCopper(), npf.isCopper());
184 assertEquals(apf.isFiber(), npf.isFiber());
185 assertEquals(apf.isOther(), npf.isOther());
186 assertEquals(apf.isPause(), npf.isPause());
187 assertEquals(apf.isPauseAsym(), npf.isPauseAsym());