2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2019-2020 Nordix Foundation.
7 * Modifications Copyright (C) 2020 Bell Canada.
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * SPDX-License-Identifier: Apache-2.0
22 * ============LICENSE_END=========================================================
25 package org.onap.policy.api.main.rest.provider;
27 import static org.assertj.core.api.Assertions.assertThat;
28 import static org.assertj.core.api.Assertions.assertThatCode;
29 import static org.assertj.core.api.Assertions.assertThatThrownBy;
30 import static org.junit.Assert.assertEquals;
31 import static org.junit.Assert.assertFalse;
32 import static org.junit.Assert.assertNotNull;
33 import static org.junit.Assert.fail;
35 import java.util.ArrayList;
36 import java.util.Base64;
37 import java.util.Collections;
38 import java.util.List;
39 import org.junit.After;
40 import org.junit.Before;
41 import org.junit.Test;
42 import org.onap.policy.api.main.parameters.ApiParameterGroup;
43 import org.onap.policy.common.parameters.ParameterService;
44 import org.onap.policy.common.utils.coder.CoderException;
45 import org.onap.policy.common.utils.coder.StandardCoder;
46 import org.onap.policy.common.utils.coder.StandardYamlCoder;
47 import org.onap.policy.common.utils.resources.ResourceUtils;
48 import org.onap.policy.models.base.PfModelException;
49 import org.onap.policy.models.pdp.concepts.Pdp;
50 import org.onap.policy.models.pdp.concepts.PdpGroup;
51 import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
52 import org.onap.policy.models.pdp.concepts.PdpSubGroup;
53 import org.onap.policy.models.pdp.enums.PdpHealthStatus;
54 import org.onap.policy.models.pdp.enums.PdpState;
55 import org.onap.policy.models.provider.PolicyModelsProvider;
56 import org.onap.policy.models.provider.PolicyModelsProviderFactory;
57 import org.onap.policy.models.provider.PolicyModelsProviderParameters;
58 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier;
59 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
60 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
63 * This class performs unit test of {@link PolicyProvider}.
65 * @author Chenfei Gao (cgao@research.att.com)
67 public class TestPolicyProvider {
69 private static PolicyProvider policyProvider;
70 private static PolicyTypeProvider policyTypeProvider;
71 private static PolicyModelsProviderParameters providerParams;
72 private static ApiParameterGroup apiParamGroup;
73 private static StandardCoder standardCoder;
74 private static StandardYamlCoder standardYamlCoder;
76 private static final String POLICY_RESOURCE = "policies/vCPE.policy.monitoring.input.tosca.json";
77 private static final String POLICY_TYPE_RESOURCE = "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml";
78 private static final String POLICY_RESOURCE_WITH_BAD_POLICYTYPE_ID = "policies/vCPE.policy.bad.policytypeid.json";
79 private static final String POLICY_RESOURCE_WITH_BAD_POLICYTYPE_VERSION =
80 "policies/vCPE.policy.bad.policytypeversion.json";
81 private static final String POLICY_RESOURCE_WITH_NO_POLICY_VERSION = "policies/vCPE.policy.no.policyversion.json";
82 private static final String POLICY_RESOURCE_WITH_DIFFERENT_FIELDS =
83 "policies/vCPE.policy.different.policy.fields.json";
84 private static final String MULTIPLE_POLICIES_RESOURCE = "policies/vCPE.policies.optimization.input.tosca.json";
86 public static final String POLICY_TYPE_RESOURCE_OPERATIONAL =
87 "policytypes/onap.policies.controlloop.Operational.yaml";
88 public static final String POLICY_TYPE_RESOURCE_OPERATIONAL_COMMON =
89 "policytypes/onap.policies.controlloop.operational.Common.yaml";
90 public static final String POLICY_TYPE_RESOURCE_OPERATIONAL_DROOLS =
91 "policytypes/onap.policies.controlloop.operational.common.Drools.yaml";
92 private static final String POLICY_RESOURCE_OPERATIONAL = "policies/vCPE.policy.operational.input.tosca.json";
93 public static final String POLICY_TYPE_OPERATIONAL_DROOLS = "onap.policies.controlloop.operational.common.Drools";
96 * Initializes parameters.
98 * @throws PfModelException the PfModel parsing exception
101 public void setupParameters() throws PfModelException {
103 standardCoder = new StandardCoder();
104 standardYamlCoder = new StandardYamlCoder();
105 providerParams = new PolicyModelsProviderParameters();
106 providerParams.setDatabaseDriver("org.h2.Driver");
107 providerParams.setDatabaseUrl("jdbc:h2:mem:testdb");
108 providerParams.setDatabaseUser("policy");
109 providerParams.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
110 providerParams.setPersistenceUnit("ToscaConceptTest");
112 new ApiParameterGroup("ApiGroup", null, providerParams, Collections.emptyList(), Collections.emptyList());
113 ParameterService.register(apiParamGroup, true);
114 policyTypeProvider = new PolicyTypeProvider();
115 policyProvider = new PolicyProvider();
119 * Closes up DB connections and deregisters API parameter group.
121 * @throws PfModelException the PfModel parsing exception
124 public void tearDown() throws PfModelException {
126 policyTypeProvider.close();
127 policyProvider.close();
128 ParameterService.deregister(apiParamGroup);
132 public void testFetchPolicies() {
134 assertThatThrownBy(() -> {
135 policyProvider.fetchPolicies("dummy", "1.0.0", null, null, null);
136 }).hasMessage("service template not found in database");
138 assertThatThrownBy(() -> {
139 policyProvider.fetchPolicies("dummy", "1.0.0", "dummy", null, null);
140 }).hasMessage("service template not found in database");
142 assertThatThrownBy(() -> {
143 policyProvider.fetchPolicies("dummy", "1.0.0", "dummy", "1.0.0", null);
144 }).hasMessage("service template not found in database");
146 assertThatThrownBy(() -> {
147 policyProvider.fetchPolicies(null, null, "dummy", "1.0.0", null);
148 }).hasMessage("service template not found in database");
152 public void testFetchLatestPolicies() {
154 assertThatThrownBy(() -> {
155 policyProvider.fetchLatestPolicies("dummy", "dummy", "dummy", null);
156 }).hasMessage("service template not found in database");
160 public void testFetchDeployedPolicies() {
161 String policyId = "onap.restart.tca";
162 String policyVersion = "1.0.0";
163 String policyTypeVersion = "1.0.0";
164 String policyTypeId = "onap.policies.monitoring.cdap.tca.hi.lo.app";
166 try (PolicyModelsProvider databaseProvider =
167 new PolicyModelsProviderFactory().createPolicyModelsProvider(providerParams)) {
168 assertEquals(0, databaseProvider.getPdpGroups("name").size());
169 assertEquals(0, databaseProvider.getFilteredPdpGroups(PdpGroupFilter.builder().build()).size());
171 assertNotNull(databaseProvider.createPdpGroups(new ArrayList<>()));
172 assertNotNull(databaseProvider.updatePdpGroups(new ArrayList<>()));
174 PdpGroup pdpGroup = new PdpGroup();
175 pdpGroup.setName("group");
176 pdpGroup.setVersion("1.2.3");
177 pdpGroup.setPdpGroupState(PdpState.ACTIVE);
178 pdpGroup.setPdpSubgroups(new ArrayList<>());
179 List<PdpGroup> groupList = new ArrayList<>();
180 groupList.add(pdpGroup);
182 PdpSubGroup pdpSubGroup = new PdpSubGroup();
183 pdpSubGroup.setPdpType("type");
184 pdpSubGroup.setDesiredInstanceCount(123);
185 pdpSubGroup.setSupportedPolicyTypes(new ArrayList<>());
186 pdpSubGroup.getSupportedPolicyTypes().add(new ToscaPolicyTypeIdentifier(policyTypeId, policyTypeVersion));
187 pdpGroup.getPdpSubgroups().add(pdpSubGroup);
190 pdp.setInstanceId("type-0");
191 pdp.setMessage("Hello");
192 pdp.setPdpState(PdpState.ACTIVE);
193 pdp.setHealthy(PdpHealthStatus.UNKNOWN);
194 pdpSubGroup.setPdpInstances(new ArrayList<>());
195 pdpSubGroup.getPdpInstances().add(pdp);
199 databaseProvider.createPdpGroups(groupList).get(0).getPdpSubgroups().get(0).getDesiredInstanceCount());
200 assertEquals(1, databaseProvider.getPdpGroups("group").size());
202 // Create Policy Type
203 assertThatCode(() -> {
204 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
205 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
206 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
207 }).doesNotThrowAnyException();
210 assertThatCode(() -> {
211 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
212 ToscaServiceTemplate policyServiceTemplate =
213 standardCoder.decode(policyString, ToscaServiceTemplate.class);
214 ToscaServiceTemplate serviceTemplate =
215 policyProvider.createPolicy(policyTypeId, policyTypeVersion, policyServiceTemplate);
216 assertFalse(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
217 }).doesNotThrowAnyException();
219 // Update pdpSubGroup
220 pdpSubGroup.setPolicies(new ArrayList<>());
221 pdpSubGroup.getPolicies().add(new ToscaPolicyIdentifier(policyId, policyVersion));
223 databaseProvider.createPdpGroups(groupList).get(0).getPdpSubgroups().get(0).getPolicies().size());
225 // Test validateDeleteEligibility exception path(!pdpGroups.isEmpty())
226 assertThatThrownBy(() -> {
227 policyProvider.deletePolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", "onap.restart.tca",
229 }).hasMessageContaining("policy is in use, it is deployed in PDP group group subgroup type");
230 } catch (Exception exc) {
231 fail("Test should not throw an exception");
236 public void testCreatePolicy() throws Exception {
238 assertThatThrownBy(() -> {
239 policyProvider.createPolicy("dummy", "1.0.0", new ToscaServiceTemplate());
240 }).hasMessage("topology template not specified on service template");
242 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
243 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
244 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
246 assertThatCode(() -> policyTypeProvider.createPolicyType(policyTypeServiceTemplate)).doesNotThrowAnyException();
248 assertThatThrownBy(() -> {
249 String badPolicyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_WITH_BAD_POLICYTYPE_ID);
250 ToscaServiceTemplate badPolicyServiceTemplate =
251 standardCoder.decode(badPolicyString, ToscaServiceTemplate.class);
252 policyProvider.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0",
253 badPolicyServiceTemplate);
255 "PolicyType version not specified, the version of the PolicyType for this policy must be specified in the "
256 + "type_version field");
258 assertThatThrownBy(() -> {
259 String badPolicyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_WITH_BAD_POLICYTYPE_VERSION);
260 ToscaServiceTemplate badPolicyServiceTemplate =
261 standardCoder.decode(badPolicyString, ToscaServiceTemplate.class);
262 policyProvider.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0",
263 badPolicyServiceTemplate);
264 }).hasMessageContaining(
265 "policy type onap.policies.monitoring.cdap.tca.hi.lo.app:2.0.0 referenced in policy not found");
267 assertThatThrownBy(() -> {
268 String badPolicyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_WITH_NO_POLICY_VERSION);
269 ToscaServiceTemplate badPolicyServiceTemplate =
270 standardCoder.decode(badPolicyString, ToscaServiceTemplate.class);
271 policyProvider.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0",
272 badPolicyServiceTemplate);
273 }).hasMessageContaining("key version is a null version");
275 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
276 ToscaServiceTemplate policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
277 ToscaServiceTemplate serviceTemplate =
278 policyProvider.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
279 assertFalse(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
281 assertThatThrownBy(() -> {
282 String badPolicyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_WITH_DIFFERENT_FIELDS);
283 ToscaServiceTemplate badPolicyServiceTemplate =
284 standardCoder.decode(badPolicyString, ToscaServiceTemplate.class);
285 policyProvider.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0",
286 badPolicyServiceTemplate);
287 }).hasMessageContaining("entity in incoming fragment does not equal existing entity");
291 public void testCreateOperationalDroolsPolicy() throws CoderException, PfModelException {
292 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
293 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE_OPERATIONAL), ToscaServiceTemplate.class);
295 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
296 policyTypeServiceTemplate = standardYamlCoder.decode(
297 ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE_OPERATIONAL_COMMON), ToscaServiceTemplate.class);
299 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
301 policyTypeServiceTemplate = standardYamlCoder.decode(
302 ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE_OPERATIONAL_DROOLS), ToscaServiceTemplate.class);
303 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
305 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_OPERATIONAL);
306 ToscaServiceTemplate policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
307 ToscaServiceTemplate serviceTemplate =
308 policyProvider.createPolicy(POLICY_TYPE_OPERATIONAL_DROOLS, "1.0.0", policyServiceTemplate);
309 assertFalse(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
313 public void testSimpleCreatePolicy() throws Exception {
315 assertThatThrownBy(() -> {
316 String multiPoliciesString = ResourceUtils.getResourceAsString(MULTIPLE_POLICIES_RESOURCE);
317 ToscaServiceTemplate multiPoliciesServiceTemplate =
318 standardCoder.decode(multiPoliciesString, ToscaServiceTemplate.class);
319 policyProvider.createPolicies(multiPoliciesServiceTemplate);
320 }).hasMessageContaining(
321 "no policy types are defined on the service template for the policies in the topology template");
323 // Create required policy types
324 ToscaServiceTemplate policyTypeServiceTemplate =
325 standardYamlCoder.decode(ResourceUtils.getResourceAsString("policytypes/onap.policies.Optimization.yaml"),
326 ToscaServiceTemplate.class);
327 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
329 policyTypeServiceTemplate = standardYamlCoder.decode(
330 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.Resource.yaml"),
331 ToscaServiceTemplate.class);
332 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
334 policyTypeServiceTemplate = standardYamlCoder.decode(
335 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.resource.AffinityPolicy.yaml"),
336 ToscaServiceTemplate.class);
337 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
339 policyTypeServiceTemplate = standardYamlCoder.decode(
340 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.resource.DistancePolicy.yaml"),
341 ToscaServiceTemplate.class);
342 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
344 policyTypeServiceTemplate = standardYamlCoder.decode(
345 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.resource.Vim_fit.yaml"),
346 ToscaServiceTemplate.class);
347 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
349 policyTypeServiceTemplate = standardYamlCoder.decode(
350 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.resource.HpaPolicy.yaml"),
351 ToscaServiceTemplate.class);
352 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
354 policyTypeServiceTemplate = standardYamlCoder.decode(
355 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.resource.VnfPolicy.yaml"),
356 ToscaServiceTemplate.class);
357 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
359 policyTypeServiceTemplate = standardYamlCoder.decode(
360 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.Service.yaml"),
361 ToscaServiceTemplate.class);
362 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
364 policyTypeServiceTemplate = standardYamlCoder.decode(
365 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.service.SubscriberPolicy.yaml"),
366 ToscaServiceTemplate.class);
367 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
369 policyTypeServiceTemplate = standardYamlCoder.decode(
370 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.service.QueryPolicy.yaml"),
371 ToscaServiceTemplate.class);
372 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
374 policyTypeServiceTemplate = standardYamlCoder.decode(
375 ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml"),
376 ToscaServiceTemplate.class);
377 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
379 // Create multiple policies in one call
380 String multiPoliciesString = ResourceUtils.getResourceAsString(MULTIPLE_POLICIES_RESOURCE);
381 ToscaServiceTemplate multiPoliciesServiceTemplate =
382 standardCoder.decode(multiPoliciesString, ToscaServiceTemplate.class);
384 assertThatCode(() -> {
385 policyProvider.createPolicies(multiPoliciesServiceTemplate);
386 policyProvider.createPolicies(multiPoliciesServiceTemplate);
387 }).doesNotThrowAnyException();
391 public void testDeletePolicy() {
393 assertThatThrownBy(() -> {
394 policyProvider.deletePolicy("dummy", "1.0.0", "dummy", "1.0.0");
395 }).hasMessage("service template not found in database");
397 assertThatCode(() -> {
398 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
399 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
400 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
401 }).doesNotThrowAnyException();
403 assertThatCode(() -> {
404 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
405 ToscaServiceTemplate policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
406 ToscaServiceTemplate serviceTemplate = policyProvider
407 .createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
408 assertFalse(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
409 }).doesNotThrowAnyException();
411 assertThatCode(() -> {
412 ToscaServiceTemplate serviceTemplate = policyProvider
413 .deletePolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", "onap.restart.tca", "1.0.0");
414 assertFalse(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
415 }).doesNotThrowAnyException();
417 assertThatThrownBy(() -> {
418 policyProvider.deletePolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", "onap.restart.tca",
420 }).hasMessageContaining("no policies found");
424 public void testFetchAllPolicies() throws Exception {
425 // Create Policy Type
426 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
427 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
428 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
431 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
432 ToscaServiceTemplate policyServiceTemplate =
433 standardCoder.decode(policyString, ToscaServiceTemplate.class);
434 ToscaServiceTemplate serviceTemplate = policyProvider.createPolicy(
435 "onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
437 assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
439 // Test fetch all policies
440 policyTypeServiceTemplate = policyProvider
441 .fetchPolicies(null, null, null, null, null);
443 assertThat(policyTypeServiceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
447 public void testFetchSpecificPolicy_availablePolicy() throws Exception {
448 // Create Policy Type
449 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
450 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
451 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
454 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
455 ToscaServiceTemplate policyServiceTemplate =
456 standardCoder.decode(policyString, ToscaServiceTemplate.class);
457 ToscaServiceTemplate serviceTemplate = policyProvider.createPolicy(
458 "onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
460 assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
462 // Test fetch specific policy
463 assertThat(policyProvider.fetchPolicies(null, null, "onap.restart.tca",
464 "1.0.0", null).getToscaTopologyTemplate().getPolicies()).hasSize(1);
468 public void testFetchSpecificPolicy_unavailablePolicy() throws Exception {
469 // Create Policy Type
470 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
471 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
472 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
475 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
476 ToscaServiceTemplate policyServiceTemplate =
477 standardCoder.decode(policyString, ToscaServiceTemplate.class);
478 ToscaServiceTemplate serviceTemplate = policyProvider.createPolicy(
479 "onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
480 assertNotNull(serviceTemplate.getToscaTopologyTemplate().getPolicies());
481 assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
483 // Test fetch specific policy
484 assertThatThrownBy(() -> policyProvider.fetchPolicies(
485 null, null, "onap.restart.tca", "2.0.0", null))
486 .hasMessageContaining("policies for onap.restart.tca:2.0.0 do not exist");
490 public void testDeleteSpecificPolicy_availablePolicy() throws Exception {
491 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
492 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
493 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
495 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
496 ToscaServiceTemplate policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
497 ToscaServiceTemplate serviceTemplate = policyProvider.createPolicy(
498 "onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
499 assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
501 ToscaServiceTemplate svcTemplate = policyProvider
502 .deletePolicy(null, null, "onap.restart.tca", "1.0.0");
503 assertThat(svcTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
507 public void testDeleteSpecificPolicy_unavailablePolicy() throws Exception {
508 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
509 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
510 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
512 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
513 ToscaServiceTemplate policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
514 ToscaServiceTemplate serviceTemplate = policyProvider.createPolicy(
515 "onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
516 assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
518 assertThatThrownBy(() -> policyProvider
519 .deletePolicy(null, null, "onap.restart.tca", "2.0.0"))
520 .hasMessageContaining("not found");
522 assertThatThrownBy(() -> policyProvider.deletePolicy(
523 null, null, "onap.restart.tca.unavailable", "1.0.0"))
524 .hasMessageContaining("not found");