8465598a77f1aff08bbe9b2bbe42bd45000b6ddf
[controller.git] / third-party / openflowj / src / test / java / org / openflow / protocol / OFMatchTest.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 junit.framework.TestCase;
13
14 public class OFMatchTest extends TestCase {
15     public void testFromString() {
16         OFMatch correct = new OFMatch();
17         OFMatch tester = new OFMatch();
18
19         // Various combinations of "all"/"any"
20         tester.fromString("OFMatch[]");
21         // correct is already wildcarded
22         TestCase.assertEquals(correct, tester);
23         tester.fromString("all");
24         TestCase.assertEquals(correct, tester);
25         tester.fromString("ANY");
26         TestCase.assertEquals(correct, tester);
27         tester.fromString("");
28         TestCase.assertEquals(correct, tester);
29         tester.fromString("[]");
30         TestCase.assertEquals(correct, tester);
31
32         // ip_src
33         correct.setWildcards(~OFMatch.OFPFW_NW_SRC_MASK);
34         correct.setNetworkSource(0x01010203);
35         tester.fromString("nw_src=1.1.2.3");
36         TestCase.assertEquals(correct.getNetworkSourceMaskLen(), tester
37                 .getNetworkSourceMaskLen());
38         TestCase.assertEquals(correct, tester);
39         tester.fromString("IP_sRc=1.1.2.3");
40         TestCase.assertEquals(correct.getNetworkSourceMaskLen(), tester
41                 .getNetworkSourceMaskLen());
42         TestCase.assertEquals(correct, tester);
43     }
44
45     public void testToString() {
46         OFMatch match = new OFMatch();
47         match.fromString("nw_dst=3.4.5.6/8");
48         TestCase.assertEquals(8, match.getNetworkDestinationMaskLen());
49         String correct = "OFMatch[nw_dst=3.0.0.0/8]";
50         String tester = match.toString();
51
52         TestCase.assertEquals(correct, tester);
53         tester = "OFMatch[dl_type=35020]";
54         correct = "OFMatch[dl_type=0x88cc]";
55         match = new OFMatch();
56         match.fromString(tester);
57         TestCase.assertEquals(correct, match.toString());
58         OFMatch match2 = new OFMatch();
59         match2.fromString(correct);
60         TestCase.assertEquals(match, match2);
61     }
62
63     public void testClone() {
64         OFMatch match1 = new OFMatch();
65         OFMatch match2 = match1.clone();
66         TestCase.assertEquals(match1, match2);
67         match2.setNetworkProtocol((byte) 4);
68         match2.setWildcards(match2.getWildcards() & ~OFMatch.OFPFW_NW_PROTO);
69         TestCase.assertNotSame(match1, match2);
70     }
71
72     public void testIpToString() {
73         String test = OFMatch.ipToString(-1);
74         TestCase.assertEquals("255.255.255.255", test);
75     }
76
77     public void testReverse() {
78         OFMatch match1 = new OFMatch();
79         OFMatch match2 = match1.reverse((short)0, true);
80         TestCase.assertEquals(match1, match2);
81
82         match1.fromString("dl_dst=00:11:22:33:44:55");
83         match2 = match1.reverse((short)0, true);
84         OFMatch match3 = new OFMatch();
85         match3.fromString("dl_src=00:11:22:33:44:55");
86         TestCase.assertEquals(match2, match3);
87
88         match1.fromString("nw_dst=192.168.0.0/24");
89         match2 = match1.reverse((short)0, true);
90         match3.fromString("nw_src=192.168.0.0/24");
91         TestCase.assertEquals(match2, match3);
92
93         match1.fromString("in_port=1");
94         match2 = match1.reverse((short)2, false);
95         match3.fromString("in_port=2");
96         TestCase.assertEquals(match2, match3);
97     }
98
99     public void testSubsumes() {
100         OFMatch match1 = new OFMatch();
101         OFMatch match2 = new OFMatch();
102         match2.fromString("dl_dst=00:11:22:33:44:55");
103         TestCase.assertTrue(match1.subsumes(match2));
104         TestCase.assertFalse(match2.subsumes(match1));
105
106         match1.fromString("nw_dst=192.168.0.0/16");
107         match2.fromString("nw_dst=192.168.0.0/24");
108         TestCase.assertTrue(match1.subsumes(match2));
109         TestCase.assertFalse(match2.subsumes(match1));
110     }
111 }