0eac8bf6ad6742b231e3907103c44708e57d34c3
[policy/distribution.git] /
1 /*-
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
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
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.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.distribution.reception.decoding.pdpx;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertTrue;
26
27 import java.io.IOException;
28 import java.util.Collection;
29
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;
38
39 /**
40  * Class to perform unit test of {@link PolicyDecoderCsarPdpx}.
41  *
42  */
43 public class TestPolicyDecoderCsarPdpx {
44
45     /**
46      * Set up for test cases.
47      */
48     @BeforeClass
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);
55     }
56
57     /**
58      * Tear down.
59      */
60     @AfterClass
61     public static void tearDown() {
62         ParameterService.deregister(PolicyDecoderCsarPdpxConfigurationParameterGroup.class.getSimpleName());
63     }
64
65     @Test
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());
70
71         final Collection<OptimizationPolicy> ret = policyDecoderCsarPdpx.decode(csar);
72
73         assertEquals(2, ret.size());
74         final OptimizationPolicy policy = (OptimizationPolicy) ret.toArray()[0];
75
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\""));
83
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\""));
94     }
95
96     @Test
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());
101
102         final Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
103         final OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0];
104
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\""));
112
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\":\"\""));
134     }
135
136     @Test
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());
141
142         final Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
143         assertEquals(2, policies.size());
144         final OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0];
145
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\""));
153
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\":\"\""));
175
176
177     }
178
179     @Test
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());
184
185         final Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
186         assertEquals(2, policies.size());
187         final OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0];
188
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\""));
196
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\""));
210     }
211
212     @Test
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());
217
218         final Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
219         assertEquals(1, policies.size());
220         final OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0];
221
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\""));
229
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\":\"\""));
243
244     }
245
246     @Test
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());
251
252         final Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
253         assertEquals(5, policies.size());
254         final OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0];
255
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\""));
263
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\":\"\""));
276
277     }
278 }