3b8339a9f4a6373dc7f878eb04fe74b5c4e2cc7a
[policy/distribution.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2019 Nordix Foundation.
4  *  Modifications Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
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.lang.String;
29 import java.util.Collection;
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.PolicyDecoderCsarPdpxLifecycleApi;
42 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
43 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
44 import org.onap.policy.models.tosca.authorative.concepts.ToscaTopologyTemplate;
45
46 /**
47  * Class to perform unit test of {@link PolicyDecoderCsarPdpxLifecycleApiLifecycleApi}.
48  */
49 public class TestPolicyDecoderCsarPdpxLifecycleApi {
50
51     private final StandardCoder encoder = new StandardCoder();
52
53     /**
54      * Set up for test cases.
55      */
56     @BeforeClass
57     public static void setUp() {
58         final ParameterGroup parameterGroup = CommonTestData.getPolicyDecoderParameters(
59                 "src/test/resources/parameters/PdpxPolicyDecoderParameters.json",
60                 PolicyDecoderCsarPdpxLifecycleApiParameters.class);
61         parameterGroup.setName(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
62         ParameterService.register(parameterGroup);
63     }
64
65     /**
66      * Tear down.
67      */
68     @AfterClass
69     public static void tearDown() {
70         ParameterService.deregister(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
71     }
72
73     @Test
74     public void testHpaPolicy2Vnf() throws IOException, PolicyDecodingException, CoderException {
75         final Csar csar = new Csar("src/test/resources/service-TestNs8-csar.csar");
76         final PolicyDecoderCsarPdpxLifecycleApi policyDecoderCsarPdpx = new PolicyDecoderCsarPdpxLifecycleApi();
77         policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
78
79         final Collection<ToscaServiceTemplate> entities = policyDecoderCsarPdpx.decode(csar);
80
81         assertEquals(2, entities.size());
82         final ToscaServiceTemplate entity = entities.iterator().next();
83         ToscaTopologyTemplate topologyTemplate = entity.getToscaTopologyTemplate();
84         Map<String, ToscaPolicy> map = topologyTemplate.getPolicies().get(0);
85         ToscaPolicy policy = map.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_HPA_OOF);
86         Map<String, Object> props = policy.getProperties();
87         Object flavorFeatures =
88                       props.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_FLAVORFEATURES);
89         String features = encoder.encode(flavorFeatures);
90         assertTrue(features.contains("\"id\":\"VDU_vgw_0\""));
91         assertTrue(features.contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
92         assertTrue(features.contains("\"type\":\"flavor_directives\""));
93         assertTrue(features.contains("\"hpa-feature\":\"basicCapabilities\""));
94         assertTrue(features.contains("\"mandatory\":\"True\""));
95         assertTrue(features.contains("\"architecture\":\"generic\""));
96         assertTrue(features.contains("\"hpa-version\":\"v1\""));
97         assertTrue(features.contains("\"hpa-attribute-key\":\"virtualMemSize\""));
98         assertTrue(features.contains("\"operator\":\"=\""));
99         assertTrue(features.contains("\"unit\":\"MB\""));
100     }
101
102     @Test
103     public void testHpaPolicySriov() throws IOException, PolicyDecodingException, CoderException {
104         final Csar csar = new Csar("src/test/resources/hpaPolicySriov.csar");
105         final PolicyDecoderCsarPdpxLifecycleApi policyDecoderCsarPdpx = new PolicyDecoderCsarPdpxLifecycleApi();
106         policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
107
108         final Collection<ToscaServiceTemplate> entities = policyDecoderCsarPdpx.decode(csar);
109         final ToscaServiceTemplate entity = entities.iterator().next();
110         ToscaTopologyTemplate topologyTemplate = entity.getToscaTopologyTemplate();
111         Map<String, ToscaPolicy> map = topologyTemplate.getPolicies().get(0);
112         ToscaPolicy policy = map.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_HPA_OOF);
113         Map<String, Object> props = policy.getProperties();
114         Object flavorFeatures =
115                       props.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_FLAVORFEATURES);
116         String features = encoder.encode(flavorFeatures);
117         assertTrue(features.contains("\"id\":\"VDU_vgw_0\""));
118         assertTrue(features.contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
119         assertTrue(features.contains("\"type\":\"flavor_directives\""));
120         assertTrue(features.contains("\"attribute_name\":\"flavorName\""));
121         assertTrue(features.contains("\"attribute_value\":\"\""));
122         assertTrue(features.contains("\"hpa-feature\":\"sriovNICNetwork\""));
123         assertTrue(features.contains("\"mandatory\":\"True\""));
124         assertTrue(features.contains("\"architecture\":\"generic\""));
125         assertTrue(features.contains("\"hpa-version\":\"v1\""));
126         assertTrue(features.contains("\"hpa-attribute-key\":\"pciVendorId\""));
127         assertTrue(features.contains("\"hpa-attribute-value\":\"1234\""));
128         assertTrue(features.contains("\"operator\":\"=\""));
129         assertTrue(features.contains("\"unit\":\"\""));
130         assertTrue(features.contains("\"hpa-attribute-key\":\"pciDeviceId\""));
131         assertTrue(features.contains("\"hpa-attribute-value\":\"5678\""));
132         assertTrue(features.contains("\"operator\":\"=\""));
133         assertTrue(features.contains("\"unit\":\"\""));
134         assertTrue(features.contains("\"hpa-attribute-key\":\"pciNumDevices\""));
135         assertTrue(features.contains("\"hpa-attribute-value\":\"1\""));
136         assertTrue(features.contains("\"operator\":\"=\""));
137         assertTrue(features.contains("\"unit\":\"\""));
138     }
139
140     @Test
141     public void testHpaPolicyPciePassthrough() throws IOException, PolicyDecodingException, CoderException {
142         final Csar csar = new Csar("src/test/resources/hpaPolicyPciePassthrough.csar");
143         final PolicyDecoderCsarPdpxLifecycleApi policyDecoderCsarPdpx = new PolicyDecoderCsarPdpxLifecycleApi();
144         policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
145
146         final Collection<ToscaServiceTemplate> entities = policyDecoderCsarPdpx.decode(csar);
147         assertEquals(2, entities.size());
148         final ToscaServiceTemplate entity = entities.iterator().next();
149         ToscaTopologyTemplate topologyTemplate = entity.getToscaTopologyTemplate();
150         Map<String, ToscaPolicy> map = topologyTemplate.getPolicies().get(0);
151         ToscaPolicy policy = map.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_HPA_OOF);
152         Map<String, Object> props = policy.getProperties();
153         Object flavorFeatures =
154                       props.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_FLAVORFEATURES);
155         String features = encoder.encode(flavorFeatures);
156         assertTrue(features.contains("\"id\":\"VDU_vgw_0\""));
157         assertTrue(features.contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
158         assertTrue(features.contains("\"type\":\"flavor_directives\""));
159         assertTrue(features.contains("\"attribute_name\":\"flavorName\""));
160         assertTrue(features.contains("\"attribute_value\":\"\""));
161         assertTrue(features.contains("\"hpa-feature\":\"pciePassthrough\""));
162         assertTrue(features.contains("\"mandatory\":\"True\""));
163         assertTrue(features.contains("\"architecture\":\"generic\""));
164         assertTrue(features.contains("\"hpa-version\":\"v1\""));
165         assertTrue(features.contains("\"hpa-attribute-key\":\"pciVendorId\""));
166         assertTrue(features.contains("\"hpa-attribute-value\":\"1234\""));
167         assertTrue(features.contains("\"operator\":\"=\""));
168         assertTrue(features.contains("\"unit\":\"\""));
169         assertTrue(features.contains("\"hpa-attribute-key\":\"pciDeviceId\""));
170         assertTrue(features.contains("\"hpa-attribute-value\":\"5678\""));
171         assertTrue(features.contains("\"operator\":\"=\""));
172         assertTrue(features.contains("\"unit\":\"\""));
173         assertTrue(features.contains("\"hpa-attribute-key\":\"pciNumDevices\""));
174         assertTrue(features.contains("\"hpa-attribute-value\":\"1\""));
175         assertTrue(features.contains("\"operator\":\"=\""));
176         assertTrue(features.contains("\"unit\":\"\""));
177     }
178
179     @Test
180     public void testHpaPolicyHugePage() throws IOException, PolicyDecodingException, CoderException {
181         final Csar csar = new Csar("src/test/resources/hpaPolicyHugePage.csar");
182         final PolicyDecoderCsarPdpxLifecycleApi policyDecoderCsarPdpx = new PolicyDecoderCsarPdpxLifecycleApi();
183         policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
184
185         final Collection<ToscaServiceTemplate> entities = policyDecoderCsarPdpx.decode(csar);
186         assertEquals(2, entities.size());
187         final ToscaServiceTemplate entity = entities.iterator().next();
188         ToscaTopologyTemplate topologyTemplate = entity.getToscaTopologyTemplate();
189         Map<String, ToscaPolicy> map = topologyTemplate.getPolicies().get(0);
190         ToscaPolicy policy = map.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_HPA_OOF);
191         Map<String, Object> props = policy.getProperties();
192         Object flavorFeatures =
193                       props.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_FLAVORFEATURES);
194         String features = encoder.encode(flavorFeatures);
195         assertTrue(features.contains("\"id\":\"VDU_vgw_0\""));
196         assertTrue(features.contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
197         assertTrue(features.contains("\"type\":\"flavor_directives\""));
198         assertTrue(features.contains("\"attribute_name\":\"flavorName\""));
199         assertTrue(features.contains("\"attribute_value\":\"\""));
200         assertTrue(features.contains("\"hpa-feature\":\"hugePages\""));
201         assertTrue(features.contains("\"mandatory\":\"true\""));
202         assertTrue(features.contains("\"architecture\":\"generic\""));
203         assertTrue(features.contains("\"hpa-version\":\"v1\""));
204         assertTrue(features.contains("\"hpa-attribute-key\":\"memoryPageSize\""));
205         assertTrue(features.contains("\"hpa-attribute-value\":\"2\""));
206         assertTrue(features.contains("\"operator\":\"=\""));
207         assertTrue(features.contains("\"unit\":\"MB\""));
208     }
209
210     @Test
211     public void testS3p0PciVendorId() throws IOException, PolicyDecodingException, CoderException {
212         final Csar csar = new Csar("src/test/resources/s3p_0_pciVendorId.csar");
213         final PolicyDecoderCsarPdpxLifecycleApi policyDecoderCsarPdpx = new PolicyDecoderCsarPdpxLifecycleApi();
214         policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
215
216         final Collection<ToscaServiceTemplate> entities = policyDecoderCsarPdpx.decode(csar);
217         assertEquals(1, entities.size());
218         final ToscaServiceTemplate entity = entities.iterator().next();
219         ToscaTopologyTemplate topologyTemplate = entity.getToscaTopologyTemplate();
220         Map<String, ToscaPolicy> map = topologyTemplate.getPolicies().get(0);
221         ToscaPolicy policy = map.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_HPA_OOF);
222         Map<String, Object> props = policy.getProperties();
223         Object flavorFeatures =
224                       props.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_FLAVORFEATURES);
225         String features = encoder.encode(flavorFeatures);
226         assertTrue(features.contains("\"id\":\"VDU_vgw_0\""));
227         assertTrue(features.contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
228         assertTrue(features.contains("\"type\":\"flavor_directives\""));
229         assertTrue(features.contains("\"attribute_name\":\"flavorName\""));
230         assertTrue(features.contains("\"attribute_value\":\"\""));
231         assertTrue(features.contains("\"hpa-feature\":\"pciePassthrough\""));
232         assertTrue(features.contains("\"mandatory\":\"True\""));
233         assertTrue(features.contains("\"architecture\":\"generic\""));
234         assertTrue(features.contains("\"hpa-version\":\"v1\""));
235         assertTrue(features.contains("\"hpa-attribute-key\":\"pciVendorId\""));
236         assertTrue(features.contains("\"hpa-attribute-value\":\"1234\""));
237         assertTrue(features.contains("\"operator\":\"=\""));
238         assertTrue(features.contains("\"unit\":\"\""));
239     }
240
241     @Test
242     public void testserviceVcpeWithAll() throws IOException, PolicyDecodingException, CoderException {
243         final Csar csar = new Csar("src/test/resources/service-VcpeWithAll-csar.csar");
244         final PolicyDecoderCsarPdpxLifecycleApi policyDecoderCsarPdpx = new PolicyDecoderCsarPdpxLifecycleApi();
245         policyDecoderCsarPdpx.configure(PolicyDecoderCsarPdpxLifecycleApiParameters.class.getSimpleName());
246
247         final Collection<ToscaServiceTemplate> entities = policyDecoderCsarPdpx.decode(csar);
248         assertEquals(5, entities.size());
249         final ToscaServiceTemplate entity = entities.iterator().next();
250         ToscaTopologyTemplate topologyTemplate = entity.getToscaTopologyTemplate();
251         Map<String, ToscaPolicy> map = topologyTemplate.getPolicies().get(0);
252         ToscaPolicy policy = map.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_HPA_OOF);
253         Map<String, Object> props = policy.getProperties();
254         Object flavorFeatures =
255                       props.get(PolicyDecoderCsarPdpxLifecycleApi.TOSCA_POLICY_FLAVORFEATURES);
256         String features = encoder.encode(flavorFeatures);
257         assertTrue(features.contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
258         assertTrue(features.contains("\"type\":\"flavor_directives\""));
259         assertTrue(features.contains("\"attribute_name\":\"flavorName\""));
260         assertTrue(features.contains("\"attribute_value\":\"\""));
261         assertTrue(features.contains("\"hpa-feature\":\"sriovNICNetwork\""));
262         assertTrue(features.contains("\"mandatory\":\"True\""));
263         assertTrue(features.contains("\"architecture\":\"generic\""));
264         assertTrue(features.contains("\"hpa-version\":\"v1\""));
265         assertTrue(features.contains("\"hpa-attribute-key\":\"pciVendorId\""));
266         assertTrue(features.contains("\"hpa-attribute-value\":\"1234\""));
267         assertTrue(features.contains("\"operator\":\"=\""));
268         assertTrue(features.contains("\"unit\":\"\""));
269     }
270 }