import java.util.List;\r
\r
import org.junit.Assert;\r
+import org.junit.Before;\r
import org.junit.Test;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.EnhancedMessageCodeKey;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.MessageCodeKey;\r
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;\r
+import org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializerRegistryImpl;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthDst;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthSrc;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.EthType;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.ExperimenterClass;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv4Code;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv4Type;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Icmpv6Code;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsBos;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsLabel;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MplsTc;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Nxm0Class;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.Nxm1Class;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OpenflowBasicClass;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OxmMatchType;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.PbbIsid;\r
*\r
*/\r
public class MatchDeserializerTest {\r
- \r
+\r
+ private OFDeserializer<Match> matchDeserializer;\r
+ private DeserializerRegistry registry;\r
+\r
+ /**\r
+ * Initializes deserializer registry and lookups correct deserializer\r
+ */\r
+ @Before\r
+ public void startUp() {\r
+ registry = new DeserializerRegistryImpl();\r
+ registry.init();\r
+ matchDeserializer = registry.getDeserializer(\r
+ new MessageCodeKey(EncodeConstants.OF13_VERSION_ID,\r
+ EncodeConstants.EMPTY_VALUE, Match.class));\r
+ }\r
+\r
/**\r
* Testing Ipv4 address deserialization\r
*/\r
@Test\r
public void testIpv4Address() {\r
ByteBuf buffer = ByteBufUtils.hexStringToByteBuf("80 00 18 04 00 01 02 03");\r
- \r
- List<MatchEntries> list = MatchDeserializer.createMatchEntry(buffer, 8);\r
- MatchEntries entry = list.get(0);\r
+\r
+ OFDeserializer<MatchEntries> entryDeserializer = registry.getDeserializer(\r
+ new EnhancedMessageCodeKey(EncodeConstants.OF13_VERSION_ID, 0x8000, 12, MatchEntries.class));\r
+ MatchEntries entry = entryDeserializer.deserialize(buffer);\r
Assert.assertEquals("Wrong Ipv4 address format", new Ipv4Address("0.1.2.3"),\r
entry.getAugmentation(Ipv4AddressMatchEntry.class).getIpv4Address());\r
}\r
public void testIpv6Address() {\r
ByteBuf buffer = ByteBufUtils.hexStringToByteBuf("80 00 34 10 00 00 00 01 00 02 00 03 00 04 00 05 00 06 0F 07");\r
\r
- List<MatchEntries> list = MatchDeserializer.createMatchEntry(buffer, 20);\r
- MatchEntries entry = list.get(0);\r
+ OFDeserializer<MatchEntries> entryDeserializer = registry.getDeserializer(\r
+ new EnhancedMessageCodeKey(EncodeConstants.OF13_VERSION_ID, 0x8000, 26, MatchEntries.class));\r
+ MatchEntries entry = entryDeserializer.deserialize(buffer);\r
Assert.assertEquals("Wrong Ipv6 address format", new Ipv6Address("0000:0001:0002:0003:0004:0005:0006:0F07"),\r
entry.getAugmentation(Ipv6AddressMatchEntry.class).getIpv6Address());\r
}\r
public void testMatch() {\r
ByteBuf buffer = ByteBufUtils.hexStringToByteBuf("00 01 01 AC "\r
+ "80 00 00 04 00 00 00 01 "\r
- + "00 00 02 04 00 00 00 02 "\r
- + "00 01 05 10 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 04 "\r
- + "FF FF 07 0C 00 00 00 00 00 05 00 00 00 00 00 06 "\r
+ + "80 00 02 04 00 00 00 02 "\r
+ + "80 00 05 10 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 04 "\r
+ + "80 00 07 0C 00 00 00 00 00 05 00 00 00 00 00 06 "\r
+ "80 00 09 0C 00 00 00 00 00 07 00 00 00 00 00 08 "\r
+ "80 00 0A 02 00 09 "\r
+ "80 00 0D 04 00 0A 00 0B "\r
+ "80 00 4F 04 01 66 03 04 "\r
+ "00 00 00 00");\r
\r
- Match match = MatchDeserializer.createMatch(buffer);\r
+ Match match = matchDeserializer.deserialize(buffer);\r
Assert.assertEquals("Wrong match type", OxmMatchType.class, match.getType());\r
Assert.assertEquals("Wrong match entries size", 40, match.getMatchEntries().size());\r
List<MatchEntries> entries = match.getMatchEntries();\r
Assert.assertEquals("Wrong entry value", 1,\r
entry0.getAugmentation(PortNumberMatchEntry.class).getPortNumber().getValue().intValue());\r
MatchEntries entry1 = entries.get(1);\r
- Assert.assertEquals("Wrong entry class", Nxm0Class.class, entry1.getOxmClass());\r
+ Assert.assertEquals("Wrong entry class", OpenflowBasicClass.class, entry1.getOxmClass());\r
Assert.assertEquals("Wrong entry field", InPhyPort.class, entry1.getOxmMatchField());\r
Assert.assertEquals("Wrong entry hasMask", false, entry1.isHasMask());\r
Assert.assertEquals("Wrong entry value", 2,\r
entry1.getAugmentation(PortNumberMatchEntry.class).getPortNumber().getValue().intValue());\r
MatchEntries entry2 = entries.get(2);\r
- Assert.assertEquals("Wrong entry class", Nxm1Class.class, entry2.getOxmClass());\r
+ Assert.assertEquals("Wrong entry class", OpenflowBasicClass.class, entry2.getOxmClass());\r
Assert.assertEquals("Wrong entry field", Metadata.class, entry2.getOxmMatchField());\r
Assert.assertEquals("Wrong entry hasMask", true, entry2.isHasMask());\r
Assert.assertArrayEquals("Wrong entry value", ByteBufUtils.hexStringToBytes("00 00 00 00 00 00 00 03"), \r
Assert.assertArrayEquals("Wrong entry mask", ByteBufUtils.hexStringToBytes("00 00 00 00 00 00 00 04"), \r
entry2.getAugmentation(MaskMatchEntry.class).getMask());\r
MatchEntries entry3 = entries.get(3);\r
- Assert.assertEquals("Wrong entry class", ExperimenterClass.class, entry3.getOxmClass());\r
+ Assert.assertEquals("Wrong entry class", OpenflowBasicClass.class, entry3.getOxmClass());\r
Assert.assertEquals("Wrong entry field", EthDst.class, entry3.getOxmMatchField());\r
Assert.assertEquals("Wrong entry hasMask", true, entry3.isHasMask());\r
Assert.assertEquals("Wrong entry value", new MacAddress("00:00:00:00:00:05"), \r