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_COMMON =
87 "policytypes/onap.policies.controlloop.operational.Common.yaml";
88 public static final String POLICY_TYPE_RESOURCE_OPERATIONAL_DROOLS =
89 "policytypes/onap.policies.controlloop.operational.common.Drools.yaml";
90 private static final String POLICY_RESOURCE_OPERATIONAL = "policies/vCPE.policy.operational.input.tosca.json";
91 public static final String POLICY_TYPE_OPERATIONAL_DROOLS = "onap.policies.controlloop.operational.common.Drools";
94 * Initializes parameters.
96 * @throws PfModelException the PfModel parsing exception
99 public void setupParameters() throws PfModelException {
101 standardCoder = new StandardCoder();
102 standardYamlCoder = new StandardYamlCoder();
103 providerParams = new PolicyModelsProviderParameters();
104 providerParams.setDatabaseDriver("org.h2.Driver");
105 providerParams.setDatabaseUrl("jdbc:h2:mem:testdb");
106 providerParams.setDatabaseUser("policy");
107 providerParams.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes()));
108 providerParams.setPersistenceUnit("ToscaConceptTest");
110 new ApiParameterGroup("ApiGroup", null, providerParams, Collections.emptyList(), Collections.emptyList());
111 ParameterService.register(apiParamGroup, true);
112 policyTypeProvider = new PolicyTypeProvider();
113 policyProvider = new PolicyProvider();
117 * Closes up DB connections and deregisters API parameter group.
119 * @throws PfModelException the PfModel parsing exception
122 public void tearDown() throws PfModelException {
124 policyTypeProvider.close();
125 policyProvider.close();
126 ParameterService.deregister(apiParamGroup);
130 public void testFetchPolicies() {
132 assertThatThrownBy(() -> {
133 policyProvider.fetchPolicies("dummy", "1.0.0", null, null, null);
134 }).hasMessage("service template not found in database");
136 assertThatThrownBy(() -> {
137 policyProvider.fetchPolicies("dummy", "1.0.0", "dummy", null, null);
138 }).hasMessage("service template not found in database");
140 assertThatThrownBy(() -> {
141 policyProvider.fetchPolicies("dummy", "1.0.0", "dummy", "1.0.0", null);
142 }).hasMessage("service template not found in database");
144 assertThatThrownBy(() -> {
145 policyProvider.fetchPolicies(null, null, "dummy", "1.0.0", null);
146 }).hasMessage("service template not found in database");
150 public void testFetchLatestPolicies() {
152 assertThatThrownBy(() -> {
153 policyProvider.fetchLatestPolicies("dummy", "dummy", "dummy", null);
154 }).hasMessage("service template not found in database");
158 public void testFetchDeployedPolicies() {
159 String policyId = "onap.restart.tca";
160 String policyVersion = "1.0.0";
161 String policyTypeVersion = "1.0.0";
162 String policyTypeId = "onap.policies.monitoring.cdap.tca.hi.lo.app";
164 try (PolicyModelsProvider databaseProvider =
165 new PolicyModelsProviderFactory().createPolicyModelsProvider(providerParams)) {
166 assertEquals(0, databaseProvider.getPdpGroups("name").size());
167 assertEquals(0, databaseProvider.getFilteredPdpGroups(PdpGroupFilter.builder().build()).size());
169 assertNotNull(databaseProvider.createPdpGroups(new ArrayList<>()));
170 assertNotNull(databaseProvider.updatePdpGroups(new ArrayList<>()));
172 PdpGroup pdpGroup = new PdpGroup();
173 pdpGroup.setName("group");
174 pdpGroup.setVersion("1.2.3");
175 pdpGroup.setPdpGroupState(PdpState.ACTIVE);
176 pdpGroup.setPdpSubgroups(new ArrayList<>());
177 List<PdpGroup> groupList = new ArrayList<>();
178 groupList.add(pdpGroup);
180 PdpSubGroup pdpSubGroup = new PdpSubGroup();
181 pdpSubGroup.setPdpType("type");
182 pdpSubGroup.setDesiredInstanceCount(123);
183 pdpSubGroup.setSupportedPolicyTypes(new ArrayList<>());
184 pdpSubGroup.getSupportedPolicyTypes().add(new ToscaPolicyTypeIdentifier(policyTypeId, policyTypeVersion));
185 pdpGroup.getPdpSubgroups().add(pdpSubGroup);
188 pdp.setInstanceId("type-0");
189 pdp.setMessage("Hello");
190 pdp.setPdpState(PdpState.ACTIVE);
191 pdp.setHealthy(PdpHealthStatus.UNKNOWN);
192 pdpSubGroup.setPdpInstances(new ArrayList<>());
193 pdpSubGroup.getPdpInstances().add(pdp);
197 databaseProvider.createPdpGroups(groupList).get(0).getPdpSubgroups().get(0).getDesiredInstanceCount());
198 assertEquals(1, databaseProvider.getPdpGroups("group").size());
200 // Create Policy Type
201 assertThatCode(() -> {
202 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
203 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
204 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
205 }).doesNotThrowAnyException();
208 assertThatCode(() -> {
209 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
210 ToscaServiceTemplate policyServiceTemplate =
211 standardCoder.decode(policyString, ToscaServiceTemplate.class);
212 ToscaServiceTemplate serviceTemplate =
213 policyProvider.createPolicy(policyTypeId, policyTypeVersion, policyServiceTemplate);
214 assertFalse(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
215 }).doesNotThrowAnyException();
217 // Update pdpSubGroup
218 pdpSubGroup.setPolicies(new ArrayList<>());
219 pdpSubGroup.getPolicies().add(new ToscaPolicyIdentifier(policyId, policyVersion));
221 databaseProvider.createPdpGroups(groupList).get(0).getPdpSubgroups().get(0).getPolicies().size());
223 // Test validateDeleteEligibility exception path(!pdpGroups.isEmpty())
224 assertThatThrownBy(() -> {
225 policyProvider.deletePolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", "onap.restart.tca",
227 }).hasMessageContaining("policy is in use, it is deployed in PDP group group subgroup type");
228 } catch (Exception exc) {
229 fail("Test should not throw an exception");
234 public void testCreatePolicy() throws Exception {
236 assertThatThrownBy(() -> {
237 policyProvider.createPolicy("dummy", "1.0.0", new ToscaServiceTemplate());
238 }).hasMessage("topology template not specified on service template");
240 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
241 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
242 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
244 assertThatCode(() -> policyTypeProvider.createPolicyType(policyTypeServiceTemplate)).doesNotThrowAnyException();
246 assertThatThrownBy(() -> {
247 String badPolicyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_WITH_BAD_POLICYTYPE_ID);
248 ToscaServiceTemplate badPolicyServiceTemplate =
249 standardCoder.decode(badPolicyString, ToscaServiceTemplate.class);
250 policyProvider.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0",
251 badPolicyServiceTemplate);
253 "PolicyType version not specified, the version of the PolicyType for this policy must be specified in the "
254 + "type_version field");
256 assertThatThrownBy(() -> {
257 String badPolicyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_WITH_BAD_POLICYTYPE_VERSION);
258 ToscaServiceTemplate badPolicyServiceTemplate =
259 standardCoder.decode(badPolicyString, ToscaServiceTemplate.class);
260 policyProvider.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0",
261 badPolicyServiceTemplate);
262 }).hasMessageContaining(
263 "policy type onap.policies.monitoring.cdap.tca.hi.lo.app:2.0.0 referenced in policy not found");
265 assertThatThrownBy(() -> {
266 String badPolicyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_WITH_NO_POLICY_VERSION);
267 ToscaServiceTemplate badPolicyServiceTemplate =
268 standardCoder.decode(badPolicyString, ToscaServiceTemplate.class);
269 policyProvider.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0",
270 badPolicyServiceTemplate);
271 }).hasMessageContaining("key version is a null version");
273 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
274 ToscaServiceTemplate policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
275 ToscaServiceTemplate serviceTemplate =
276 policyProvider.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
277 assertFalse(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
279 assertThatThrownBy(() -> {
280 String badPolicyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_WITH_DIFFERENT_FIELDS);
281 ToscaServiceTemplate badPolicyServiceTemplate =
282 standardCoder.decode(badPolicyString, ToscaServiceTemplate.class);
283 policyProvider.createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0",
284 badPolicyServiceTemplate);
285 }).hasMessageContaining("entity in incoming fragment does not equal existing entity");
289 public void testCreateOperationalDroolsPolicy() throws CoderException, PfModelException {
290 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder.decode(
291 ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE_OPERATIONAL_COMMON), ToscaServiceTemplate.class);
293 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
295 policyTypeServiceTemplate = standardYamlCoder.decode(
296 ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE_OPERATIONAL_DROOLS), ToscaServiceTemplate.class);
297 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
299 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE_OPERATIONAL);
300 ToscaServiceTemplate policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
301 ToscaServiceTemplate serviceTemplate =
302 policyProvider.createPolicy(POLICY_TYPE_OPERATIONAL_DROOLS, "1.0.0", policyServiceTemplate);
303 assertFalse(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
307 public void testSimpleCreatePolicy() throws Exception {
309 assertThatThrownBy(() -> {
310 String multiPoliciesString = ResourceUtils.getResourceAsString(MULTIPLE_POLICIES_RESOURCE);
311 ToscaServiceTemplate multiPoliciesServiceTemplate =
312 standardCoder.decode(multiPoliciesString, ToscaServiceTemplate.class);
313 policyProvider.createPolicies(multiPoliciesServiceTemplate);
314 }).hasMessageContaining(
315 "no policy types are defined on the service template for the policies in the topology template");
317 // Create required policy types
318 ToscaServiceTemplate policyTypeServiceTemplate =
319 standardYamlCoder.decode(ResourceUtils.getResourceAsString("policytypes/onap.policies.Optimization.yaml"),
320 ToscaServiceTemplate.class);
321 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
323 policyTypeServiceTemplate = standardYamlCoder.decode(
324 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.Resource.yaml"),
325 ToscaServiceTemplate.class);
326 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
328 policyTypeServiceTemplate = standardYamlCoder.decode(
329 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.resource.AffinityPolicy.yaml"),
330 ToscaServiceTemplate.class);
331 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
333 policyTypeServiceTemplate = standardYamlCoder.decode(
334 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.resource.DistancePolicy.yaml"),
335 ToscaServiceTemplate.class);
336 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
338 policyTypeServiceTemplate = standardYamlCoder.decode(
339 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.resource.Vim_fit.yaml"),
340 ToscaServiceTemplate.class);
341 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
343 policyTypeServiceTemplate = standardYamlCoder.decode(
344 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.resource.HpaPolicy.yaml"),
345 ToscaServiceTemplate.class);
346 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
348 policyTypeServiceTemplate = standardYamlCoder.decode(
349 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.resource.VnfPolicy.yaml"),
350 ToscaServiceTemplate.class);
351 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
353 policyTypeServiceTemplate = standardYamlCoder.decode(
354 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.Service.yaml"),
355 ToscaServiceTemplate.class);
356 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
358 policyTypeServiceTemplate = standardYamlCoder.decode(
359 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.service.SubscriberPolicy.yaml"),
360 ToscaServiceTemplate.class);
361 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
363 policyTypeServiceTemplate = standardYamlCoder.decode(
364 ResourceUtils.getResourceAsString("policytypes/onap.policies.optimization.service.QueryPolicy.yaml"),
365 ToscaServiceTemplate.class);
366 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
368 policyTypeServiceTemplate = standardYamlCoder.decode(
369 ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml"),
370 ToscaServiceTemplate.class);
371 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
373 // Create multiple policies in one call
374 String multiPoliciesString = ResourceUtils.getResourceAsString(MULTIPLE_POLICIES_RESOURCE);
375 ToscaServiceTemplate multiPoliciesServiceTemplate =
376 standardCoder.decode(multiPoliciesString, ToscaServiceTemplate.class);
378 assertThatCode(() -> {
379 policyProvider.createPolicies(multiPoliciesServiceTemplate);
380 policyProvider.createPolicies(multiPoliciesServiceTemplate);
381 }).doesNotThrowAnyException();
385 public void testDeletePolicy() {
387 assertThatThrownBy(() -> {
388 policyProvider.deletePolicy("dummy", "1.0.0", "dummy", "1.0.0");
389 }).hasMessage("service template not found in database");
391 assertThatCode(() -> {
392 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
393 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
394 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
395 }).doesNotThrowAnyException();
397 assertThatCode(() -> {
398 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
399 ToscaServiceTemplate policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
400 ToscaServiceTemplate serviceTemplate = policyProvider
401 .createPolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
402 assertFalse(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
403 }).doesNotThrowAnyException();
405 assertThatCode(() -> {
406 ToscaServiceTemplate serviceTemplate = policyProvider
407 .deletePolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", "onap.restart.tca", "1.0.0");
408 assertFalse(serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).isEmpty());
409 }).doesNotThrowAnyException();
411 assertThatThrownBy(() -> {
412 policyProvider.deletePolicy("onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", "onap.restart.tca",
414 }).hasMessageContaining("no policies found");
418 public void testFetchAllPolicies() throws Exception {
419 // Create Policy Type
420 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
421 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
422 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
425 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
426 ToscaServiceTemplate policyServiceTemplate =
427 standardCoder.decode(policyString, ToscaServiceTemplate.class);
428 ToscaServiceTemplate serviceTemplate = policyProvider.createPolicy(
429 "onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
431 assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
433 // Test fetch all policies
434 policyTypeServiceTemplate = policyProvider
435 .fetchPolicies(null, null, null, null, null);
437 assertThat(policyTypeServiceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
441 public void testFetchSpecificPolicy_availablePolicy() throws Exception {
442 // Create Policy Type
443 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
444 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
445 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
448 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
449 ToscaServiceTemplate policyServiceTemplate =
450 standardCoder.decode(policyString, ToscaServiceTemplate.class);
451 ToscaServiceTemplate serviceTemplate = policyProvider.createPolicy(
452 "onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
454 assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
456 // Test fetch specific policy
457 assertThat(policyProvider.fetchPolicies(null, null, "onap.restart.tca",
458 "1.0.0", null).getToscaTopologyTemplate().getPolicies()).hasSize(1);
462 public void testFetchSpecificPolicy_unavailablePolicy() throws Exception {
463 // Create Policy Type
464 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
465 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
466 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
469 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
470 ToscaServiceTemplate policyServiceTemplate =
471 standardCoder.decode(policyString, ToscaServiceTemplate.class);
472 ToscaServiceTemplate serviceTemplate = policyProvider.createPolicy(
473 "onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
474 assertNotNull(serviceTemplate.getToscaTopologyTemplate().getPolicies());
475 assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
477 // Test fetch specific policy
478 assertThatThrownBy(() -> policyProvider.fetchPolicies(
479 null, null, "onap.restart.tca", "2.0.0", null))
480 .hasMessageContaining("policies for onap.restart.tca:2.0.0 do not exist");
484 public void testDeleteSpecificPolicy_availablePolicy() throws Exception {
485 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
486 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
487 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
489 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
490 ToscaServiceTemplate policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
491 ToscaServiceTemplate serviceTemplate = policyProvider.createPolicy(
492 "onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
493 assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
495 ToscaServiceTemplate svcTemplate = policyProvider
496 .deletePolicy(null, null, "onap.restart.tca", "1.0.0");
497 assertThat(svcTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
501 public void testDeleteSpecificPolicy_unavailablePolicy() throws Exception {
502 ToscaServiceTemplate policyTypeServiceTemplate = standardYamlCoder
503 .decode(ResourceUtils.getResourceAsString(POLICY_TYPE_RESOURCE), ToscaServiceTemplate.class);
504 policyTypeProvider.createPolicyType(policyTypeServiceTemplate);
506 String policyString = ResourceUtils.getResourceAsString(POLICY_RESOURCE);
507 ToscaServiceTemplate policyServiceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class);
508 ToscaServiceTemplate serviceTemplate = policyProvider.createPolicy(
509 "onap.policies.monitoring.cdap.tca.hi.lo.app", "1.0.0", policyServiceTemplate);
510 assertThat(serviceTemplate.getToscaTopologyTemplate().getPolicies()).hasSize(1);
512 assertThatThrownBy(() -> policyProvider
513 .deletePolicy(null, null, "onap.restart.tca", "2.0.0"))
514 .hasMessageContaining("not found");
516 assertThatThrownBy(() -> policyProvider.deletePolicy(
517 null, null, "onap.restart.tca.unavailable", "1.0.0"))
518 .hasMessageContaining("not found");