Tests for iovisor.sf
[groupbasedpolicy.git] / renderers / iovisor / src / test / java / org / opendaylight / groupbasedpolicy / renderer / iovisor / 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.iovisor.sf;\r
10 \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
14 \r
15 import java.util.HashMap;\r
16 import java.util.List;\r
17 import java.util.Map;\r
18 \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
31 \r
32 public class L4ClassifierTest {\r
33 \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
41 \r
42     @Rule\r
43     public ExpectedException thrown = ExpectedException.none();\r
44 \r
45     @Before\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
56                 .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
60                 .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
64                 .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
68                 .build();\r
69     }\r
70 \r
71     @Test\r
72     public void testGetId() {\r
73         assertEquals(L4ClassifierDefinition.ID, Classifier.L4_CL.getId());\r
74     }\r
75 \r
76     @Test\r
77     public void testGetClassifierDefinition() {\r
78         assertEquals(L4ClassifierDefinition.DEFINITION, Classifier.L4_CL.getClassifierDefinition());\r
79     }\r
80 \r
81     @Test\r
82     public void testGetSupportedParameterValues() {\r
83         List<SupportedParameterValues> valuesList = Classifier.L4_CL.getSupportedParameterValues();\r
84         assertEquals(4, valuesList.size());\r
85 \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
91     }\r
92 \r
93     @Test\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
97     }\r
98 \r
99     @Test\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
104 \r
105         Classifier.L4_CL.checkPresenceOfRequiredParams(params);\r
106     }\r
107 \r
108     @Test\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
113 \r
114         Classifier.L4_CL.checkPresenceOfRequiredParams(params);\r
115     }\r
116 \r
117     @Test\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
122 \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
126     }\r
127 \r
128     @Test\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
133 \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
137     }\r
138 \r
139     @Test\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
144 \r
145         thrown.expect(IllegalArgumentException.class);\r
146         thrown.expectMessage(L4Classifier.EXC_MSG_MUT_EXCLUSIVE_PARAMS);\r
147         Classifier.L4_CL.checkPresenceOfRequiredParams(params);\r
148     }\r
149 \r
150     @Test\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
155 \r
156         thrown.expect(IllegalArgumentException.class);\r
157         thrown.expectMessage(L4Classifier.EXC_MSG_RANGE_VALUE_MISMATCH);\r
158         Classifier.L4_CL.checkPresenceOfRequiredParams(params);\r
159     }\r
160 \r
161     @Test\r
162     public void testCheckPresenceOfRequiredParams_emptyParams() {\r
163 \r
164         Classifier.L4_CL.checkPresenceOfRequiredParams(new HashMap<String, ParameterValue>());\r
165     }\r
166 \r
167     @Test\r
168     public void testGetParent() {\r
169         assertEquals(Classifier.L4_CL.getParent(), Classifier.IP_PROTO_CL);\r
170     }\r
171 \r
172 }\r