Add Match entry deserializers
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / protocol / deserialization / match / Ipv6DestinationEntryDeserializerTest.java
diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/Ipv6DestinationEntryDeserializerTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/protocol/deserialization/match/Ipv6DestinationEntryDeserializerTest.java
new file mode 100644 (file)
index 0000000..5be5a28
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016 Pantheon Technologies s.r.o. 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.protocol.deserialization.match;
+
+import static org.junit.Assert.assertEquals;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.UnpooledByteBufAllocator;
+import org.junit.Test;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
+import org.opendaylight.openflowjava.protocol.api.util.OxmMatchConstants;
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.IpConversionUtil;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6Match;
+
+public class Ipv6DestinationEntryDeserializerTest extends AbstractMatchEntryDeserializerTest {
+
+    @Test
+    public void deserializeEntry() throws Exception {
+        final ByteBuf in = UnpooledByteBufAllocator.DEFAULT.buffer();
+        final Ipv6Prefix address = new Ipv6Prefix("fe80::200:f8ff:fe21:67cf/30");
+
+        writeHeader(in, true);
+        in.writeBytes(IetfInetUtil.INSTANCE.ipv6AddressBytes(IpConversionUtil.extractIpv6Address(address)));
+        in.writeBytes(IpConversionUtil.convertIpv6PrefixToByteArray(IpConversionUtil.extractIpv6Prefix(address)));
+
+        final Ipv6Match match = Ipv6Match.class.cast(deserialize(in).getLayer3Match());
+
+        assertEquals(address.getValue(), match.getIpv6Destination().getValue());
+        assertEquals(0, in.readableBytes());
+    }
+
+    @Override
+    protected int getOxmClassCode() {
+        return OxmMatchConstants.OPENFLOW_BASIC_CLASS;
+    }
+
+    @Override
+    protected int getOxmFieldCode() {
+        return OxmMatchConstants.IPV6_DST;
+    }
+
+    @Override
+    protected int getValueLength() {
+        return EncodeConstants.SIZE_OF_IPV6_ADDRESS_IN_BYTES;
+    }
+
+}