dd0281a4d9652860d1517ada0553e76631dc8ef6
[groupbasedpolicy.git] / renderers / vpp / src / test / java / org / opendaylight / groupbasedpolicy / renderer / vpp / sf / L4ClassifierTest.java
1 /*\r
2  * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.\r
3  *\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
7  */\r
8 \r
9 package org.opendaylight.groupbasedpolicy.renderer.vpp.sf;\r
10 \r
11 import org.junit.Before;\r
12 import org.junit.Rule;\r
13 import org.junit.Test;\r
14 import org.junit.rules.ExpectedException;\r
15 import org.opendaylight.groupbasedpolicy.api.sf.L4ClassifierDefinition;\r
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ParameterName;\r
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValue;\r
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValueBuilder;\r
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.parameter.value.RangeValueBuilder;\r
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.parameters.type.ParameterType;\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.parameters.type.parameter.type.Int;\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.capabilities.supported.classifier.definition.SupportedParameterValues;\r
23 \r
24 import java.util.HashMap;\r
25 import java.util.List;\r
26 import java.util.Map;\r
27 \r
28 import static org.junit.Assert.*;\r
29 \r
30 public class L4ClassifierTest {\r
31 \r
32     private ParameterValue pvSrcPort80;\r
33     private ParameterValue pvDstPort80;\r
34     private ParameterValue pvDstPort_null;\r
35     private ParameterValue pvSrcRange81_82;\r
36     private ParameterValue pvDstRange81_82;\r
37     private ParameterValue pvDstRange82_81;\r
38     private ParameterValue pvDstRange_null;\r
39 \r
40     @Rule\r
41     public ExpectedException thrown = ExpectedException.none();\r
42 \r
43     @Before\r
44     public void init() {\r
45         pvSrcPort80 = new ParameterValueBuilder().setName(\r
46                 new ParameterName(L4ClassifierDefinition.SRC_PORT_PARAM)).setIntValue(80L).build();\r
47         pvDstPort80 = new ParameterValueBuilder().setName(\r
48                 new ParameterName(L4ClassifierDefinition.DST_PORT_PARAM)).setIntValue(80L).build();\r
49         pvDstPort_null = new ParameterValueBuilder().setName(\r
50                 new ParameterName(L4ClassifierDefinition.DST_PORT_PARAM)).build();\r
51         pvSrcRange81_82 = new ParameterValueBuilder().setName(\r
52                 new ParameterName(L4ClassifierDefinition.SRC_PORT_RANGE_PARAM))\r
53                 .setRangeValue(new RangeValueBuilder().setMin(81L).setMax(82L).build())\r
54                 .build();\r
55         pvDstRange81_82 = new ParameterValueBuilder().setName(\r
56                 new ParameterName(L4ClassifierDefinition.DST_PORT_RANGE_PARAM))\r
57                 .setRangeValue(new RangeValueBuilder().setMin(81L).setMax(82L).build())\r
58                 .build();\r
59         pvDstRange82_81 = new ParameterValueBuilder().setName(\r
60                 new ParameterName(L4ClassifierDefinition.DST_PORT_RANGE_PARAM))\r
61                 .setRangeValue(new RangeValueBuilder().setMin(82L).setMax(81L).build())\r
62                 .build();\r
63         pvDstRange_null = new ParameterValueBuilder().setName(\r
64                 new ParameterName(L4ClassifierDefinition.DST_PORT_RANGE_PARAM))\r
65                 //.setRangeValue(new RangeValueBuilder().setMin(82L).setMax(81L).build())\r
66                 .build();\r
67     }\r
68 \r
69     @Test\r
70     public void testGetId() {\r
71         assertEquals(L4ClassifierDefinition.ID, Classifier.L4_CL.getId());\r
72     }\r
73 \r
74     @Test\r
75     public void testGetClassifierDefinition() {\r
76         assertEquals(L4ClassifierDefinition.DEFINITION, Classifier.L4_CL.getClassifierDefinition());\r
77     }\r
78 \r
79     @Test\r
80     public void testGetSupportedParameterValues() {\r
81         List<SupportedParameterValues> valuesList = Classifier.L4_CL.getSupportedParameterValues();\r
82         assertEquals(4, valuesList.size());\r
83 \r
84         SupportedParameterValues values = valuesList.get(0);\r
85         assertNotNull(values);\r
86         assertEquals(L4ClassifierDefinition.SRC_PORT_PARAM, values.getParameterName().getValue());\r
87         ParameterType pt = values.getParameterType();\r
88         assertTrue(pt instanceof Int);\r
89     }\r
90 \r
91     @Test\r
92     public void testCheckPresenceOfRequiredParams_Empty() throws Exception {\r
93         // TODO check: sending empty map is ok?\r
94         Classifier.L4_CL.checkPresenceOfRequiredParams(new HashMap<String, ParameterValue>());\r
95     }\r
96 \r
97     @Test\r
98     public void testCheckPresenceOfRequiredParams_SinglePorts() throws Exception {\r
99         Map<String, ParameterValue> params = new HashMap<>();\r
100         params.put(L4ClassifierDefinition.SRC_PORT_PARAM, pvSrcPort80);\r
101         params.put(L4ClassifierDefinition.DST_PORT_PARAM, pvDstPort80);\r
102 \r
103         Classifier.L4_CL.checkPresenceOfRequiredParams(params);\r
104     }\r
105 \r
106     @Test\r
107     public void testCheckPresenceOfRequiredParams_PortRanges() throws Exception {\r
108         Map<String, ParameterValue> params = new HashMap<>();\r
109         params.put(L4ClassifierDefinition.SRC_PORT_RANGE_PARAM, pvSrcRange81_82);\r
110         params.put(L4ClassifierDefinition.DST_PORT_RANGE_PARAM, pvDstRange81_82);\r
111 \r
112         Classifier.L4_CL.checkPresenceOfRequiredParams(params);\r
113     }\r
114 \r
115     @Test\r
116     public void testCheckPresenceOfRequiredParams_DstPortNull() throws IllegalArgumentException {\r
117         Map<String, ParameterValue> params = new HashMap<>();\r
118         params.put(L4ClassifierDefinition.SRC_PORT_PARAM, pvSrcPort80);\r
119         params.put(L4ClassifierDefinition.DST_PORT_PARAM, pvDstPort_null);\r
120 \r
121         thrown.expect(IllegalArgumentException.class);\r
122         thrown.expectMessage(L4Classifier.EXC_MSG_PARAM_VALUE_NOT_SPECIFIED);\r
123         Classifier.L4_CL.checkPresenceOfRequiredParams(params);\r
124     }\r
125 \r
126     @Test\r
127     public void testCheckPresenceOfRequiredParams_DstRangeNull() throws IllegalArgumentException {\r
128         Map<String, ParameterValue> params = new HashMap<>();\r
129         params.put(L4ClassifierDefinition.SRC_PORT_PARAM, pvSrcPort80);\r
130         params.put(L4ClassifierDefinition.DST_PORT_RANGE_PARAM, pvDstRange_null);\r
131 \r
132         thrown.expect(IllegalArgumentException.class);\r
133         thrown.expectMessage(L4Classifier.EXC_MSG_PARAM_VALUE_NOT_SPECIFIED);\r
134         Classifier.L4_CL.checkPresenceOfRequiredParams(params);\r
135     }\r
136 \r
137     @Test\r
138     public void testCheckPresenceOfRequiredParams_ParamConflict() throws IllegalArgumentException {\r
139         Map<String, ParameterValue> params = new HashMap<>();\r
140         params.put(L4ClassifierDefinition.SRC_PORT_PARAM, pvSrcPort80);\r
141         params.put(L4ClassifierDefinition.SRC_PORT_RANGE_PARAM, pvSrcRange81_82);\r
142 \r
143         thrown.expect(IllegalArgumentException.class);\r
144         thrown.expectMessage(L4Classifier.EXC_MSG_MUT_EXCLUSIVE_PARAMS);\r
145         Classifier.L4_CL.checkPresenceOfRequiredParams(params);\r
146     }\r
147 \r
148     @Test\r
149     public void testCheckPresenceOfRequiredParams_RangeInverted() throws IllegalArgumentException {\r
150         Map<String, ParameterValue> params = new HashMap<>();\r
151         params.put(L4ClassifierDefinition.SRC_PORT_PARAM, pvSrcPort80);\r
152         params.put(L4ClassifierDefinition.DST_PORT_RANGE_PARAM, pvDstRange82_81);\r
153 \r
154         thrown.expect(IllegalArgumentException.class);\r
155         thrown.expectMessage(L4Classifier.EXC_MSG_RANGE_VALUE_MISMATCH);\r
156         Classifier.L4_CL.checkPresenceOfRequiredParams(params);\r
157     }\r
158 \r
159     @Test\r
160     public void testCheckPresenceOfRequiredParams_emptyParams() {\r
161 \r
162         Classifier.L4_CL.checkPresenceOfRequiredParams(new HashMap<String, ParameterValue>());\r
163     }\r
164 \r
165     @Test\r
166     public void testGetParent() {\r
167         assertEquals(Classifier.L4_CL.getParent(), Classifier.IP_PROTO_CL);\r
168     }\r
169 \r
170 }\r