69262a80c505922f40a59ae5db2052868693d632
[openflowjava.git] / third-party / openflow-codec / src / test / java / org / openflow / codec / protocol / OFPQueueConfigTest.java
1 package org.openflow.codec.protocol;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import junit.framework.TestCase;
7
8 import org.openflow.codec.io.DataBuffers;
9 import org.openflow.codec.io.IDataBuffer;
10 import org.openflow.codec.protocol.OFPQueueConfigReply;
11 import org.openflow.codec.protocol.OFPQueueConfigRequest;
12 import org.openflow.codec.protocol.factory.OFPBasicFactoryImpl;
13 import org.openflow.codec.protocol.queue.OFPPacketQueue;
14 import org.openflow.codec.protocol.queue.OFPQueueProperty;
15 import org.openflow.codec.protocol.queue.OFPQueuePropertyMinRate;
16 import org.openflow.codec.protocol.queue.OFPQueuePropertyType;
17 import org.openflow.codec.util.OFTestCase;
18
19 public class OFPQueueConfigTest extends OFTestCase {
20     public void testRequest() throws Exception {
21         OFPQueueConfigRequest req = new OFPQueueConfigRequest();
22         req.setPort((short) 5);
23         IDataBuffer bb = DataBuffers.allocate(1024);
24         bb.clear();
25         req.writeTo(bb);
26         bb.flip();
27
28         OFPQueueConfigRequest req2 = new OFPQueueConfigRequest();
29         req2.readFrom(bb);
30         TestCase.assertEquals(req, req2);
31     }
32
33     public void testReply() throws Exception {
34         OFPQueueConfigReply reply = new OFPQueueConfigReply();
35         reply.setPort((short) 5);
36
37         OFPPacketQueue queue = new OFPPacketQueue();
38         queue.setQueueId(1);
39         List<OFPQueueProperty> properties = new ArrayList<OFPQueueProperty>();
40         properties.add(new OFPQueuePropertyMinRate().setRate((short) 1));
41         queue.setProperties(properties);
42         queue.setLength((short) (OFPPacketQueue.MINIMUM_LENGTH + OFPQueuePropertyMinRate.MINIMUM_LENGTH));
43
44         List<OFPPacketQueue> queues = new ArrayList<OFPPacketQueue>();
45         queues.add(queue);
46         reply.setQueues(queues);
47         reply.setLengthU(OFPQueueConfigReply.MINIMUM_LENGTH + queue.getLength());
48
49         IDataBuffer bb = DataBuffers.allocate(1024);
50         bb.clear();
51         reply.writeTo(bb);
52         bb.flip();
53
54         OFPQueueConfigReply reply2 = new OFPQueueConfigReply();
55         reply2.setQueuePropertyFactory(new OFPBasicFactoryImpl());
56         reply2.readFrom(bb);
57         TestCase.assertEquals(reply, reply2);
58         TestCase.assertEquals(1, reply2.getQueues().size());
59         TestCase.assertEquals(1, reply2.getQueues().get(0).getProperties().size());
60         TestCase.assertTrue(reply2.getQueues().get(0).getProperties().get(0) instanceof OFPQueuePropertyMinRate);
61         TestCase.assertEquals(OFPQueuePropertyType.MIN_RATE, reply2.getQueues().get(0).getProperties().get(0).getType());
62
63         reply.getQueues().add(queue.clone());
64         reply.setLengthU(reply.getLengthU() + queue.getLength());
65         bb.clear();
66         reply.writeTo(bb);
67         bb.flip();
68         reply2 = new OFPQueueConfigReply();
69         reply2.setQueuePropertyFactory(new OFPBasicFactoryImpl());
70         reply2.readFrom(bb);
71         TestCase.assertEquals(reply, reply2);
72         TestCase.assertEquals(2, reply2.getQueues().size());
73
74         queue.getProperties().add(new OFPQueuePropertyMinRate().setRate((short) 2));
75         queue.setLength((short) (queue.getLength() + OFPQueuePropertyMinRate.MINIMUM_LENGTH));
76         reply.setLengthU(reply.getLengthU() + OFPQueuePropertyMinRate.MINIMUM_LENGTH);
77         bb.clear();
78         reply.writeTo(bb);
79         bb.flip();
80         reply2 = new OFPQueueConfigReply();
81         reply2.setQueuePropertyFactory(new OFPBasicFactoryImpl());
82         reply2.readFrom(bb);
83         TestCase.assertEquals(reply, reply2);
84         TestCase.assertEquals(2, reply2.getQueues().size());
85         TestCase.assertEquals(2, reply2.getQueues().get(0).getProperties().size());
86     }
87 }