blob: 353b8abb607b74db006de91e4bd5aaf2f874d7fe [file] [log] [blame]
Jonathan Hart23701d12014-04-03 10:45:48 -07001package net.onrc.onos.core.util;
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +09002
3import static org.junit.Assert.assertEquals;
4import static org.junit.Assert.assertFalse;
5import static org.junit.Assert.assertTrue;
Ray Milkey269ffb92014-04-03 14:43:30 -07006
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +09007import net.floodlightcontroller.util.MACAddress;
8
9import org.junit.Before;
10import org.junit.Test;
11
12public class FlowEntryMatchTest {
13
Ray Milkey269ffb92014-04-03 14:43:30 -070014 FlowEntryMatch match;
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +090015
Ray Milkey269ffb92014-04-03 14:43:30 -070016 Port inport = new Port((short) 1);
17 byte[] byte1 = {1, 2, 3, 4, 5, 6};
18 byte[] byte2 = {6, 5, 4, 3, 2, 1};
19 MACAddress mac1 = new MACAddress(byte1);
20 MACAddress mac2 = new MACAddress(byte2);
21 Short ether = Short.valueOf((short) 2);
22 Short vlanid = Short.valueOf((short) 3);
23 Byte vlanprio = Byte.valueOf((byte) 4);
24 IPv4Net ip1 = new IPv4Net("127.0.0.1/32");
25 IPv4Net ip2 = new IPv4Net("127.0.0.2/32");
26 Byte ipproto = Byte.valueOf((byte) 5);
27 Byte ipToS = Byte.valueOf((byte) 6);
28 Short tport1 = Short.valueOf((short) 7);
29 Short tport2 = Short.valueOf((short) 8);
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +090030
Ray Milkey269ffb92014-04-03 14:43:30 -070031 @Before
32 public void setUp() throws Exception {
33 match = new FlowEntryMatch();
34 match.enableInPort(inport);
35 match.enableSrcMac(mac1);
36 match.enableDstMac(mac2);
37 match.enableEthernetFrameType(ether);
38 match.enableVlanId(vlanid);
39 match.enableVlanPriority(vlanprio);
40 match.enableSrcIPv4Net(ip1);
41 match.enableDstIPv4Net(ip2);
42 match.enableIpProto(ipproto);
43 match.enableIpToS(ipToS);
44 match.enableSrcTcpUdpPort(tport1);
45 match.enableDstTcpUdpPort(tport2);
46 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +090047
Ray Milkey269ffb92014-04-03 14:43:30 -070048 @Test
49 public void testFlowEntryMatch() {
50 FlowEntryMatch def = new FlowEntryMatch();
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +090051
Ray Milkey269ffb92014-04-03 14:43:30 -070052 assertEquals("default null", null, def.inPort());
53 assertEquals("default null", null, def.srcMac());
54 assertEquals("default null", null, def.dstMac());
55 assertEquals("default null", null, def.ethernetFrameType());
56 assertEquals("default null", null, def.vlanId());
57 assertEquals("default null", null, def.vlanPriority());
58 assertEquals("default null", null, def.srcIPv4Net());
59 assertEquals("default null", null, def.dstIPv4Net());
60 assertEquals("default null", null, def.ipProto());
61 assertEquals("default null", null, def.ipToS());
62 assertEquals("default null", null, def.srcTcpUdpPort());
63 assertEquals("default null", null, def.dstTcpUdpPort());
64 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +090065
Ray Milkey269ffb92014-04-03 14:43:30 -070066 @Test
67 public void testFlowEntryMatchFlowEntryMatch() {
68 FlowEntryMatch def_base = new FlowEntryMatch();
69 FlowEntryMatch def = new FlowEntryMatch(def_base);
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +090070
Ray Milkey269ffb92014-04-03 14:43:30 -070071 assertEquals("default null", null, def.inPort());
72 assertEquals("default null", null, def.srcMac());
73 assertEquals("default null", null, def.dstMac());
74 assertEquals("default null", null, def.ethernetFrameType());
75 assertEquals("default null", null, def.vlanId());
76 assertEquals("default null", null, def.vlanPriority());
77 assertEquals("default null", null, def.srcIPv4Net());
78 assertEquals("default null", null, def.dstIPv4Net());
79 assertEquals("default null", null, def.ipProto());
80 assertEquals("default null", null, def.ipToS());
81 assertEquals("default null", null, def.srcTcpUdpPort());
82 assertEquals("default null", null, def.dstTcpUdpPort());
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +090083
Ray Milkey269ffb92014-04-03 14:43:30 -070084 FlowEntryMatch copy = new FlowEntryMatch(match);
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +090085
Ray Milkey269ffb92014-04-03 14:43:30 -070086 assertEquals("inport", inport, copy.inPort());
87 assertEquals("mac1", mac1, copy.srcMac());
88 assertEquals("mac2", mac2, copy.dstMac());
89 assertEquals("ether", ether, copy.ethernetFrameType());
90 assertEquals("vlan id", vlanid, copy.vlanId());
91 assertEquals("vlan prio", vlanprio, copy.vlanPriority());
92 assertEquals("ip1", ip1, copy.srcIPv4Net());
93 assertEquals("ip2", ip2, copy.dstIPv4Net());
94 assertEquals("ip proto", ipproto, copy.ipProto());
95 assertEquals("tos", ipToS, copy.ipToS());
96 assertEquals("src port", tport1, copy.srcTcpUdpPort());
97 assertEquals("dst port", tport2, copy.dstTcpUdpPort());
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +090098
Ray Milkey269ffb92014-04-03 14:43:30 -070099 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900100
Ray Milkey269ffb92014-04-03 14:43:30 -0700101 @Test
102 public void testInPort() {
103 assertEquals("inport", inport, match.inPort());
104 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900105
Ray Milkey269ffb92014-04-03 14:43:30 -0700106 @Test
107 public void testDisableInPort() {
108 match.disableInPort();
109 assertEquals("inport", null, match.inPort());
110 assertFalse(match.matchInPort());
111 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900112
Ray Milkey269ffb92014-04-03 14:43:30 -0700113 @Test
114 public void testMatchInPort() {
115 assertTrue(match.matchInPort());
116 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900117
Ray Milkey269ffb92014-04-03 14:43:30 -0700118 @Test
119 public void testSrcMac() {
120 assertEquals("mac1", mac1, match.srcMac());
121 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900122
Ray Milkey269ffb92014-04-03 14:43:30 -0700123 @Test
124 public void testDisableSrcMac() {
125 match.disableSrcMac();
126 assertEquals("srcMac", null, match.srcMac());
127 assertFalse(match.matchSrcMac());
128 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900129
Ray Milkey269ffb92014-04-03 14:43:30 -0700130 @Test
131 public void testMatchSrcMac() {
132 assertTrue(match.matchSrcMac());
133 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900134
Ray Milkey269ffb92014-04-03 14:43:30 -0700135 @Test
136 public void testDstMac() {
137 assertEquals("mac2", mac2, match.dstMac());
138 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900139
Ray Milkey269ffb92014-04-03 14:43:30 -0700140 @Test
141 public void testDisableDstMac() {
142 match.disableDstMac();
143 assertEquals("dstMac", null, match.dstMac());
144 assertFalse(match.matchDstMac());
145 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900146
Ray Milkey269ffb92014-04-03 14:43:30 -0700147 @Test
148 public void testMatchDstMac() {
149 assertTrue(match.matchDstMac());
150 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900151
Ray Milkey269ffb92014-04-03 14:43:30 -0700152 @Test
153 public void testEthernetFrameType() {
154 assertEquals("ether", ether, match.ethernetFrameType());
155 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900156
Ray Milkey269ffb92014-04-03 14:43:30 -0700157 @Test
158 public void testDisableEthernetFrameType() {
159 match.disableEthernetFrameType();
160 assertEquals("ethernetFrameType", null, match.ethernetFrameType());
161 assertFalse(match.matchEthernetFrameType());
162 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900163
Ray Milkey269ffb92014-04-03 14:43:30 -0700164 @Test
165 public void testMatchEthernetFrameType() {
166 assertTrue(match.matchEthernetFrameType());
167 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900168
Ray Milkey269ffb92014-04-03 14:43:30 -0700169 @Test
170 public void testVlanId() {
171 assertEquals("vlan id", vlanid, match.vlanId());
172 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900173
Ray Milkey269ffb92014-04-03 14:43:30 -0700174 @Test
175 public void testDisableVlanId() {
176 match.disableVlanId();
177 assertEquals("vlanId", null, match.vlanId());
178 assertFalse(match.matchVlanId());
179 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900180
Ray Milkey269ffb92014-04-03 14:43:30 -0700181 @Test
182 public void testMatchVlanId() {
183 assertTrue(match.matchVlanId());
184 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900185
Ray Milkey269ffb92014-04-03 14:43:30 -0700186 @Test
187 public void testVlanPriority() {
188 assertEquals("vlan prio", vlanprio, match.vlanPriority());
189 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900190
Ray Milkey269ffb92014-04-03 14:43:30 -0700191 @Test
192 public void testDisableVlanPriority() {
193 match.disableVlanPriority();
194 assertEquals("vlanPriority", null, match.vlanPriority());
195 assertFalse(match.matchVlanPriority());
196 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900197
Ray Milkey269ffb92014-04-03 14:43:30 -0700198 @Test
199 public void testMatchVlanPriority() {
200 assertTrue(match.matchVlanPriority());
201 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900202
Ray Milkey269ffb92014-04-03 14:43:30 -0700203 @Test
204 public void testSrcIPv4Net() {
205 assertEquals("ip1", ip1, match.srcIPv4Net());
206 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900207
Ray Milkey269ffb92014-04-03 14:43:30 -0700208 @Test
209 public void testDisableSrcIPv4Net() {
210 match.disableSrcIPv4Net();
211 assertEquals("srcIPv4Net", null, match.srcIPv4Net());
212 assertFalse(match.matchSrcIPv4Net());
213 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900214
Ray Milkey269ffb92014-04-03 14:43:30 -0700215 @Test
216 public void testMatchSrcIPv4Net() {
217 assertTrue(match.matchSrcIPv4Net());
218 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900219
Ray Milkey269ffb92014-04-03 14:43:30 -0700220 @Test
221 public void testDstIPv4Net() {
222 assertEquals("ip2", ip2, match.dstIPv4Net());
223 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900224
Ray Milkey269ffb92014-04-03 14:43:30 -0700225 @Test
226 public void testDisableDstIPv4Net() {
227 match.disableDstIPv4Net();
228 assertEquals("dstIPv4Net", null, match.dstIPv4Net());
229 assertFalse(match.matchDstIPv4Net());
230 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900231
Ray Milkey269ffb92014-04-03 14:43:30 -0700232 @Test
233 public void testMatchDstIPv4Net() {
234 assertTrue(match.matchDstIPv4Net());
235 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900236
Ray Milkey269ffb92014-04-03 14:43:30 -0700237 @Test
238 public void testIpProto() {
239 assertEquals("ip proto", ipproto, match.ipProto());
240 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900241
Ray Milkey269ffb92014-04-03 14:43:30 -0700242 @Test
243 public void testDisableIpProto() {
244 match.disableIpProto();
245 assertEquals("ipProto", null, match.ipProto());
246 assertFalse(match.matchIpProto());
247 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900248
Ray Milkey269ffb92014-04-03 14:43:30 -0700249 @Test
250 public void testMatchIpProto() {
251 assertTrue(match.matchIpProto());
252 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900253
Ray Milkey269ffb92014-04-03 14:43:30 -0700254 @Test
255 public void testIpToS() {
256 assertEquals("tos", ipToS, match.ipToS());
257 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900258
Ray Milkey269ffb92014-04-03 14:43:30 -0700259 @Test
260 public void testDisableIpToS() {
261 match.disableIpToS();
262 assertEquals("ipToS", null, match.ipToS());
263 assertFalse(match.matchIpToS());
264 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900265
Ray Milkey269ffb92014-04-03 14:43:30 -0700266 @Test
267 public void testMatchIpToS() {
268 assertTrue(match.matchIpToS());
269 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900270
Ray Milkey269ffb92014-04-03 14:43:30 -0700271 @Test
272 public void testSrcTcpUdpPort() {
273 assertEquals("src port", tport1, match.srcTcpUdpPort());
274 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900275
Ray Milkey269ffb92014-04-03 14:43:30 -0700276 @Test
277 public void testDisableSrcTcpUdpPort() {
278 match.disableSrcTcpUdpPort();
279 assertEquals("srcTcpUdpPort", null, match.srcTcpUdpPort());
280 assertFalse(match.matchSrcTcpUdpPort());
281 }
282
283 @Test
284 public void testMatchSrcTcpUdpPort() {
285 assertTrue(match.matchSrcTcpUdpPort());
286 }
287
288 @Test
289 public void testDstTcpUdpPort() {
290 assertEquals("dst port", tport2, match.dstTcpUdpPort());
291 }
292
293 @Test
294 public void testDisableDstTcpUdpPort() {
295 match.disableDstTcpUdpPort();
296 assertEquals("dstTcpUdpPort", null, match.dstTcpUdpPort());
297 assertFalse(match.matchDstTcpUdpPort());
298 }
299
300 @Test
301 public void testMatchDstTcpUdpPort() {
302 assertTrue(match.matchDstTcpUdpPort());
303 }
304
305 @Test
306 public void testToString() {
307 FlowEntryMatch def = new FlowEntryMatch();
308 assertEquals("match default", def.toString(), "[]");
309
310 assertEquals("match set", match.toString(), "[inPort=1 srcMac=01:02:03:04:05:06 dstMac=06:05:04:03:02:01 ethernetFrameType=2 vlanId=3 vlanPriority=4 srcIPv4Net=127.0.0.1/32 dstIPv4Net=127.0.0.2/32 ipProto=5 ipToS=6 srcTcpUdpPort=7 dstTcpUdpPort=8]");
311 }
HIGUCHI Yutad8dc9c02013-08-04 06:16:30 +0900312
313}