Initial opendaylight infrastructure commit!!
[controller.git] / third-party / openflowj / src / test / java / org / openflow / protocol / OFQueueConfigTest.java
1
2 /*
3  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
4  *
5  * This program and the accompanying materials are made available under the
6  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7  * and is available at http://www.eclipse.org/legal/epl-v10.html
8  */
9
10 package org.openflow.protocol;
11
12 import java.nio.ByteBuffer;
13 import java.util.ArrayList;
14 import java.util.List;
15
16 import junit.framework.TestCase;
17
18 import org.openflow.protocol.factory.BasicFactory;
19 import org.openflow.protocol.queue.OFPacketQueue;
20 import org.openflow.protocol.queue.OFQueueProperty;
21 import org.openflow.protocol.queue.OFQueuePropertyMinRate;
22 import org.openflow.protocol.queue.OFQueuePropertyType;
23 import org.openflow.util.OFTestCase;
24
25 public class OFQueueConfigTest extends OFTestCase {
26     public void testRequest() throws Exception {
27         OFQueueConfigRequest req = new OFQueueConfigRequest();
28         req.setPort((short) 5);
29         ByteBuffer bb = ByteBuffer.allocate(1024);
30         bb.clear();
31         req.writeTo(bb);
32         bb.flip();
33
34         OFQueueConfigRequest req2 = new OFQueueConfigRequest();
35         req2.readFrom(bb);
36         TestCase.assertEquals(req, req2);
37     }
38
39     public void testReply() throws Exception {
40         OFQueueConfigReply reply = new OFQueueConfigReply();
41         reply.setPort((short) 5);
42
43         OFPacketQueue queue = new OFPacketQueue();
44         queue.setQueueId(1);
45         List<OFQueueProperty> properties = new ArrayList<OFQueueProperty>();
46         properties.add(new OFQueuePropertyMinRate().setRate((short) 1));
47         queue.setProperties(properties);
48         queue.setLength((short) (OFPacketQueue.MINIMUM_LENGTH + OFQueuePropertyMinRate.MINIMUM_LENGTH));
49
50         List<OFPacketQueue> queues = new ArrayList<OFPacketQueue>();
51         queues.add(queue);
52         reply.setQueues(queues);
53         reply.setLengthU(OFQueueConfigReply.MINIMUM_LENGTH + queue.getLength());
54
55         ByteBuffer bb = ByteBuffer.allocate(1024);
56         bb.clear();
57         reply.writeTo(bb);
58         bb.flip();
59
60         OFQueueConfigReply reply2 = new OFQueueConfigReply();
61         reply2.setQueuePropertyFactory(new BasicFactory());
62         reply2.readFrom(bb);
63         TestCase.assertEquals(reply, reply2);
64         TestCase.assertEquals(1, reply2.getQueues().size());
65         TestCase.assertEquals(1, reply2.getQueues().get(0).getProperties().size());
66         TestCase.assertTrue(reply2.getQueues().get(0).getProperties().get(0) instanceof OFQueuePropertyMinRate);
67         TestCase.assertEquals(OFQueuePropertyType.MIN_RATE, reply2.getQueues().get(0).getProperties().get(0).getType());
68
69         reply.getQueues().add(queue.clone());
70         reply.setLengthU(reply.getLengthU() + queue.getLength());
71         bb.clear();
72         reply.writeTo(bb);
73         bb.flip();
74         reply2 = new OFQueueConfigReply();
75         reply2.setQueuePropertyFactory(new BasicFactory());
76         reply2.readFrom(bb);
77         TestCase.assertEquals(reply, reply2);
78         TestCase.assertEquals(2, reply2.getQueues().size());
79
80         queue.getProperties().add(new OFQueuePropertyMinRate().setRate((short) 2));
81         queue.setLength((short) (queue.getLength() + OFQueuePropertyMinRate.MINIMUM_LENGTH));
82         reply.setLengthU(reply.getLengthU() + OFQueuePropertyMinRate.MINIMUM_LENGTH);
83         bb.clear();
84         reply.writeTo(bb);
85         bb.flip();
86         reply2 = new OFQueueConfigReply();
87         reply2.setQueuePropertyFactory(new BasicFactory());
88         reply2.readFrom(bb);
89         TestCase.assertEquals(reply, reply2);
90         TestCase.assertEquals(2, reply2.getQueues().size());
91         TestCase.assertEquals(2, reply2.getQueues().get(0).getProperties().size());
92     }
93 }