blob: a6781063c0cd3cad61b9002fd4cea00e384a2122 [file] [log] [blame]
Xin Jin313708b2015-07-09 13:43:04 -07001/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2015-present Open Networking Laboratory
Xin Jin313708b2015-07-09 13:43:04 -07003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.net.flowobjective.impl;
17
18import org.junit.After;
19import org.junit.Before;
20import org.junit.Ignore;
21import org.slf4j.Logger;
22import org.slf4j.LoggerFactory;
23
24/**
25 * Test FlowObjectiveCompositionTree.
26 */
27@Ignore
28public class FlowObjectiveCompositionTreeTest {
29
30 private final Logger log = LoggerFactory.getLogger(getClass());
31
32 @Before
33 public void setUp() {}
34
35 @After
36 public void tearDown() {}
37
38 /*@Test
39 public void testParallelComposition() {
40 FlowObjectiveCompositionTree policyTree = FlowObjectiveCompositionUtil.parsePolicyString("31+32");
41
42 {
43 TrafficSelector selector = DefaultTrafficSelector.builder()
44 .matchIPSrc(IpPrefix.valueOf("1.0.0.0/24"))
45 .build();
46
47 TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
48
49 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
50 .fromApp(new DefaultApplicationId(31, "a"))
51 .makePermanent()
52 .withFlag(ForwardingObjective.Flag.VERSATILE)
53 .withPriority(1)
54 .withSelector(selector)
55 .withTreatment(treatment)
56 .add();
57
58 helper(policyTree, forwardingObjective);
59 }
60
61 {
62 TrafficSelector selector = DefaultTrafficSelector.builder().build();
63
64 TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
65
66 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
67 .fromApp(new DefaultApplicationId(31, "a"))
68 .makePermanent()
69 .withFlag(ForwardingObjective.Flag.VERSATILE)
70 .withPriority(0)
71 .withSelector(selector)
72 .withTreatment(treatment)
73 .add();
74
75 helper(policyTree, forwardingObjective);
76 }
77
78
79 {
80 TrafficSelector selector = DefaultTrafficSelector.builder()
81 .matchIPDst(IpPrefix.valueOf("2.0.0.1/32"))
82 .build();
83
84 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
85 .setOutput(PortNumber.portNumber(1))
86 .build();
87
88 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
89 .fromApp(new DefaultApplicationId(32, "b"))
90 .makePermanent()
91 .withFlag(ForwardingObjective.Flag.VERSATILE)
92 .withPriority(1)
93 .withSelector(selector)
94 .withTreatment(treatment)
95 .add();
96
97 helper(policyTree, forwardingObjective);
98 }
99
100 {
101 TrafficSelector selector = DefaultTrafficSelector.builder()
102 .matchIPDst(IpPrefix.valueOf("2.0.0.2/32"))
103 .build();
104
105 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
106 .setOutput(PortNumber.portNumber(2))
107 .build();
108
109 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
110 .fromApp(new DefaultApplicationId(32, "b"))
111 .makePermanent()
112 .withFlag(ForwardingObjective.Flag.VERSATILE)
113 .withPriority(1)
114 .withSelector(selector)
115 .withTreatment(treatment)
116 .add();
117 helper(policyTree, forwardingObjective);
118 }
119
120 {
121 TrafficSelector selector = DefaultTrafficSelector.builder().build();
122
123 TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
124
125 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
126 .fromApp(new DefaultApplicationId(32, "b"))
127 .makePermanent()
128 .withFlag(ForwardingObjective.Flag.VERSATILE)
129 .withPriority(0)
130 .withSelector(selector)
131 .withTreatment(treatment)
132 .add();
133
134 helper(policyTree, forwardingObjective);
135 }
136
137 System.out.println("---------- Parallel ----------");
138 for (ForwardingObjective fo : policyTree.forwardTable.getForwardingObjectives()) {
139 System.out.println(forwardingObjectiveToString(fo));
140 }
141
142 {
143 TrafficSelector selector = DefaultTrafficSelector.builder()
144 .matchIPDst(IpPrefix.valueOf("2.0.0.3/32"))
145 .build();
146
147 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
148 .setOutput(PortNumber.portNumber(3))
149 .build();
150
151 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
152 .fromApp(new DefaultApplicationId(32, "b"))
153 .makePermanent()
154 .withFlag(ForwardingObjective.Flag.VERSATILE)
155 .withPriority(1)
156 .withSelector(selector)
157 .withTreatment(treatment)
158 .add();
159 helper(policyTree, forwardingObjective);
160 }
161
162 System.out.println("---------- Parallel ----------");
163 for (ForwardingObjective fo : policyTree.forwardTable.getForwardingObjectives()) {
164 System.out.println(forwardingObjectiveToString(fo));
165 }
166
167 {
168 TrafficSelector selector = DefaultTrafficSelector.builder()
169 .matchIPDst(IpPrefix.valueOf("2.0.0.3/32"))
170 .build();
171
172 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
173 .setOutput(PortNumber.portNumber(3))
174 .build();
175
176 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
177 .fromApp(new DefaultApplicationId(32, "b"))
178 .makePermanent()
179 .withFlag(ForwardingObjective.Flag.VERSATILE)
180 .withPriority(1)
181 .withSelector(selector)
182 .withTreatment(treatment)
183 .remove();
184 helper(policyTree, forwardingObjective);
185 }
186
187 {
188 TrafficSelector selector = DefaultTrafficSelector.builder()
189 .matchIPSrc(IpPrefix.valueOf("1.0.0.0/24"))
190 .build();
191
192 TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
193
194 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
195 .fromApp(new DefaultApplicationId(31, "a"))
196 .makePermanent()
197 .withFlag(ForwardingObjective.Flag.VERSATILE)
198 .withPriority(1)
199 .withSelector(selector)
200 .withTreatment(treatment)
201 .remove();
202
203 helper(policyTree, forwardingObjective);
204 }
205
206 {
207 TrafficSelector selector = DefaultTrafficSelector.builder().build();
208
209 TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
210
211 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
212 .fromApp(new DefaultApplicationId(31, "a"))
213 .makePermanent()
214 .withFlag(ForwardingObjective.Flag.VERSATILE)
215 .withPriority(0)
216 .withSelector(selector)
217 .withTreatment(treatment)
218 .remove();
219
220 helper(policyTree, forwardingObjective);
221 }
222
223 System.out.println("---------- Parallel ----------");
224 for (ForwardingObjective fo : policyTree.forwardTable.getForwardingObjectives()) {
225 System.out.println(forwardingObjectiveToString(fo));
226 }
227 }
228
229 @Test
230 public void testSequentialComposition() {
231 FlowObjectiveCompositionTree policyTree = FlowObjectiveCompositionUtil.parsePolicyString("31>32");
232
233 {
234 TrafficSelector selector = DefaultTrafficSelector.builder()
235 .matchIPSrc(IpPrefix.valueOf("0.0.0.0/2"))
236 .matchIPDst(IpPrefix.valueOf("3.0.0.0/32"))
237 .build();
238
239 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
240 .setIpDst(IpAddress.valueOf("2.0.0.1"))
241 .build();
242
243 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
244 .fromApp(new DefaultApplicationId(31, "a"))
245 .makePermanent()
246 .withFlag(ForwardingObjective.Flag.VERSATILE)
247 .withPriority(3)
248 .withSelector(selector)
249 .withTreatment(treatment)
250 .add();
251
252 helper(policyTree, forwardingObjective);
253 }
254
255 {
256 TrafficSelector selector = DefaultTrafficSelector.builder()
257 .matchIPDst(IpPrefix.valueOf("3.0.0.0/32"))
258 .build();
259
260 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
261 .setIpDst(IpAddress.valueOf("2.0.0.2"))
262 .build();
263
264 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
265 .fromApp(new DefaultApplicationId(31, "a"))
266 .makePermanent()
267 .withFlag(ForwardingObjective.Flag.VERSATILE)
268 .withPriority(1)
269 .withSelector(selector)
270 .withTreatment(treatment)
271 .add();
272
273 helper(policyTree, forwardingObjective);
274 }
275
276 {
277 TrafficSelector selector = DefaultTrafficSelector.builder().build();
278
279 TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
280
281 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
282 .fromApp(new DefaultApplicationId(31, "a"))
283 .makePermanent()
284 .withFlag(ForwardingObjective.Flag.VERSATILE)
285 .withPriority(0)
286 .withSelector(selector)
287 .withTreatment(treatment)
288 .add();
289
290 helper(policyTree, forwardingObjective);
291 }
292
293 {
294 TrafficSelector selector = DefaultTrafficSelector.builder()
295 .matchIPDst(IpPrefix.valueOf("2.0.0.1/32"))
296 .build();
297
298 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
299 .setOutput(PortNumber.portNumber(1))
300 .build();
301
302 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
303 .fromApp(new DefaultApplicationId(32, "b"))
304 .makePermanent()
305 .withFlag(ForwardingObjective.Flag.VERSATILE)
306 .withPriority(1)
307 .withSelector(selector)
308 .withTreatment(treatment)
309 .add();
310
311 helper(policyTree, forwardingObjective);
312 }
313
314 {
315 TrafficSelector selector = DefaultTrafficSelector.builder()
316 .matchIPDst(IpPrefix.valueOf("2.0.0.2/32"))
317 .build();
318
319 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
320 .setOutput(PortNumber.portNumber(2))
321 .build();
322
323 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
324 .fromApp(new DefaultApplicationId(32, "b"))
325 .makePermanent()
326 .withFlag(ForwardingObjective.Flag.VERSATILE)
327 .withPriority(1)
328 .withSelector(selector)
329 .withTreatment(treatment)
330 .add();
331 helper(policyTree, forwardingObjective);
332 }
333
334 {
335 TrafficSelector selector = DefaultTrafficSelector.builder().build();
336
337 TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
338
339 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
340 .fromApp(new DefaultApplicationId(32, "b"))
341 .makePermanent()
342 .withFlag(ForwardingObjective.Flag.VERSATILE)
343 .withPriority(0)
344 .withSelector(selector)
345 .withTreatment(treatment)
346 .add();
347
348 helper(policyTree, forwardingObjective);
349 }
350
351 System.out.println("---------- Sequential ----------");
352 for (ForwardingObjective fo : policyTree.forwardTable.getForwardingObjectives()) {
353 System.out.println(forwardingObjectiveToString(fo));
354 }
355
356 {
357 TrafficSelector selector = DefaultTrafficSelector.builder()
358 .matchIPDst(IpPrefix.valueOf("2.0.0.3/32"))
359 .build();
360
361 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
362 .setOutput(PortNumber.portNumber(3))
363 .build();
364
365 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
366 .fromApp(new DefaultApplicationId(32, "b"))
367 .makePermanent()
368 .withFlag(ForwardingObjective.Flag.VERSATILE)
369 .withPriority(1)
370 .withSelector(selector)
371 .withTreatment(treatment)
372 .add();
373
374 helper(policyTree, forwardingObjective);
375 }
376
377 {
378 TrafficSelector selector = DefaultTrafficSelector.builder()
379 .matchIPSrc(IpPrefix.valueOf("0.0.0.0/1"))
380 .matchIPDst(IpPrefix.valueOf("3.0.0.0/32"))
381 .build();
382
383 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
384 .setIpDst(IpAddress.valueOf("2.0.0.3"))
385 .build();
386
387 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
388 .fromApp(new DefaultApplicationId(31, "a"))
389 .makePermanent()
390 .withFlag(ForwardingObjective.Flag.VERSATILE)
391 .withPriority(3)
392 .withSelector(selector)
393 .withTreatment(treatment)
394 .add();
395
396 helper(policyTree, forwardingObjective);
397 }
398
399 System.out.println("---------- Sequential ----------");
400 for (ForwardingObjective fo : policyTree.forwardTable.getForwardingObjectives()) {
401 System.out.println(forwardingObjectiveToString(fo));
402 }
403
404 {
405 TrafficSelector selector = DefaultTrafficSelector.builder()
406 .matchIPDst(IpPrefix.valueOf("2.0.0.3/32"))
407 .build();
408
409 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
410 .setOutput(PortNumber.portNumber(3))
411 .build();
412
413 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
414 .fromApp(new DefaultApplicationId(32, "b"))
415 .makePermanent()
416 .withFlag(ForwardingObjective.Flag.VERSATILE)
417 .withPriority(1)
418 .withSelector(selector)
419 .withTreatment(treatment)
420 .remove();
421
422 helper(policyTree, forwardingObjective);
423 }
424
425 {
426 TrafficSelector selector = DefaultTrafficSelector.builder()
427 .matchIPSrc(IpPrefix.valueOf("0.0.0.0/1"))
428 .matchIPDst(IpPrefix.valueOf("3.0.0.0/32"))
429 .build();
430
431 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
432 .setIpDst(IpAddress.valueOf("2.0.0.3"))
433 .build();
434
435 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
436 .fromApp(new DefaultApplicationId(31, "a"))
437 .makePermanent()
438 .withFlag(ForwardingObjective.Flag.VERSATILE)
439 .withPriority(3)
440 .withSelector(selector)
441 .withTreatment(treatment)
442 .remove();
443
444 helper(policyTree, forwardingObjective);
445 }
446
447 System.out.println("---------- Sequential ----------");
448 for (ForwardingObjective fo : policyTree.forwardTable.getForwardingObjectives()) {
449 System.out.println(forwardingObjectiveToString(fo));
450 }
451 }
452
453 @Test
454 public void testOverrideComposition() {
455 FlowObjectiveCompositionTree policyTree = FlowObjectiveCompositionUtil.parsePolicyString("31/32");
456
457 {
458 TrafficSelector selector = DefaultTrafficSelector.builder()
459 .matchIPSrc(IpPrefix.valueOf("1.0.0.0/32"))
460 .matchIPDst(IpPrefix.valueOf("2.0.0.1/32"))
461 .build();
462
463 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
464 .setOutput(PortNumber.portNumber(3))
465 .build();
466
467 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
468 .fromApp(new DefaultApplicationId(31, "a"))
469 .makePermanent()
470 .withFlag(ForwardingObjective.Flag.VERSATILE)
471 .withPriority(1)
472 .withSelector(selector)
473 .withTreatment(treatment)
474 .add();
475
476 helper(policyTree, forwardingObjective);
477 }
478
479 {
480 TrafficSelector selector = DefaultTrafficSelector.builder()
481 .matchIPDst(IpPrefix.valueOf("2.0.0.1/32"))
482 .build();
483
484 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
485 .setOutput(PortNumber.portNumber(1))
486 .build();
487
488 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
489 .fromApp(new DefaultApplicationId(32, "b"))
490 .makePermanent()
491 .withFlag(ForwardingObjective.Flag.VERSATILE)
492 .withPriority(1)
493 .withSelector(selector)
494 .withTreatment(treatment)
495 .add();
496
497 helper(policyTree, forwardingObjective);
498 }
499
500 {
501 TrafficSelector selector = DefaultTrafficSelector.builder()
502 .matchIPDst(IpPrefix.valueOf("2.0.0.2/32"))
503 .build();
504
505 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
506 .setOutput(PortNumber.portNumber(2))
507 .build();
508
509 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
510 .fromApp(new DefaultApplicationId(32, "b"))
511 .makePermanent()
512 .withFlag(ForwardingObjective.Flag.VERSATILE)
513 .withPriority(1)
514 .withSelector(selector)
515 .withTreatment(treatment)
516 .add();
517 helper(policyTree, forwardingObjective);
518 }
519
520 {
521 TrafficSelector selector = DefaultTrafficSelector.builder().build();
522
523 TrafficTreatment treatment = DefaultTrafficTreatment.builder().build();
524
525 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
526 .fromApp(new DefaultApplicationId(32, "b"))
527 .makePermanent()
528 .withFlag(ForwardingObjective.Flag.VERSATILE)
529 .withPriority(0)
530 .withSelector(selector)
531 .withTreatment(treatment)
532 .add();
533
534 helper(policyTree, forwardingObjective);
535 }
536
537 System.out.println("---------- Override ----------");
538 for (ForwardingObjective fo : policyTree.forwardTable.getForwardingObjectives()) {
539 System.out.println(forwardingObjectiveToString(fo));
540 }
541
542 {
543 TrafficSelector selector = DefaultTrafficSelector.builder()
544 .matchIPDst(IpPrefix.valueOf("2.0.0.3/32"))
545 .build();
546
547 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
548 .setOutput(PortNumber.portNumber(3))
549 .build();
550
551 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
552 .fromApp(new DefaultApplicationId(32, "b"))
553 .makePermanent()
554 .withFlag(ForwardingObjective.Flag.VERSATILE)
555 .withPriority(1)
556 .withSelector(selector)
557 .withTreatment(treatment)
558 .add();
559 helper(policyTree, forwardingObjective);
560 }
561
562 System.out.println("---------- Override ----------");
563 for (ForwardingObjective fo : policyTree.forwardTable.getForwardingObjectives()) {
564 System.out.println(forwardingObjectiveToString(fo));
565 }
566
567 {
568 TrafficSelector selector = DefaultTrafficSelector.builder()
569 .matchIPDst(IpPrefix.valueOf("2.0.0.3/32"))
570 .build();
571
572 TrafficTreatment treatment = DefaultTrafficTreatment.builder()
573 .setOutput(PortNumber.portNumber(3))
574 .build();
575
576 ForwardingObjective forwardingObjective = DefaultForwardingObjective.builder()
577 .fromApp(new DefaultApplicationId(32, "b"))
578 .makePermanent()
579 .withFlag(ForwardingObjective.Flag.VERSATILE)
580 .withPriority(1)
581 .withSelector(selector)
582 .withTreatment(treatment)
583 .remove();
584 helper(policyTree, forwardingObjective);
585 }
586
587 System.out.println("---------- Override ----------");
588 for (ForwardingObjective fo : policyTree.forwardTable.getForwardingObjectives()) {
589 System.out.println(forwardingObjectiveToString(fo));
590 }
591 }
592
593 private void helper(FlowObjectiveCompositionTree policyTree, ForwardingObjective forwardingObjective) {
594 log.info("before composition");
595 log.info("\t{}", forwardingObjectiveToString(forwardingObjective));
596 List<ForwardingObjective> forwardingObjectives
597 = policyTree.updateForward(forwardingObjective);
598 log.info("after composition");
599 for (ForwardingObjective fo : forwardingObjectives) {
600 log.info("\t{}", forwardingObjectiveToString(fo));
601 }
602 }*/
603}