2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2018 Intel. All rights reserved.
4 * Modifications Copyright (C) 2019 Nordix Foundation.
5 * ================================================================================
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.distribution.reception.decoding.pdpx;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertTrue;
27 import java.io.IOException;
28 import java.util.Collection;
30 import org.junit.AfterClass;
31 import org.junit.BeforeClass;
32 import org.junit.Test;
33 import org.onap.policy.common.parameters.ParameterGroup;
34 import org.onap.policy.common.parameters.ParameterService;
35 import org.onap.policy.distribution.model.Csar;
36 import org.onap.policy.distribution.model.OptimizationPolicy;
37 import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
40 * Class to perform unit test of {@link PolicyDecoderCsarPdpx}.
43 public class TestPolicyDecoderCsarPdpx {
46 * Set up for test cases.
49 public static void setUp() {
50 final ParameterGroup parameterGroup = CommonTestData.getPolicyDecoderParameters(
51 "src/test/resources/parameters/PdpxPolicyDecoderParameters.json",
52 PolicyDecoderCsarPdpxConfigurationParameterGroup.class);
53 parameterGroup.setName(PolicyDecoderCsarPdpxConfigurationParameterGroup.class.getSimpleName());
54 ParameterService.register(parameterGroup);
61 public static void tearDown() {
62 ParameterService.deregister(PolicyDecoderCsarPdpxConfigurationParameterGroup.class.getSimpleName());
66 public void testHpaPolicy2Vnf() throws IOException, PolicyDecodingException {
67 final Csar csar = new Csar("src/test/resources/service-TestNs8-csar.csar");
68 final PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx();
69 policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxConfigurationParameterGroup.class.getSimpleName());
71 final Collection<OptimizationPolicy> ret = policyDecoderCsarPdpx.decode(csar);
73 assertEquals(2, ret.size());
74 final OptimizationPolicy policy = (OptimizationPolicy) ret.toArray()[0];
76 assertEquals("onapName", policy.getOnapName());
77 assertTrue(policy.getName().startsWith("OOF."));
78 assertTrue(policy.getConfigBody().contains("\"priority\":\"5\""));
79 assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
80 assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
81 assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
82 assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
84 assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vgw_0\""));
85 assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
86 assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
87 assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"basicCapabilities\""));
88 assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
89 assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
90 assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
91 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"virtualMemSize\""));
92 assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
93 assertTrue(policy.getConfigBody().contains("\"unit\":\"MB\""));
97 public void testHpaPolicySriov() throws IOException, PolicyDecodingException {
98 final Csar csar = new Csar("src/test/resources/hpaPolicySriov.csar");
99 final PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx();
100 policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxConfigurationParameterGroup.class.getSimpleName());
102 final Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
103 final OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0];
105 assertEquals("onapName", policy.getOnapName());
106 assertTrue(policy.getName().startsWith("OOF."));
107 assertTrue(policy.getConfigBody().contains("\"priority\":\"5\""));
108 assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
109 assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
110 assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
111 assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
113 assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vgw_0\""));
114 assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
115 assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
116 assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
117 assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
118 assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"sriovNICNetwork\""));
119 assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
120 assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
121 assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
122 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\""));
123 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\""));
124 assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
125 assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
126 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciDeviceId\""));
127 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"5678\""));
128 assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
129 assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
130 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciNumDevices\""));
131 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1\""));
132 assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
133 assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
137 public void testHpaPolicyPciePassthrough() throws IOException, PolicyDecodingException {
138 final Csar csar = new Csar("src/test/resources/hpaPolicyPciePassthrough.csar");
139 final PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx();
140 policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxConfigurationParameterGroup.class.getSimpleName());
142 final Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
143 assertEquals(2, policies.size());
144 final OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0];
146 assertEquals("onapName", policy.getOnapName());
147 assertTrue(policy.getName().startsWith("OOF."));
148 assertTrue(policy.getConfigBody().contains("\"priority\":\"5\""));
149 assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
150 assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
151 assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
152 assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
154 assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vgw_0\""));
155 assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
156 assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
157 assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
158 assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
159 assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"pciePassthrough\""));
160 assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
161 assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
162 assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
163 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\""));
164 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\""));
165 assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
166 assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
167 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciDeviceId\""));
168 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"5678\""));
169 assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
170 assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
171 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciNumDevices\""));
172 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1\""));
173 assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
174 assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
180 public void testHpaPolicyHugePage() throws IOException, PolicyDecodingException {
181 final Csar csar = new Csar("src/test/resources/hpaPolicyHugePage.csar");
182 final PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx();
183 policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxConfigurationParameterGroup.class.getSimpleName());
185 final Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
186 assertEquals(2, policies.size());
187 final OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0];
189 assertEquals("onapName", policy.getOnapName());
190 assertTrue(policy.getName().startsWith("OOF."));
191 assertTrue(policy.getConfigBody().contains("\"priority\":\"5\""));
192 assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
193 assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
194 assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
195 assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
197 assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vgw_0\""));
198 assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
199 assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
200 assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
201 assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
202 assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"hugePages\""));
203 assertTrue(policy.getConfigBody().contains("\"mandatory\":\"true\""));
204 assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
205 assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
206 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"memoryPageSize\""));
207 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"2\""));
208 assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
209 assertTrue(policy.getConfigBody().contains("\"unit\":\"MB\""));
213 public void testS3p0PciVendorId() throws IOException, PolicyDecodingException {
214 final Csar csar = new Csar("src/test/resources/s3p_0_pciVendorId.csar");
215 final PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx();
216 policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxConfigurationParameterGroup.class.getSimpleName());
218 final Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
219 assertEquals(1, policies.size());
220 final OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0];
222 assertEquals("onapName", policy.getOnapName());
223 assertTrue(policy.getName().startsWith("OOF."));
224 assertTrue(policy.getConfigBody().contains("\"priority\":\"5\""));
225 assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
226 assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
227 assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
228 assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
230 assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vgw_0\""));
231 assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
232 assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
233 assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
234 assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
235 assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"pciePassthrough\""));
236 assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
237 assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
238 assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
239 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\""));
240 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\""));
241 assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
242 assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
247 public void testserviceVcpeWithAll() throws IOException, PolicyDecodingException {
248 final Csar csar = new Csar("src/test/resources/service-VcpeWithAll-csar.csar");
249 final PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx();
250 policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxConfigurationParameterGroup.class.getSimpleName());
252 final Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
253 assertEquals(5, policies.size());
254 final OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0];
256 assertEquals("onapName", policy.getOnapName());
257 assertTrue(policy.getName().startsWith("OOF."));
258 assertTrue(policy.getConfigBody().contains("\"priority\":\"5\""));
259 assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
260 assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
261 assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
262 assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
264 assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
265 assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
266 assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
267 assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
268 assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"sriovNICNetwork\""));
269 assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
270 assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
271 assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
272 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\""));
273 assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\""));
274 assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
275 assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));