/* * Copyright (c) 2014 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.openflowjava.protocol.impl.util; import io.netty.buffer.ByteBuf; import org.junit.Assert; import org.junit.Test; import org.opendaylight.openflowjava.protocol.api.keys.ActionDeserializerKey; import org.opendaylight.openflowjava.protocol.api.keys.InstructionDeserializerKey; import org.opendaylight.openflowjava.protocol.api.keys.MatchEntryDeserializerKey; import org.opendaylight.openflowjava.protocol.api.keys.MessageCodeKey; import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants; /** * @author michal.polkorab * */ public class CodeKeyMakerFactoryTest { /** * Tests {@link CodeKeyMakerFactory#createMatchEntriesKeyMaker(short)} */ @Test public void testMatchEntriesKeyMaker() { CodeKeyMaker keyMaker = CodeKeyMakerFactory.createMatchEntriesKeyMaker(EncodeConstants.OF13_VERSION_ID); Assert.assertNotNull("Null key maker", keyMaker); ByteBuf buffer = BufferHelper.buildBuffer("80 00 00 04 00 00 00 01"); buffer.skipBytes(4); // skip XID MessageCodeKey codeKey = keyMaker.make(buffer); Assert.assertNotNull("Null key", codeKey); Assert.assertEquals("Wrong key", new MatchEntryDeserializerKey(EncodeConstants.OF13_VERSION_ID, 32768, 0), codeKey); Assert.assertEquals("Buffer index modified", 8, buffer.readableBytes()); } /** * Tests {@link CodeKeyMakerFactory#createMatchEntriesKeyMaker(short)} */ @Test public void testExperimenterMatchEntriesKeyMaker() { CodeKeyMaker keyMaker = CodeKeyMakerFactory.createMatchEntriesKeyMaker(EncodeConstants.OF13_VERSION_ID); Assert.assertNotNull("Null key maker", keyMaker); ByteBuf buffer = BufferHelper.buildBuffer("FF FF 00 04 00 00 00 01"); buffer.skipBytes(4); // skip XID MessageCodeKey codeKey = keyMaker.make(buffer); Assert.assertNotNull("Null key", codeKey); MatchEntryDeserializerKey comparationKey = new MatchEntryDeserializerKey(EncodeConstants.OF13_VERSION_ID, 65535, 0); comparationKey.setExperimenterId(1L); Assert.assertEquals("Wrong key", comparationKey, codeKey); Assert.assertEquals("Buffer index modified", 8, buffer.readableBytes()); } /** * Tests {@link CodeKeyMakerFactory#createActionsKeyMaker(short)} */ @Test public void testActionKeyMaker() { CodeKeyMaker keyMaker = CodeKeyMakerFactory.createActionsKeyMaker(EncodeConstants.OF13_VERSION_ID); Assert.assertNotNull("Null key maker", keyMaker); ByteBuf buffer = BufferHelper.buildBuffer("00 00 00 10 00 00 00 01 00 02 00 00 00 00 00 00"); buffer.skipBytes(4); // skip XID MessageCodeKey codeKey = keyMaker.make(buffer); Assert.assertNotNull("Null key", codeKey); Assert.assertEquals("Wrong key", new ActionDeserializerKey(EncodeConstants.OF13_VERSION_ID, 0, null), codeKey); Assert.assertEquals("Buffer index modified", 16, buffer.readableBytes()); } /** * Tests {@link CodeKeyMakerFactory#createActionsKeyMaker(short)} */ @Test public void testExperimenterActionKeyMaker() { CodeKeyMaker keyMaker = CodeKeyMakerFactory.createActionsKeyMaker(EncodeConstants.OF13_VERSION_ID); Assert.assertNotNull("Null key maker", keyMaker); ByteBuf buffer = BufferHelper.buildBuffer("FF FF 00 08 00 00 00 01"); buffer.skipBytes(4); // skip XID MessageCodeKey codeKey = keyMaker.make(buffer); Assert.assertNotNull("Null key", codeKey); Assert.assertEquals("Wrong key", new ActionDeserializerKey(EncodeConstants.OF13_VERSION_ID, 65535, 1L), codeKey); Assert.assertEquals("Buffer index modified", 8, buffer.readableBytes()); } /** * Tests {@link CodeKeyMakerFactory#createInstructionsKeyMaker(short)} */ @Test public void testInstructionKeyMaker() { CodeKeyMaker keyMaker = CodeKeyMakerFactory.createInstructionsKeyMaker(EncodeConstants.OF13_VERSION_ID); Assert.assertNotNull("Null key maker", keyMaker); ByteBuf buffer = BufferHelper.buildBuffer("00 00 00 08"); buffer.skipBytes(4); // skip XID MessageCodeKey codeKey = keyMaker.make(buffer); Assert.assertNotNull("Null key", codeKey); Assert.assertEquals("Wrong key", new InstructionDeserializerKey(EncodeConstants.OF13_VERSION_ID, 0, null), codeKey); Assert.assertEquals("Buffer index modified", 4, buffer.readableBytes()); } /** * Tests {@link CodeKeyMakerFactory#createInstructionsKeyMaker(short)} */ @Test public void testExperimenterInstructionKeyMaker() { CodeKeyMaker keyMaker = CodeKeyMakerFactory.createInstructionsKeyMaker(EncodeConstants.OF13_VERSION_ID); Assert.assertNotNull("Null key maker", keyMaker); ByteBuf buffer = BufferHelper.buildBuffer("FF FF 00 08 00 00 00 01"); buffer.skipBytes(4); // skip XID MessageCodeKey codeKey = keyMaker.make(buffer); Assert.assertNotNull("Null key", codeKey); Assert.assertEquals("Wrong key", new InstructionDeserializerKey(EncodeConstants.OF13_VERSION_ID, 65535, 1L), codeKey); Assert.assertEquals("Buffer index modified", 8, buffer.readableBytes()); } }