2 * Copyright (c) 2015 Cisco Systems, Inc. and others. 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
8 package org.opendaylight.openflowplugin.impl.translator;
10 import org.junit.Assert;
11 import org.junit.Before;
12 import org.junit.Test;
13 import org.junit.runner.RunWith;
14 import org.mockito.Mock;
15 import org.mockito.Mockito;
16 import org.mockito.junit.MockitoJUnitRunner;
17 import org.opendaylight.openflowplugin.api.OFConstants;
18 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
19 import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfigV10;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortReason;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortStateV10;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessageBuilder;
33 * Test of {@link PortUpdateTranslator}.
35 @RunWith(MockitoJUnitRunner.class)
36 public class PortUpdateTranslatorTest {
38 private PortUpdateTranslator portUpdateTranslator;
40 private DeviceContext deviceContext;
42 private DeviceInfo deviceInfo;
44 private org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig portConfig;
45 private StateBuilder portStateBld;
46 private PortStatusMessageBuilder portBld;
50 portUpdateTranslator = new PortUpdateTranslator();
52 portStateBld = new StateBuilder().setLive(true);
53 portConfig = org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig
54 .getDefaultInstance("nOFWD");
55 portBld = assemblePortStatusMessage(21L, 84L);
60 public void testTranslate_13() {
61 Mockito.when(deviceInfo.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_3);
62 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures portFeatures =
63 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures
64 .getDefaultInstance("hundredGbFd");
67 final FlowCapableNodeConnector nodeConnector =
68 portUpdateTranslator.translate(portBld.build(), deviceInfo, null);
70 commonCheck(nodeConnector);
72 Assert.assertEquals(portConfig, nodeConnector.getConfiguration());
73 Assert.assertEquals(portFeatures, nodeConnector.getCurrentFeature());
74 Assert.assertEquals(portFeatures, nodeConnector.getAdvertisedFeatures());
75 Assert.assertEquals(portFeatures, nodeConnector.getPeerFeatures());
76 Assert.assertEquals(portFeatures, nodeConnector.getSupported());
77 Assert.assertEquals(portStateBld.build(), nodeConnector.getState());
78 Assert.assertNull(nodeConnector.getQueue());
81 private static void commonCheck(final FlowCapableNodeConnector nodeConnector) {
82 Assert.assertEquals(84L, nodeConnector.getCurrentSpeed().longValue());
83 Assert.assertEquals(84L * 2, nodeConnector.getMaximumSpeed().longValue());
84 Assert.assertEquals("utPortName:21", nodeConnector.getName());
85 Assert.assertEquals("01:02:03:04:05:06", nodeConnector.getHardwareAddress().getValue());
86 Assert.assertEquals(21L, nodeConnector.getPortNumber().getUint32().longValue());
90 public void testTranslate_10() {
91 Mockito.when(deviceInfo.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_0);
92 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures portFeatures =
93 new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
94 null, null, null, false, false, true, null, null,
95 null, false, false, null, null, null, null, null
98 final FlowCapableNodeConnector nodeConnector =
99 portUpdateTranslator.translate(portBld.build(), deviceInfo, null);
101 commonCheck(nodeConnector);
103 Assert.assertEquals(portConfig, nodeConnector.getConfiguration());
104 Assert.assertEquals(portFeatures, nodeConnector.getCurrentFeature());
105 Assert.assertEquals(portFeatures, nodeConnector.getAdvertisedFeatures());
106 Assert.assertEquals(portFeatures, nodeConnector.getPeerFeatures());
107 Assert.assertEquals(portFeatures, nodeConnector.getSupported());
108 Assert.assertEquals(portStateBld.build(), nodeConnector.getState());
109 Assert.assertNull(nodeConnector.getQueue());
112 private static PortStatusMessageBuilder assemblePortStatusMessage(final long portNoValue, final long speed) {
113 final PortFeatures portFeatures13 = PortFeatures.getDefaultInstance("_100gbFd");
114 final PortFeaturesV10 portFeatures10 = PortFeaturesV10.getDefaultInstance("_100mbFd");
115 final PortConfig portConfig13 = PortConfig.getDefaultInstance("noFwd");
116 final PortConfigV10 portConfig10 = PortConfigV10.getDefaultInstance("noFwd");
117 final PortState portState13 = PortState.getDefaultInstance("live");
118 final PortStateV10 portState10 = PortStateV10.getDefaultInstance("live");
120 return new PortStatusMessageBuilder()
121 .setPortNo(portNoValue)
122 .setReason(PortReason.OFPPRADD)
123 .setAdvertisedFeatures(portFeatures13)
124 .setAdvertisedFeaturesV10(portFeatures10)
125 .setConfig(portConfig13)
126 .setConfigV10(portConfig10)
127 .setCurrentFeatures(portFeatures13)
128 .setCurrentFeaturesV10(portFeatures10)
129 .setPeerFeatures(portFeatures13)
130 .setPeerFeaturesV10(portFeatures10)
131 .setState(portState13)
132 .setStateV10(portState10)
133 .setSupportedFeatures(portFeatures13)
134 .setSupportedFeaturesV10(portFeatures10)
136 .setHwAddr(new MacAddress("01:02:03:04:05:06"))
137 .setMaxSpeed(2 * speed)
138 .setName("utPortName:" + portNoValue);