/* * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.openflowplugin.impl.translator; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; import org.opendaylight.openflowplugin.api.OFConstants; import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.DeviceInfo; import org.opendaylight.openflowplugin.api.openflow.device.DeviceState; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfigV10; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeaturesV10; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortStateV10; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessageBuilder; /** * Test of {@link PortUpdateTranslator} */ @RunWith(MockitoJUnitRunner.class) public class PortUpdateTranslatorTest { private PortUpdateTranslator portUpdateTranslator; @Mock private DeviceContext deviceContext; @Mock private DeviceState deviceState; @Mock private DeviceInfo deviceInfo; private org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig portConfig; private StateBuilder portStateBld; private PortStatusMessageBuilder portBld; @Before public void setUp() throws Exception { Mockito.when(deviceContext.getDeviceInfo()).thenReturn(deviceInfo); portUpdateTranslator = new PortUpdateTranslator(); portStateBld = new StateBuilder().setLive(true); portConfig = org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig .getDefaultInstance("nOFWD"); portBld = assemblePortStatusMessage(21L, 84L); } @Test public void testTranslate_13() throws Exception { Mockito.when(deviceInfo.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_3); final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures portFeatures = org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures .getDefaultInstance("hundredGbFd"); final FlowCapableNodeConnector nodeConnector = portUpdateTranslator.translate(portBld.build(), deviceInfo, null); commonCheck(nodeConnector); Assert.assertEquals(portConfig, nodeConnector.getConfiguration()); Assert.assertEquals(portFeatures, nodeConnector.getCurrentFeature()); Assert.assertEquals(portFeatures, nodeConnector.getAdvertisedFeatures()); Assert.assertEquals(portFeatures, nodeConnector.getPeerFeatures()); Assert.assertEquals(portFeatures, nodeConnector.getSupported()); Assert.assertEquals(portStateBld.build(), nodeConnector.getState()); Assert.assertTrue(nodeConnector.getQueue().isEmpty()); } private void commonCheck(FlowCapableNodeConnector nodeConnector) { Assert.assertEquals(84L, nodeConnector.getCurrentSpeed().longValue()); Assert.assertEquals(84L * 2, nodeConnector.getMaximumSpeed().longValue()); Assert.assertEquals("utPortName:21", nodeConnector.getName()); Assert.assertEquals("01:02:03:04:05:06", nodeConnector.getHardwareAddress().getValue()); Assert.assertEquals(21L, nodeConnector.getPortNumber().getUint32().longValue()); } @Test public void testTranslate_10() throws Exception { Mockito.when(deviceInfo.getVersion()).thenReturn(OFConstants.OFP_VERSION_1_0); final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures portFeatures = new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures( null, null, null, false, false, true, null, null, null, false, false, null, null, null, null, null ); final FlowCapableNodeConnector nodeConnector = portUpdateTranslator.translate(portBld.build(), deviceInfo, null); commonCheck(nodeConnector); Assert.assertEquals(portConfig, nodeConnector.getConfiguration()); Assert.assertEquals(portFeatures, nodeConnector.getCurrentFeature()); Assert.assertEquals(portFeatures, nodeConnector.getAdvertisedFeatures()); Assert.assertEquals(portFeatures, nodeConnector.getPeerFeatures()); Assert.assertEquals(portFeatures, nodeConnector.getSupported()); Assert.assertEquals(portStateBld.build(), nodeConnector.getState()); Assert.assertNull(nodeConnector.getQueue()); } private PortStatusMessageBuilder assemblePortStatusMessage(long portNoValue, long speed) { final PortFeatures portFeatures13 = PortFeatures.getDefaultInstance("_100gbFd"); final PortFeaturesV10 portFeatures10 = PortFeaturesV10.getDefaultInstance("_100mbFd"); final PortConfig portConfig13 = PortConfig.getDefaultInstance("noFwd"); final PortConfigV10 portConfig10 = PortConfigV10.getDefaultInstance("noFwd"); final PortState portState13 = PortState.getDefaultInstance("live"); final PortStateV10 portState10 = PortStateV10.getDefaultInstance("live"); return new PortStatusMessageBuilder() .setPortNo(portNoValue) .setAdvertisedFeatures(portFeatures13) .setAdvertisedFeaturesV10(portFeatures10) .setConfig(portConfig13) .setConfigV10(portConfig10) .setCurrentFeatures(portFeatures13) .setCurrentFeaturesV10(portFeatures10) .setPeerFeatures(portFeatures13) .setPeerFeaturesV10(portFeatures10) .setState(portState13) .setStateV10(portState10) .setSupportedFeatures(portFeatures13) .setSupportedFeaturesV10(portFeatures10) .setCurrSpeed(speed) .setHwAddr(new MacAddress("01:02:03:04:05:06")) .setMaxSpeed(2 * speed) .setName("utPortName:" + portNoValue); } }