762549fab2a120eb8249650a46c1ae64080cac55
[policy/distribution.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.distribution.reception.decoding.pdpx;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
25
26 import java.io.IOException;
27 import java.lang.String;
28 import java.util.Collection;
29 import java.util.List;
30 import java.util.Map;
31
32 import org.junit.AfterClass;
33 import org.junit.BeforeClass;
34 import org.junit.Test;
35 import org.onap.policy.common.parameters.ParameterGroup;
36 import org.onap.policy.common.parameters.ParameterService;
37 import org.onap.policy.common.utils.coder.CoderException;
38 import org.onap.policy.common.utils.coder.StandardCoder;
39 import org.onap.policy.distribution.model.Csar;
40 import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
41 import org.onap.policy.distribution.reception.decoding.pdpx.FlavorFeature;
42 import org.onap.policy.distribution.reception.decoding.pdpx.PolicyDecoderCsarPdpxLifecycleApi;
43 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
44 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
45 import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty;
46 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
47 import org.onap.policy.models.tosca.authorative.concepts.ToscaTopologyTemplate;
48 /**
49  * Class to perform unit test of {@link PolicyDecoderCsarPdpxLifecycleApiLifecycleApi}.
50  *
51  */
52 public class TestPolicyDecoderCsarPdpxLifecycleApi {
53
54     private final StandardCoder encoder = new StandardCoder();
55
56     /**
57      * Set up for test cases.
58      */
59     @BeforeClass
60     public static void setUp() {
61         final ParameterGroup parameterGroup = CommonTestData.getPolicyDecoderParameters(
62                 "src/test/resources/parameters/PdpxPolicyDecoderParameters.json",
63                 PolicyDecoderCsarPdpxLifecycleApiParameters.class);
64         parameterGroup.setName(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
65         ParameterService.register(parameterGroup);
66     }
67
68     /**
69      * Tear down.
70      */
71     @AfterClass
72     public static void tearDown() {
73         ParameterService.deregister(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
74     }
75
76     @Test
77     public void testHpaPolicy2Vnf() throws IOException, PolicyDecodingException, CoderException {
78         final Csar csar = new Csar("src/test/resources/service-TestNs8-csar.csar");
79         final PolicyDecoderCsarPdpxLifecycleApi policyDecoderCsarPdpx = new PolicyDecoderCsarPdpxLifecycleApi();
80         policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
81
82         final Collection<ToscaServiceTemplate> entities = policyDecoderCsarPdpx.decode(csar);
83
84         assertEquals(2, entities.size());
85         final ToscaServiceTemplate entity = entities.iterator().next();
86         ToscaTopologyTemplate topologyTemplate = entity.getToscaTopologyTemplate();
87         Map<String, ToscaPolicy> map = topologyTemplate.getPolicies().get(0);
88         ToscaPolicy policy = map.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_HPA_OOF);
89         Map<String, Object> props = policy.getProperties();
90         Object flavorFeatures =
91                       props.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_FLAVORFEATURES);
92         String features = encoder.encode(flavorFeatures);
93         assertTrue(features.contains("\"id\":\"VDU_vgw_0\""));
94         assertTrue(features.contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
95         assertTrue(features.contains("\"type\":\"flavor_directives\""));
96         assertTrue(features.contains("\"hpa-feature\":\"basicCapabilities\""));
97         assertTrue(features.contains("\"mandatory\":\"True\""));
98         assertTrue(features.contains("\"architecture\":\"generic\""));
99         assertTrue(features.contains("\"hpa-version\":\"v1\""));
100         assertTrue(features.contains("\"hpa-attribute-key\":\"virtualMemSize\""));
101         assertTrue(features.contains("\"operator\":\"=\""));
102         assertTrue(features.contains("\"unit\":\"MB\""));
103     }
104
105     @Test
106     public void testHpaPolicySriov() throws IOException, PolicyDecodingException, CoderException {
107         final Csar csar = new Csar("src/test/resources/hpaPolicySriov.csar");
108         final PolicyDecoderCsarPdpxLifecycleApi policyDecoderCsarPdpx = new PolicyDecoderCsarPdpxLifecycleApi();
109         policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
110
111         final Collection<ToscaServiceTemplate> entities = policyDecoderCsarPdpx.decode(csar);
112         final ToscaServiceTemplate entity = entities.iterator().next();
113         ToscaTopologyTemplate topologyTemplate = entity.getToscaTopologyTemplate();
114         Map<String, ToscaPolicy> map = topologyTemplate.getPolicies().get(0);
115         ToscaPolicy policy = map.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_HPA_OOF);
116         Map<String, Object> props = policy.getProperties();
117         Object flavorFeatures =
118                       props.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_FLAVORFEATURES);
119         String features = encoder.encode(flavorFeatures);
120         assertTrue(features.contains("\"id\":\"VDU_vgw_0\""));
121         assertTrue(features.contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
122         assertTrue(features.contains("\"type\":\"flavor_directives\""));
123         assertTrue(features.contains("\"attribute_name\":\"flavorName\""));
124         assertTrue(features.contains("\"attribute_value\":\"\""));
125         assertTrue(features.contains("\"hpa-feature\":\"sriovNICNetwork\""));
126         assertTrue(features.contains("\"mandatory\":\"True\""));
127         assertTrue(features.contains("\"architecture\":\"generic\""));
128         assertTrue(features.contains("\"hpa-version\":\"v1\""));
129         assertTrue(features.contains("\"hpa-attribute-key\":\"pciVendorId\""));
130         assertTrue(features.contains("\"hpa-attribute-value\":\"1234\""));
131         assertTrue(features.contains("\"operator\":\"=\""));
132         assertTrue(features.contains("\"unit\":\"\""));
133         assertTrue(features.contains("\"hpa-attribute-key\":\"pciDeviceId\""));
134         assertTrue(features.contains("\"hpa-attribute-value\":\"5678\""));
135         assertTrue(features.contains("\"operator\":\"=\""));
136         assertTrue(features.contains("\"unit\":\"\""));
137         assertTrue(features.contains("\"hpa-attribute-key\":\"pciNumDevices\""));
138         assertTrue(features.contains("\"hpa-attribute-value\":\"1\""));
139         assertTrue(features.contains("\"operator\":\"=\""));
140         assertTrue(features.contains("\"unit\":\"\""));
141     }
142
143     @Test
144     public void testHpaPolicyPciePassthrough() throws IOException, PolicyDecodingException, CoderException {
145         final Csar csar = new Csar("src/test/resources/hpaPolicyPciePassthrough.csar");
146         final PolicyDecoderCsarPdpxLifecycleApi policyDecoderCsarPdpx = new PolicyDecoderCsarPdpxLifecycleApi();
147         policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
148
149         final Collection<ToscaServiceTemplate> entities = policyDecoderCsarPdpx.decode(csar);
150         assertEquals(2, entities.size());
151         final ToscaServiceTemplate entity = entities.iterator().next();
152         ToscaTopologyTemplate topologyTemplate = entity.getToscaTopologyTemplate();
153         Map<String, ToscaPolicy> map = topologyTemplate.getPolicies().get(0);
154         ToscaPolicy policy = map.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_HPA_OOF);
155         Map<String, Object> props = policy.getProperties();
156         Object flavorFeatures =
157                       props.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_FLAVORFEATURES);
158         String features = encoder.encode(flavorFeatures);
159         assertTrue(features.contains("\"id\":\"VDU_vgw_0\""));
160         assertTrue(features.contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
161         assertTrue(features.contains("\"type\":\"flavor_directives\""));
162         assertTrue(features.contains("\"attribute_name\":\"flavorName\""));
163         assertTrue(features.contains("\"attribute_value\":\"\""));
164         assertTrue(features.contains("\"hpa-feature\":\"pciePassthrough\""));
165         assertTrue(features.contains("\"mandatory\":\"True\""));
166         assertTrue(features.contains("\"architecture\":\"generic\""));
167         assertTrue(features.contains("\"hpa-version\":\"v1\""));
168         assertTrue(features.contains("\"hpa-attribute-key\":\"pciVendorId\""));
169         assertTrue(features.contains("\"hpa-attribute-value\":\"1234\""));
170         assertTrue(features.contains("\"operator\":\"=\""));
171         assertTrue(features.contains("\"unit\":\"\""));
172         assertTrue(features.contains("\"hpa-attribute-key\":\"pciDeviceId\""));
173         assertTrue(features.contains("\"hpa-attribute-value\":\"5678\""));
174         assertTrue(features.contains("\"operator\":\"=\""));
175         assertTrue(features.contains("\"unit\":\"\""));
176         assertTrue(features.contains("\"hpa-attribute-key\":\"pciNumDevices\""));
177         assertTrue(features.contains("\"hpa-attribute-value\":\"1\""));
178         assertTrue(features.contains("\"operator\":\"=\""));
179         assertTrue(features.contains("\"unit\":\"\""));
180     }
181
182     @Test
183     public void testHpaPolicyHugePage() throws IOException, PolicyDecodingException, CoderException {
184         final Csar csar = new Csar("src/test/resources/hpaPolicyHugePage.csar");
185         final PolicyDecoderCsarPdpxLifecycleApi policyDecoderCsarPdpx = new PolicyDecoderCsarPdpxLifecycleApi();
186         policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
187
188         final Collection<ToscaServiceTemplate> entities = policyDecoderCsarPdpx.decode(csar);
189         assertEquals(2, entities.size());
190         final ToscaServiceTemplate entity = entities.iterator().next();
191         ToscaTopologyTemplate topologyTemplate = entity.getToscaTopologyTemplate();
192         Map<String, ToscaPolicy> map = topologyTemplate.getPolicies().get(0);
193         ToscaPolicy policy = map.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_HPA_OOF);
194         Map<String, Object> props = policy.getProperties();
195         Object flavorFeatures =
196                       props.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_FLAVORFEATURES);
197         String features = encoder.encode(flavorFeatures);
198         assertTrue(features.contains("\"id\":\"VDU_vgw_0\""));
199         assertTrue(features.contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
200         assertTrue(features.contains("\"type\":\"flavor_directives\""));
201         assertTrue(features.contains("\"attribute_name\":\"flavorName\""));
202         assertTrue(features.contains("\"attribute_value\":\"\""));
203         assertTrue(features.contains("\"hpa-feature\":\"hugePages\""));
204         assertTrue(features.contains("\"mandatory\":\"true\""));
205         assertTrue(features.contains("\"architecture\":\"generic\""));
206         assertTrue(features.contains("\"hpa-version\":\"v1\""));
207         assertTrue(features.contains("\"hpa-attribute-key\":\"memoryPageSize\""));
208         assertTrue(features.contains("\"hpa-attribute-value\":\"2\""));
209         assertTrue(features.contains("\"operator\":\"=\""));
210         assertTrue(features.contains("\"unit\":\"MB\""));
211     }
212
213     @Test
214     public void testS3p0PciVendorId() throws IOException, PolicyDecodingException, CoderException {
215         final Csar csar = new Csar("src/test/resources/s3p_0_pciVendorId.csar");
216         final PolicyDecoderCsarPdpxLifecycleApi policyDecoderCsarPdpx = new PolicyDecoderCsarPdpxLifecycleApi();
217         policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
218
219         final Collection<ToscaServiceTemplate> entities = policyDecoderCsarPdpx.decode(csar);
220         assertEquals(1, entities.size());
221         final ToscaServiceTemplate entity = entities.iterator().next();
222         ToscaTopologyTemplate topologyTemplate = entity.getToscaTopologyTemplate();
223         Map<String, ToscaPolicy> map = topologyTemplate.getPolicies().get(0);
224         ToscaPolicy policy = map.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_HPA_OOF);
225         Map<String, Object> props = policy.getProperties();
226         Object flavorFeatures =
227                       props.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_FLAVORFEATURES);
228         String features = encoder.encode(flavorFeatures);
229         assertTrue(features.contains("\"id\":\"VDU_vgw_0\""));
230         assertTrue(features.contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
231         assertTrue(features.contains("\"type\":\"flavor_directives\""));
232         assertTrue(features.contains("\"attribute_name\":\"flavorName\""));
233         assertTrue(features.contains("\"attribute_value\":\"\""));
234         assertTrue(features.contains("\"hpa-feature\":\"pciePassthrough\""));
235         assertTrue(features.contains("\"mandatory\":\"True\""));
236         assertTrue(features.contains("\"architecture\":\"generic\""));
237         assertTrue(features.contains("\"hpa-version\":\"v1\""));
238         assertTrue(features.contains("\"hpa-attribute-key\":\"pciVendorId\""));
239         assertTrue(features.contains("\"hpa-attribute-value\":\"1234\""));
240         assertTrue(features.contains("\"operator\":\"=\""));
241         assertTrue(features.contains("\"unit\":\"\""));
242     }
243
244     @Test
245     public void testserviceVcpeWithAll() throws IOException, PolicyDecodingException, CoderException {
246         final Csar csar = new Csar("src/test/resources/service-VcpeWithAll-csar.csar");
247         final PolicyDecoderCsarPdpxLifecycleApi policyDecoderCsarPdpx = new PolicyDecoderCsarPdpxLifecycleApi();
248         policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
249
250         final Collection<ToscaServiceTemplate> entities = policyDecoderCsarPdpx.decode(csar);
251         assertEquals(5, entities.size());
252         final ToscaServiceTemplate entity = entities.iterator().next();
253         ToscaTopologyTemplate topologyTemplate = entity.getToscaTopologyTemplate();
254         Map<String, ToscaPolicy> map = topologyTemplate.getPolicies().get(0);
255         ToscaPolicy policy = map.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_HPA_OOF);
256         Map<String, Object> props = policy.getProperties();
257         Object flavorFeatures =
258                       props.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_FLAVORFEATURES);
259         String features = encoder.encode(flavorFeatures);
260         assertTrue(features.contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
261         assertTrue(features.contains("\"type\":\"flavor_directives\""));
262         assertTrue(features.contains("\"attribute_name\":\"flavorName\""));
263         assertTrue(features.contains("\"attribute_value\":\"\""));
264         assertTrue(features.contains("\"hpa-feature\":\"sriovNICNetwork\""));
265         assertTrue(features.contains("\"mandatory\":\"True\""));
266         assertTrue(features.contains("\"architecture\":\"generic\""));
267         assertTrue(features.contains("\"hpa-version\":\"v1\""));
268         assertTrue(features.contains("\"hpa-attribute-key\":\"pciVendorId\""));
269         assertTrue(features.contains("\"hpa-attribute-value\":\"1234\""));
270         assertTrue(features.contains("\"operator\":\"=\""));
271         assertTrue(features.contains("\"unit\":\"\""));
272     }
273 }