Remove dependency of impl on onf-extensions
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / protocol / deserialization / multipart / MultipartReplyPortDescDeserializerTest.java
1 /*
2  * Copyright (c) 2017 Pantheon Technologies s.r.o. 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
9 package org.opendaylight.openflowplugin.impl.protocol.deserialization.multipart;
10
11 import static org.junit.Assert.assertEquals;
12
13 import io.netty.buffer.ByteBuf;
14 import io.netty.buffer.UnpooledByteBufAllocator;
15 import java.util.HashMap;
16 import java.util.Map;
17 import org.junit.Test;
18 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
19 import org.opendaylight.openflowjava.util.ByteBufUtils;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortConfig;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.multipart.reply.multipart.reply.body.MultipartReplyPortDesc;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
24
25 public class MultipartReplyPortDescDeserializerTest extends AbstractMultipartDeserializerTest {
26     private static final byte PADDING_IN_PORT_DESC_HEADER_01 = 4;
27     private static final byte PADDING_IN_PORT_DESC_HEADER_02 = 2;
28
29     private static final int PORT_NUMBER = 1;
30     private static final byte[] MAC_ADDRESS = new byte[] {1,2,3,4,5,6};
31
32     private static final boolean PC_PORT_DOWN = true;
33     private static final boolean PC_N0_RECV = true;
34     private static final boolean PC_N0_FWD = false;
35     private static final boolean PC_N0_PACKET_IN = true;
36     private static final PortConfig PORT_CONFIG = new PortConfig(PC_N0_FWD, PC_N0_PACKET_IN, PC_N0_RECV, PC_PORT_DOWN);
37
38     private static final boolean PS_LINK_DOWN = true;
39     private static final boolean PS_BLOCKED = true;
40     private static final boolean PS_LIVE = false;
41
42     private static final boolean PF10MBHD = true;
43     private static final boolean PF10MBFD = true;
44     private static final boolean PF100MBHD = true;
45     private static final boolean PF100MBFD = true;
46     private static final boolean PF1GBHD = true;
47     private static final boolean PF1GBFD = true;
48     private static final boolean PF10GBFD = true;
49     private static final boolean PF40GBFD = true;
50     private static final boolean PF100GBFD = true;
51     private static final boolean PF1TBFD = false;
52     private static final boolean PFOTHER = false;
53     private static final boolean PFCOPPER = false;
54     private static final boolean PFFIBER = false;
55     private static final boolean PFAUTONEG = false;
56     private static final boolean PFPAUSE = false;
57     private static final boolean PFPAUSEASYM = false;
58     private static  final PortFeatures CURRENT_FEATURE = new PortFeatures(PFAUTONEG, PFCOPPER, PFFIBER, PF40GBFD,
59                                                         PF100GBFD, PF100MBFD, PF100MBHD, PF1GBFD, PF1GBHD, PF1TBFD,
60                                                         PFOTHER, PFPAUSE, PFPAUSEASYM, PF10GBFD, PF10MBFD, PF10MBHD);
61     private static final int ADVERTISED_FEATURE = 6;
62     private static final int SUPPORTED_FEATURE = 7;
63     private static final int PEER_FEATURES = 8;
64     private static final int CURRENT_SPEED = 9;
65     private static final int MAXIMUM_SPEED = 10;
66
67     @Test
68     public void deserialize() throws Exception {
69         ByteBuf buffer = UnpooledByteBufAllocator.DEFAULT.buffer();
70         buffer.writeInt(PORT_NUMBER);
71         buffer.writeZero(PADDING_IN_PORT_DESC_HEADER_01);
72         buffer.writeBytes(MAC_ADDRESS);
73         buffer.writeZero(PADDING_IN_PORT_DESC_HEADER_02);
74         buffer.writeZero(EncodeConstants.MAX_PORT_NAME_LENGTH);
75
76         Map<Integer, Boolean> portMap = new HashMap<>();
77         portMap.put(new Integer(0), PORT_CONFIG.isPORTDOWN());
78         portMap.put(new Integer(2), PORT_CONFIG.isNORECV());
79         portMap.put(new Integer(5), PORT_CONFIG.isNOFWD());
80         portMap.put(new Integer(6), PORT_CONFIG.isNOPACKETIN());
81
82         buffer.writeInt(ByteBufUtils.fillBitMaskFromMap(portMap));
83         buffer.writeInt(ByteBufUtils.fillBitMask(0, PS_BLOCKED, PS_LINK_DOWN, PS_LIVE));
84         buffer.writeInt(ByteBufUtils.fillBitMask(0,
85                 CURRENT_FEATURE.isTenMbHd(),
86                 CURRENT_FEATURE.isTenMbFd(),
87                 CURRENT_FEATURE.isHundredMbHd(),
88                 CURRENT_FEATURE.isHundredMbFd(),
89                 CURRENT_FEATURE.isOneGbHd(),
90                 CURRENT_FEATURE.isOneGbFd(),
91                 CURRENT_FEATURE.isTenGbFd(),
92                 CURRENT_FEATURE.isFortyGbFd(),
93                 CURRENT_FEATURE.isHundredGbFd(),
94                 CURRENT_FEATURE.isOneTbFd(),
95                 CURRENT_FEATURE.isOther(),
96                 CURRENT_FEATURE.isFiber(),
97                 CURRENT_FEATURE.isAutoeng(),
98                 CURRENT_FEATURE.isCopper(),
99                 CURRENT_FEATURE.isPause(),
100                 CURRENT_FEATURE.isPauseAsym()));
101         buffer.writeInt(ADVERTISED_FEATURE);
102         buffer.writeInt(SUPPORTED_FEATURE);
103         buffer.writeInt(PEER_FEATURES);
104         buffer.writeInt(CURRENT_SPEED);
105         buffer.writeInt(MAXIMUM_SPEED);
106
107         final MultipartReplyPortDesc reply = (MultipartReplyPortDesc) deserializeMultipart(buffer);
108         assertEquals(PORT_NUMBER, reply.getPorts().get(0).getPortNumber().getUint32().intValue());
109         assertEquals("01:02:03:04:05:06", reply.getPorts().get(0).getHardwareAddress().getValue());
110         assertEquals(PORT_CONFIG, reply.getPorts().get(0).getConfiguration());
111         assertEquals(PS_BLOCKED, reply.getPorts().get(0).getState().isBlocked());
112         assertEquals(PS_LINK_DOWN, reply.getPorts().get(0).getState().isLinkDown());
113         assertEquals(PS_LIVE, reply.getPorts().get(0).getState().isLive());
114         assertEquals(CURRENT_FEATURE, reply.getPorts().get(0).getCurrentFeature());
115         assertEquals(CURRENT_SPEED, reply.getPorts().get(0).getCurrentSpeed().intValue());
116         assertEquals(MAXIMUM_SPEED, reply.getPorts().get(0).getMaximumSpeed().intValue());
117     }
118
119     @Override
120     protected int getType() {
121         return MultipartType.OFPMPPORTDESC.getIntValue();
122     }
123 }