2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
\r
4 * This program and the accompanying materials are made available under the
\r
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
\r
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
\r
9 package org.opendaylight.groupbasedpolicy.renderer.iovisor.sf;
\r
11 import static org.junit.Assert.assertEquals;
\r
12 import static org.junit.Assert.assertNotNull;
\r
13 import static org.junit.Assert.assertTrue;
\r
15 import java.util.HashMap;
\r
16 import java.util.List;
\r
17 import java.util.Map;
\r
19 import org.junit.Before;
\r
20 import org.junit.Rule;
\r
21 import org.junit.Test;
\r
22 import org.junit.rules.ExpectedException;
\r
23 import org.opendaylight.groupbasedpolicy.api.sf.L4ClassifierDefinition;
\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ParameterName;
\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValue;
\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValueBuilder;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.parameter.value.RangeValueBuilder;
\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.parameters.type.ParameterType;
\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.parameters.type.parameter.type.Int;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.capabilities.supported.classifier.definition.SupportedParameterValues;
\r
32 public class L4ClassifierTest {
\r
34 private ParameterValue pvSrcPort80;
\r
35 private ParameterValue pvDstPort80;
\r
36 private ParameterValue pvDstPort_null;
\r
37 private ParameterValue pvSrcRange81_82;
\r
38 private ParameterValue pvDstRange81_82;
\r
39 private ParameterValue pvDstRange82_81;
\r
40 private ParameterValue pvDstRange_null;
\r
43 public ExpectedException thrown = ExpectedException.none();
\r
46 public void init() {
\r
47 pvSrcPort80 = new ParameterValueBuilder().setName(
\r
48 new ParameterName(L4ClassifierDefinition.SRC_PORT_PARAM)).setIntValue(80L).build();
\r
49 pvDstPort80 = new ParameterValueBuilder().setName(
\r
50 new ParameterName(L4ClassifierDefinition.DST_PORT_PARAM)).setIntValue(80L).build();
\r
51 pvDstPort_null = new ParameterValueBuilder().setName(
\r
52 new ParameterName(L4ClassifierDefinition.DST_PORT_PARAM)).build();
\r
53 pvSrcRange81_82 = new ParameterValueBuilder().setName(
\r
54 new ParameterName(L4ClassifierDefinition.SRC_PORT_RANGE_PARAM))
\r
55 .setRangeValue(new RangeValueBuilder().setMin(81L).setMax(82L).build())
\r
57 pvDstRange81_82 = new ParameterValueBuilder().setName(
\r
58 new ParameterName(L4ClassifierDefinition.DST_PORT_RANGE_PARAM))
\r
59 .setRangeValue(new RangeValueBuilder().setMin(81L).setMax(82L).build())
\r
61 pvDstRange82_81 = new ParameterValueBuilder().setName(
\r
62 new ParameterName(L4ClassifierDefinition.DST_PORT_RANGE_PARAM))
\r
63 .setRangeValue(new RangeValueBuilder().setMin(82L).setMax(81L).build())
\r
65 pvDstRange_null = new ParameterValueBuilder().setName(
\r
66 new ParameterName(L4ClassifierDefinition.DST_PORT_RANGE_PARAM))
\r
67 //.setRangeValue(new RangeValueBuilder().setMin(82L).setMax(81L).build())
\r
72 public void testGetId() {
\r
73 assertEquals(L4ClassifierDefinition.ID, Classifier.L4_CL.getId());
\r
77 public void testGetClassifierDefinition() {
\r
78 assertEquals(L4ClassifierDefinition.DEFINITION, Classifier.L4_CL.getClassifierDefinition());
\r
82 public void testGetSupportedParameterValues() {
\r
83 List<SupportedParameterValues> valuesList = Classifier.L4_CL.getSupportedParameterValues();
\r
84 assertEquals(4, valuesList.size());
\r
86 SupportedParameterValues values = valuesList.get(0);
\r
87 assertNotNull(values);
\r
88 assertEquals(L4ClassifierDefinition.SRC_PORT_PARAM, values.getParameterName().getValue());
\r
89 ParameterType pt = values.getParameterType();
\r
90 assertTrue(pt instanceof Int);
\r
94 public void testCheckPresenceOfRequiredParams_Empty() throws Exception {
\r
95 // TODO check: sending empty map is ok?
\r
96 Classifier.L4_CL.checkPresenceOfRequiredParams(new HashMap<String, ParameterValue>());
\r
100 public void testCheckPresenceOfRequiredParams_SinglePorts() throws Exception {
\r
101 Map<String, ParameterValue> params = new HashMap<>();
\r
102 params.put(L4ClassifierDefinition.SRC_PORT_PARAM, pvSrcPort80);
\r
103 params.put(L4ClassifierDefinition.DST_PORT_PARAM, pvDstPort80);
\r
105 Classifier.L4_CL.checkPresenceOfRequiredParams(params);
\r
109 public void testCheckPresenceOfRequiredParams_PortRanges() throws Exception {
\r
110 Map<String, ParameterValue> params = new HashMap<>();
\r
111 params.put(L4ClassifierDefinition.SRC_PORT_RANGE_PARAM, pvSrcRange81_82);
\r
112 params.put(L4ClassifierDefinition.DST_PORT_RANGE_PARAM, pvDstRange81_82);
\r
114 Classifier.L4_CL.checkPresenceOfRequiredParams(params);
\r
118 public void testCheckPresenceOfRequiredParams_DstPortNull() throws IllegalArgumentException {
\r
119 Map<String, ParameterValue> params = new HashMap<>();
\r
120 params.put(L4ClassifierDefinition.SRC_PORT_PARAM, pvSrcPort80);
\r
121 params.put(L4ClassifierDefinition.DST_PORT_PARAM, pvDstPort_null);
\r
123 thrown.expect(IllegalArgumentException.class);
\r
124 thrown.expectMessage(L4Classifier.EXC_MSG_PARAM_VALUE_NOT_SPECIFIED);
\r
125 Classifier.L4_CL.checkPresenceOfRequiredParams(params);
\r
129 public void testCheckPresenceOfRequiredParams_DstRangeNull() throws IllegalArgumentException {
\r
130 Map<String, ParameterValue> params = new HashMap<>();
\r
131 params.put(L4ClassifierDefinition.SRC_PORT_PARAM, pvSrcPort80);
\r
132 params.put(L4ClassifierDefinition.DST_PORT_RANGE_PARAM, pvDstRange_null);
\r
134 thrown.expect(IllegalArgumentException.class);
\r
135 thrown.expectMessage(L4Classifier.EXC_MSG_PARAM_VALUE_NOT_SPECIFIED);
\r
136 Classifier.L4_CL.checkPresenceOfRequiredParams(params);
\r
140 public void testCheckPresenceOfRequiredParams_ParamConflict() throws IllegalArgumentException {
\r
141 Map<String, ParameterValue> params = new HashMap<>();
\r
142 params.put(L4ClassifierDefinition.SRC_PORT_PARAM, pvSrcPort80);
\r
143 params.put(L4ClassifierDefinition.SRC_PORT_RANGE_PARAM, pvSrcRange81_82);
\r
145 thrown.expect(IllegalArgumentException.class);
\r
146 thrown.expectMessage(L4Classifier.EXC_MSG_MUT_EXCLUSIVE_PARAMS);
\r
147 Classifier.L4_CL.checkPresenceOfRequiredParams(params);
\r
151 public void testCheckPresenceOfRequiredParams_RangeInverted() throws IllegalArgumentException {
\r
152 Map<String, ParameterValue> params = new HashMap<>();
\r
153 params.put(L4ClassifierDefinition.SRC_PORT_PARAM, pvSrcPort80);
\r
154 params.put(L4ClassifierDefinition.DST_PORT_RANGE_PARAM, pvDstRange82_81);
\r
156 thrown.expect(IllegalArgumentException.class);
\r
157 thrown.expectMessage(L4Classifier.EXC_MSG_RANGE_VALUE_MISMATCH);
\r
158 Classifier.L4_CL.checkPresenceOfRequiredParams(params);
\r
162 public void testCheckPresenceOfRequiredParams_emptyParams() {
\r
164 Classifier.L4_CL.checkPresenceOfRequiredParams(new HashMap<String, ParameterValue>());
\r
168 public void testGetParent() {
\r
169 assertEquals(Classifier.L4_CL.getParent(), Classifier.IP_PROTO_CL);
\r