2 * Copyright (c) 2016 Pantheon Technologies s.r.o. 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.protocol.deserialization.messages;
11 import static org.junit.Assert.assertEquals;
13 import com.google.common.collect.ImmutableMap;
14 import io.netty.buffer.ByteBuf;
15 import io.netty.buffer.UnpooledByteBufAllocator;
16 import org.junit.Test;
17 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
18 import org.opendaylight.openflowjava.util.ByteBufUtils;
19 import org.opendaylight.openflowplugin.impl.protocol.deserialization.AbstractDeserializerTest;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.IetfYangUtil;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortMessage;
24 public class PortMessageDeserializerTest extends AbstractDeserializerTest {
25 private static final byte PADDING_IN_PORT_MOD_MESSAGE_1 = 4;
26 private static final byte PADDING_IN_PORT_MOD_MESSAGE_2 = 2;
27 private static final byte PADDING_IN_PORT_MOD_MESSAGE_3 = 4;
30 private static final Boolean IS_AUTOENG = true;
31 private static final Boolean IS_COPPER = false;
32 private static final Boolean IS_FIBER = true;
33 private static final Boolean IS_40GBFD = true;
34 private static final Boolean IS_100GBFD = false;
35 private static final Boolean IS_100MBFD = false;
36 private static final Boolean IS_100MBHD = true;
37 private static final Boolean IS_1GBFD = false;
38 private static final Boolean IS_1GBHD = false;
39 private static final Boolean IS_1TBFD = true;
40 private static final Boolean IS_OTHER = true;
41 private static final Boolean IS_PAUSE = false;
42 private static final Boolean IS_PAUSE_ASYM = false;
43 private static final Boolean IS_10GBFD = false;
44 private static final Boolean IS_10MBFD = true;
45 private static final Boolean IS_10MBHD = true;
46 private static final Boolean IS_NOPACKETIN = false;
47 private static final Boolean IS_NOFWD = true;
48 private static final Boolean IS_NORECV = true;
49 private static final Boolean IS_PORTDOWN = true;
50 private static final int PORT = 22;
51 private static final int XID = 42;
52 private static final int TYPE = 16;
53 private static final MacAddress ADDRESS = new MacAddress("00:01:02:03:04:05");
55 private ByteBuf buffer;
58 protected void init() {
59 buffer = UnpooledByteBufAllocator.DEFAULT.buffer();
63 public void deserialize() {
64 buffer.writeByte(TYPE);
65 buffer.writeShort(EncodeConstants.EMPTY_LENGTH);
67 buffer.writeInt(PORT);
68 buffer.writeZero(PADDING_IN_PORT_MOD_MESSAGE_1);
69 buffer.writeBytes(IetfYangUtil.INSTANCE.bytesFor(ADDRESS));
71 final int config = ByteBufUtils.fillBitMaskFromMap(ImmutableMap
72 .<Integer, Boolean>builder()
76 .put(6, IS_NOPACKETIN)
79 buffer.writeZero(PADDING_IN_PORT_MOD_MESSAGE_2);
80 buffer.writeInt(config); // config
81 buffer.writeInt(config); // config mask
83 buffer.writeInt(ByteBufUtils.fillBitMask(0,
101 buffer.writeZero(PADDING_IN_PORT_MOD_MESSAGE_3);
103 final PortMessage message = (PortMessage) getFactory().deserialize(buffer, EncodeConstants.OF13_VERSION_ID);
105 assertEquals(XID, message.getXid().intValue());
106 assertEquals(PORT, message.getPortNumber().getUint32().intValue());
107 assertEquals(ADDRESS.getValue(), message.getHardwareAddress().getValue());
110 assertEquals(IS_PORTDOWN, message.getConfiguration().isPORTDOWN());
111 assertEquals(IS_NORECV, message.getConfiguration().isNORECV());
112 assertEquals(IS_NOFWD, message.getConfiguration().isNOFWD());
113 assertEquals(IS_NOPACKETIN, message.getConfiguration().isNOPACKETIN());
116 assertEquals(IS_10MBHD, message.getAdvertisedFeatures().isTenMbHd());
117 assertEquals(IS_10MBFD, message.getAdvertisedFeatures().isTenMbHd());
118 assertEquals(IS_100MBHD, message.getAdvertisedFeatures().isHundredMbHd());
119 assertEquals(IS_100MBFD, message.getAdvertisedFeatures().isHundredMbFd());
120 assertEquals(IS_1GBHD, message.getAdvertisedFeatures().isOneGbHd());
121 assertEquals(IS_1GBFD, message.getAdvertisedFeatures().isOneGbFd());
122 assertEquals(IS_10GBFD, message.getAdvertisedFeatures().isTenGbFd());
123 assertEquals(IS_40GBFD, message.getAdvertisedFeatures().isFortyGbFd());
124 assertEquals(IS_100GBFD, message.getAdvertisedFeatures().isHundredGbFd());
125 assertEquals(IS_1TBFD, message.getAdvertisedFeatures().isOneTbFd());
126 assertEquals(IS_OTHER, message.getAdvertisedFeatures().isOther());
127 assertEquals(IS_COPPER, message.getAdvertisedFeatures().isCopper());
128 assertEquals(IS_FIBER, message.getAdvertisedFeatures().isFiber());
129 assertEquals(IS_AUTOENG, message.getAdvertisedFeatures().isAutoeng());
130 assertEquals(IS_PAUSE, message.getAdvertisedFeatures().isPause());
131 assertEquals(IS_PAUSE_ASYM, message.getAdvertisedFeatures().isPauseAsym());
133 assertEquals(buffer.readableBytes(), 0);