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
9 package org.opendaylight.openflowplugin.impl.translator;
11 import org.junit.Assert;
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.junit.runner.RunWith;
15 import org.mockito.Mock;
16 import org.mockito.Mockito;
17 import org.mockito.runners.MockitoJUnitRunner;
18 import org.opendaylight.openflowplugin.api.OFConstants;
19 import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext;
20 import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo;
21 import org.opendaylight.openflowplugin.api.openflow.device.DeviceState;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfigV10;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortReason;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortStateV10;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessageBuilder;
35 * Test of {@link PortUpdateTranslator}
37 @RunWith(MockitoJUnitRunner.class)
38 public class PortUpdateTranslatorTest {
40 private PortUpdateTranslator portUpdateTranslator;
42 private DeviceContext deviceContext;
44 private DeviceState deviceState;
46 private DeviceInfo deviceInfo;
48 private org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig portConfig;
49 private StateBuilder portStateBld;
50 private PortStatusMessageBuilder portBld;
53 public void setUp() throws Exception {
54 Mockito.when(deviceContext.getDeviceInfo()).thenReturn(deviceInfo);
55 portUpdateTranslator = new PortUpdateTranslator();
57 portStateBld = new StateBuilder().setLive(true);
58 portConfig = org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig
59 .getDefaultInstance("nOFWD");
60 portBld = assemblePortStatusMessage(21L, 84L);
65 public void testTranslate_13() throws Exception {
66 Mockito.when(deviceInfo.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_3);
67 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures portFeatures =
68 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures
69 .getDefaultInstance("hundredGbFd");
72 final FlowCapableNodeConnector nodeConnector = portUpdateTranslator.translate(portBld.build(), deviceInfo, null);
74 commonCheck(nodeConnector);
76 Assert.assertEquals(portConfig, nodeConnector.getConfiguration());
77 Assert.assertEquals(portFeatures, nodeConnector.getCurrentFeature());
78 Assert.assertEquals(portFeatures, nodeConnector.getAdvertisedFeatures());
79 Assert.assertEquals(portFeatures, nodeConnector.getPeerFeatures());
80 Assert.assertEquals(portFeatures, nodeConnector.getSupported());
81 Assert.assertEquals(portStateBld.build(), nodeConnector.getState());
82 Assert.assertTrue(nodeConnector.getQueue().isEmpty());
85 private void commonCheck(FlowCapableNodeConnector nodeConnector) {
86 Assert.assertEquals(84L, nodeConnector.getCurrentSpeed().longValue());
87 Assert.assertEquals(84L * 2, nodeConnector.getMaximumSpeed().longValue());
88 Assert.assertEquals("utPortName:21", nodeConnector.getName());
89 Assert.assertEquals("01:02:03:04:05:06", nodeConnector.getHardwareAddress().getValue());
90 Assert.assertEquals(21L, nodeConnector.getPortNumber().getUint32().longValue());
94 public void testTranslate_10() throws Exception {
95 Mockito.when(deviceInfo.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_0);
96 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures portFeatures =
97 new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
98 null, null, null, false, false, true, null, null,
99 null, false, false, null, null, null, null, null
102 final FlowCapableNodeConnector nodeConnector = portUpdateTranslator.translate(portBld.build(), deviceInfo, null);
104 commonCheck(nodeConnector);
106 Assert.assertEquals(portConfig, nodeConnector.getConfiguration());
107 Assert.assertEquals(portFeatures, nodeConnector.getCurrentFeature());
108 Assert.assertEquals(portFeatures, nodeConnector.getAdvertisedFeatures());
109 Assert.assertEquals(portFeatures, nodeConnector.getPeerFeatures());
110 Assert.assertEquals(portFeatures, nodeConnector.getSupported());
111 Assert.assertEquals(portStateBld.build(), nodeConnector.getState());
112 Assert.assertNull(nodeConnector.getQueue());
115 private PortStatusMessageBuilder assemblePortStatusMessage(long portNoValue, long speed) {
116 final PortFeatures portFeatures13 = PortFeatures.getDefaultInstance("_100gbFd");
117 final PortFeaturesV10 portFeatures10 = PortFeaturesV10.getDefaultInstance("_100mbFd");
118 final PortConfig portConfig13 = PortConfig.getDefaultInstance("noFwd");
119 final PortConfigV10 portConfig10 = PortConfigV10.getDefaultInstance("noFwd");
120 final PortState portState13 = PortState.getDefaultInstance("live");
121 final PortStateV10 portState10 = PortStateV10.getDefaultInstance("live");
123 return new PortStatusMessageBuilder()
124 .setPortNo(portNoValue)
125 .setReason(PortReason.OFPPRADD)
126 .setAdvertisedFeatures(portFeatures13)
127 .setAdvertisedFeaturesV10(portFeatures10)
128 .setConfig(portConfig13)
129 .setConfigV10(portConfig10)
130 .setCurrentFeatures(portFeatures13)
131 .setCurrentFeaturesV10(portFeatures10)
132 .setPeerFeatures(portFeatures13)
133 .setPeerFeaturesV10(portFeatures10)
134 .setState(portState13)
135 .setStateV10(portState10)
136 .setSupportedFeatures(portFeatures13)
137 .setSupportedFeaturesV10(portFeatures10)
139 .setHwAddr(new MacAddress("01:02:03:04:05:06"))
140 .setMaxSpeed(2 * speed)
141 .setName("utPortName:" + portNoValue);