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.State;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfigV10;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortReason;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortStateV10;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessageBuilder;
32 import org.opendaylight.yangtools.yang.common.Uint32;
35 * Test of {@link PortUpdateTranslator}.
37 @RunWith(MockitoJUnitRunner.class)
38 public class PortUpdateTranslatorTest {
40 private PortUpdateTranslator portUpdateTranslator;
42 private DeviceContext deviceContext;
44 private DeviceInfo deviceInfo;
46 private org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig portConfig;
47 private State portState;
48 private PortStatusMessageBuilder portBld;
52 portUpdateTranslator = new PortUpdateTranslator();
54 portState = new StateBuilder().setLive(true).setBlocked(false).setLinkDown(false).build();
55 portConfig = org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig
56 .getDefaultInstance("nOFWD");
57 portBld = assemblePortStatusMessage(21L, 84L);
62 public void testTranslate_13() {
63 Mockito.when(deviceInfo.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_3);
64 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures portFeatures =
65 org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures
66 .getDefaultInstance("hundredGbFd");
69 final FlowCapableNodeConnector nodeConnector =
70 portUpdateTranslator.translate(portBld.build(), deviceInfo, null);
72 commonCheck(nodeConnector);
74 Assert.assertEquals(portConfig, nodeConnector.getConfiguration());
75 Assert.assertEquals(portFeatures, nodeConnector.getCurrentFeature());
76 Assert.assertEquals(portFeatures, nodeConnector.getAdvertisedFeatures());
77 Assert.assertEquals(portFeatures, nodeConnector.getPeerFeatures());
78 Assert.assertEquals(portFeatures, nodeConnector.getSupported());
79 Assert.assertEquals(portState, nodeConnector.getState());
80 Assert.assertNull(nodeConnector.getQueue());
83 private static void commonCheck(final FlowCapableNodeConnector nodeConnector) {
84 Assert.assertEquals(84L, nodeConnector.getCurrentSpeed().longValue());
85 Assert.assertEquals(84L * 2, nodeConnector.getMaximumSpeed().longValue());
86 Assert.assertEquals("utPortName:21", nodeConnector.getName());
87 Assert.assertEquals("01:02:03:04:05:06", nodeConnector.getHardwareAddress().getValue());
88 Assert.assertEquals(21L, nodeConnector.getPortNumber().getUint32().longValue());
92 public void testTranslate_10() {
93 Mockito.when(deviceInfo.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_0);
94 final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures portFeatures =
95 new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures(
96 false, false, false, false, false, true, false, false,
97 false, false, false, false, false, false, false, false
100 final FlowCapableNodeConnector nodeConnector =
101 portUpdateTranslator.translate(portBld.build(), deviceInfo, null);
103 commonCheck(nodeConnector);
105 Assert.assertEquals(portConfig, nodeConnector.getConfiguration());
106 Assert.assertEquals(portFeatures, nodeConnector.getCurrentFeature());
107 Assert.assertEquals(portFeatures, nodeConnector.getAdvertisedFeatures());
108 Assert.assertEquals(portFeatures, nodeConnector.getPeerFeatures());
109 Assert.assertEquals(portFeatures, nodeConnector.getSupported());
110 Assert.assertEquals(portState, nodeConnector.getState());
111 Assert.assertNull(nodeConnector.getQueue());
114 private static PortStatusMessageBuilder assemblePortStatusMessage(final long portNoValue, final long speed) {
115 final PortFeatures portFeatures13 = PortFeatures.getDefaultInstance("_100gbFd");
116 final PortFeaturesV10 portFeatures10 = PortFeaturesV10.getDefaultInstance("_100mbFd");
117 final PortConfig portConfig13 = PortConfig.getDefaultInstance("noFwd");
118 final PortConfigV10 portConfig10 = PortConfigV10.getDefaultInstance("noFwd");
119 final PortState portState13 = PortState.getDefaultInstance("live");
120 final PortStateV10 portState10 = PortStateV10.getDefaultInstance("live");
122 return new PortStatusMessageBuilder()
123 .setPortNo(Uint32.valueOf(portNoValue))
124 .setReason(PortReason.OFPPRADD)
125 .setAdvertisedFeatures(portFeatures13)
126 .setAdvertisedFeaturesV10(portFeatures10)
127 .setConfig(portConfig13)
128 .setConfigV10(portConfig10)
129 .setCurrentFeatures(portFeatures13)
130 .setCurrentFeaturesV10(portFeatures10)
131 .setPeerFeatures(portFeatures13)
132 .setPeerFeaturesV10(portFeatures10)
133 .setState(portState13)
134 .setStateV10(portState10)
135 .setSupportedFeatures(portFeatures13)
136 .setSupportedFeaturesV10(portFeatures10)
137 .setCurrSpeed(Uint32.valueOf(speed))
138 .setHwAddr(new MacAddress("01:02:03:04:05:06"))
139 .setMaxSpeed(Uint32.valueOf(2 * speed))
140 .setName("utPortName:" + portNoValue);