Update MRI projects for Aluminium
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / translator / PortUpdateTranslatorTest.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.openflowplugin.impl.translator;
9
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;
31
32 /**
33  * Test of {@link PortUpdateTranslator}.
34  */
35 @RunWith(MockitoJUnitRunner.class)
36 public class PortUpdateTranslatorTest {
37
38     private PortUpdateTranslator portUpdateTranslator;
39     @Mock
40     private DeviceContext deviceContext;
41     @Mock
42     private DeviceInfo deviceInfo;
43
44     private org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig portConfig;
45     private StateBuilder portStateBld;
46     private PortStatusMessageBuilder portBld;
47
48     @Before
49     public void setUp() {
50         portUpdateTranslator = new PortUpdateTranslator();
51
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);
56
57     }
58
59     @Test
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");
65
66
67         final FlowCapableNodeConnector nodeConnector =
68                 portUpdateTranslator.translate(portBld.build(), deviceInfo, null);
69
70         commonCheck(nodeConnector);
71
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());
79     }
80
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());
87     }
88
89     @Test
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
96                 );
97
98         final FlowCapableNodeConnector nodeConnector =
99                 portUpdateTranslator.translate(portBld.build(), deviceInfo, null);
100
101         commonCheck(nodeConnector);
102
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());
110     }
111
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");
119
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)
135                 .setCurrSpeed(speed)
136                 .setHwAddr(new MacAddress("01:02:03:04:05:06"))
137                 .setMaxSpeed(2 * speed)
138                 .setName("utPortName:" + portNoValue);
139     }
140 }