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.openflowjava.protocol.impl.deserialization.experimenter;
11 import io.netty.buffer.ByteBuf;
12 import org.junit.Assert;
13 import org.junit.Before;
14 import org.junit.Test;
15 import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
16 import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
17 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
18 import org.opendaylight.openflowjava.protocol.impl.deserialization.DeserializerRegistryImpl;
19 import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;
20 import org.opendaylight.openflowjava.util.ExperimenterDeserializerKeyFactory;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev150225.ExperimenterIdError;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ErrorMessage;
25 * Tests for {@link org.opendaylight.openflowjava.protocol.impl.deserialization.experimenter.OnfExperimenterErrorFactory}.
27 public class OnfExperimenterErrorFactoryTest {
29 private OFDeserializer<ErrorMessage> factory;
32 public void startUp() {
33 DeserializerRegistry registry = new DeserializerRegistryImpl();
35 factory = registry.getDeserializer(ExperimenterDeserializerKeyFactory.createExperimenterErrorDeserializerKey(
36 EncodeConstants.OF13_VERSION_ID, EncodeConstants.ONF_EXPERIMENTER_ID));
40 public void testVersion() {
41 ByteBuf buffer = BufferHelper.buildBuffer("ff ff 08 fc 00 00 00 01");
42 ErrorMessage builtByFactory = factory.deserialize(buffer);
43 BufferHelper.checkHeaderV13(builtByFactory);
47 public void testDeserializeBase() {
48 ByteBuf buffer = BufferHelper.buildBuffer("ff ff 08 fc 4f 4e 46 00");
49 ErrorMessage builtByFactory = factory.deserialize(buffer);
50 Assert.assertEquals("Wrong type", EncodeConstants.EXPERIMENTER_VALUE, builtByFactory.getType().intValue());
51 Assert.assertEquals("Wrong type string", "EXPERIMENTER", builtByFactory.getTypeString());
52 Assert.assertEquals("Wrong experimenter ID", EncodeConstants.ONF_EXPERIMENTER_ID,
53 builtByFactory.getAugmentation(ExperimenterIdError.class).getExperimenter().getValue().intValue());
54 Assert.assertNull("Data is not null", builtByFactory.getData());
58 public void testDeserializeCodes() {
59 ByteBuf buffer = BufferHelper.buildBuffer("ff ff 08 fc 00 00 00 01");
60 ErrorMessage builtByFactory = factory.deserialize(buffer);
61 Assert.assertEquals("Wrong code", 2300, builtByFactory.getCode().intValue());
62 Assert.assertEquals("Wrong code string", "ONFERR_ET_UNKNOWN", builtByFactory.getCodeString());
64 buffer = BufferHelper.buildBuffer("ff ff 08 fd 00 00 00 01");
65 builtByFactory = factory.deserialize(buffer);
66 Assert.assertEquals("Wrong code", 2301, builtByFactory.getCode().intValue());
67 Assert.assertEquals("Wrong code string", "ONFERR_ET_EPERM", builtByFactory.getCodeString());
69 buffer = BufferHelper.buildBuffer("ff ff 08 fe 00 00 00 01");
70 builtByFactory = factory.deserialize(buffer);
71 Assert.assertEquals("Wrong code", 2302, builtByFactory.getCode().intValue());
72 Assert.assertEquals("Wrong code string", "ONFERR_ET_BAD_ID", builtByFactory.getCodeString());
74 buffer = BufferHelper.buildBuffer("ff ff 08 ff 00 00 00 01");
75 builtByFactory = factory.deserialize(buffer);
76 Assert.assertEquals("Wrong code", 2303, builtByFactory.getCode().intValue());
77 Assert.assertEquals("Wrong code string", "ONFERR_ET_BUNDLE_EXIST", builtByFactory.getCodeString());
79 buffer = BufferHelper.buildBuffer("ff ff 09 00 00 00 00 01");
80 builtByFactory = factory.deserialize(buffer);
81 Assert.assertEquals("Wrong code", 2304, builtByFactory.getCode().intValue());
82 Assert.assertEquals("Wrong code string", "ONFERR_ET_BUNDLE_CLOSED", builtByFactory.getCodeString());
84 buffer = BufferHelper.buildBuffer("ff ff 09 01 00 00 00 01");
85 builtByFactory = factory.deserialize(buffer);
86 Assert.assertEquals("Wrong code", 2305, builtByFactory.getCode().intValue());
87 Assert.assertEquals("Wrong code string", "ONFERR_ET_OUT_OF_BUNDLES", builtByFactory.getCodeString());
89 buffer = BufferHelper.buildBuffer("ff ff 09 02 00 00 00 01");
90 builtByFactory = factory.deserialize(buffer);
91 Assert.assertEquals("Wrong code", 2306, builtByFactory.getCode().intValue());
92 Assert.assertEquals("Wrong code string", "ONFERR_ET_BAD_TYPE", builtByFactory.getCodeString());
94 buffer = BufferHelper.buildBuffer("ff ff 09 03 00 00 00 01");
95 builtByFactory = factory.deserialize(buffer);
96 Assert.assertEquals("Wrong code", 2307, builtByFactory.getCode().intValue());
97 Assert.assertEquals("Wrong code string", "ONFERR_ET_BAD_FLAGS", builtByFactory.getCodeString());
99 buffer = BufferHelper.buildBuffer("ff ff 09 04 00 00 00 01");
100 builtByFactory = factory.deserialize(buffer);
101 Assert.assertEquals("Wrong code", 2308, builtByFactory.getCode().intValue());
102 Assert.assertEquals("Wrong code string", "ONFERR_ET_MSG_BAD_LEN", builtByFactory.getCodeString());
104 buffer = BufferHelper.buildBuffer("ff ff 09 05 00 00 00 01");
105 builtByFactory = factory.deserialize(buffer);
106 Assert.assertEquals("Wrong code", 2309, builtByFactory.getCode().intValue());
107 Assert.assertEquals("Wrong code string", "ONFERR_ET_MSG_BAD_XID", builtByFactory.getCodeString());
109 buffer = BufferHelper.buildBuffer("ff ff 09 06 00 00 00 01");
110 builtByFactory = factory.deserialize(buffer);
111 Assert.assertEquals("Wrong code", 2310, builtByFactory.getCode().intValue());
112 Assert.assertEquals("Wrong code string", "ONFERR_ET_MSG_UNSUP", builtByFactory.getCodeString());
114 buffer = BufferHelper.buildBuffer("ff ff 09 07 00 00 00 01");
115 builtByFactory = factory.deserialize(buffer);
116 Assert.assertEquals("Wrong code", 2311, builtByFactory.getCode().intValue());
117 Assert.assertEquals("Wrong code string", "ONFERR_ET_MSG_CONFLICT", builtByFactory.getCodeString());
119 buffer = BufferHelper.buildBuffer("ff ff 09 08 00 00 00 01");
120 builtByFactory = factory.deserialize(buffer);
121 Assert.assertEquals("Wrong code", 2312, builtByFactory.getCode().intValue());
122 Assert.assertEquals("Wrong code string", "ONFERR_ET_MSG_TOO_MANY", builtByFactory.getCodeString());
124 buffer = BufferHelper.buildBuffer("ff ff 09 09 00 00 00 01");
125 builtByFactory = factory.deserialize(buffer);
126 Assert.assertEquals("Wrong code", 2313, builtByFactory.getCode().intValue());
127 Assert.assertEquals("Wrong code string", "ONFERR_ET_MSG_FAILED", builtByFactory.getCodeString());
129 buffer = BufferHelper.buildBuffer("ff ff 09 0a 00 00 00 01");
130 builtByFactory = factory.deserialize(buffer);
131 Assert.assertEquals("Wrong code", 2314, builtByFactory.getCode().intValue());
132 Assert.assertEquals("Wrong code string", "ONFERR_ET_TIMEOUT", builtByFactory.getCodeString());
134 buffer = BufferHelper.buildBuffer("ff ff 09 0b 00 00 00 01");
135 builtByFactory = factory.deserialize(buffer);
136 Assert.assertEquals("Wrong code", 2315, builtByFactory.getCode().intValue());
137 Assert.assertEquals("Wrong code string", "ONFERR_ET_BUNDLE_IN_PROGRESS", builtByFactory.getCodeString());