blob: 9a5a4dca0e051f40cc583e2418863e9bbf75a1ba [file] [log] [blame]
alshabib1f44e8e2014-08-14 15:19:57 -07001package org.projectfloodlight.openflow.types;
2
3import static org.hamcrest.CoreMatchers.equalTo;
4import static org.junit.Assert.assertThat;
5
6import org.hamcrest.Matchers;
7import org.jboss.netty.buffer.ChannelBuffer;
8import org.jboss.netty.buffer.ChannelBuffers;
9import org.junit.Test;
10import org.projectfloodlight.openflow.protocol.OFFactories;
11import org.projectfloodlight.openflow.protocol.OFFlowAdd;
12import org.projectfloodlight.openflow.protocol.OFVersion;
13
14public class OFErrorCauseDataTest {
15 @Test
16 public void testEmpty() {
17 OFErrorCauseData emptyCause = OFErrorCauseData.of(new byte[] {}, OFVersion.OF_13);
18 assertThat(emptyCause.getData(), equalTo(new byte[] {}));
19 assertThat(emptyCause.getParsedMessage().isPresent(), equalTo(false));
20 assertThat(emptyCause.toString(), Matchers.containsString("unparsed"));
21 }
22
23 @Test
24 public void testTooShort() {
25 OFErrorCauseData emptyCause = OFErrorCauseData.of(new byte[] {0x1, 0x2}, OFVersion.OF_13);
26 assertThat(emptyCause.getData(), equalTo(new byte[] {0x1, 0x2}));
27 assertThat(emptyCause.getParsedMessage().isPresent(), equalTo(false));
28 assertThat(emptyCause.toString(), Matchers.containsString("unparsed"));
29 assertThat(emptyCause.toString(), Matchers.containsString("01 02"));
30 }
31
32 byte[] truncatedFlowAddd = new byte[] {
33 0x04, 0x0e, // version, type
34 0x00, (byte) 0x80, // length
35 0x12, 0x34, 0x56, 0x78, // xid
36 (byte) 0xfe, (byte) 0xdc , (byte) 0xba, (byte) 0x98, 0x76, 0x54, 0x32, 0x10, // cookie
37 (byte) 0xff, 0x00, (byte) 0xff, 0x00, (byte) 0xff, 0x00, (byte) 0xff, 0x00, // cookie_mask
38 0x03 // table_id
39 // rest truncated
40 };
41
42 @Test
43 public void testTruncated() {
44 OFErrorCauseData emptyCause = OFErrorCauseData.of(truncatedFlowAddd, OFVersion.OF_13);
45 assertThat(emptyCause.getData(), equalTo(truncatedFlowAddd));
46 assertThat(emptyCause.getParsedMessage().isPresent(), equalTo(false));
47 assertThat(emptyCause.toString(), Matchers.containsString("unparsed"));
48 assertThat(emptyCause.toString(), Matchers.containsString("04 0e 00 80"));
49 }
50
51 @Test
52 public void testFlowAdd() {
53 OFFlowAdd flowAdd = OFFactories.getFactory(OFVersion.OF_13).buildFlowAdd()
54 .setXid(0x12345678)
55 .setCookie(U64.parseHex("FEDCBA9876543210"))
56 .setCookieMask(U64.parseHex("FF00FF00FF00FF00"))
57 .setTableId(TableId.of(3))
58 .setIdleTimeout(5)
59 .setHardTimeout(10)
60 .setPriority(6000)
61 .build();
62
63 ChannelBuffer bb = ChannelBuffers.dynamicBuffer();
64 flowAdd.writeTo(bb);
65 byte[] flowAddBytes = new byte[bb.readableBytes()];
66 bb.readBytes(flowAddBytes);
67
68 OFErrorCauseData emptyCause = OFErrorCauseData.of(flowAddBytes, OFVersion.OF_13);
69 assertThat(emptyCause.getData(), equalTo(flowAddBytes));
70 assertThat(emptyCause.getParsedMessage().isPresent(), equalTo(true));
71 assertThat(emptyCause.toString(), Matchers.containsString("OFFlowAdd"));
72 assertThat(emptyCause.toString(), Matchers.containsString("idleTimeout=5"));
73 }
74}