From 00b77b9ed6de5779212fecd30b71ebb615f89c3c Mon Sep 17 00:00:00 2001 From: mmis Date: Fri, 14 Sep 2018 09:00:25 +0100 Subject: Aligned decoder with forwarder for opt. policies Changed decoder for optimization policies to generate instance of OptimizationPolicy (instead of PdpxPolicy) as expected by the forwarder. Without this change there is a mismatch between the decoder and the forwarder. Added parameters for configuring the static elements of the optimization policies and setting of these elements. Issue-ID: POLICY-927 Change-Id: Ib91a905dc89eed13622fb88e4dd19b3cb9f62c75 Signed-off-by: mmis --- .../reception/decoding/pdpx/ConfigBody.java | 97 +++++++ .../reception/decoding/pdpx/ExtractFromNode.java | 51 ++-- .../decoding/pdpx/PolicyDecoderCsarPdpx.java | 36 ++- ...coderCsarPdpxConfigurationParameterBuilder.java | 95 +++++++ ...DecoderCsarPdpxConfigurationParameterGroup.java | 112 ++++++++ ...eceptionHandlerConfigurationParameterGroup.java | 20 +- .../reception/decoding/pdpx/TestAttribute.java | 2 +- .../reception/decoding/pdpx/TestContent.java | 6 +- .../reception/decoding/pdpx/TestDirective.java | 2 +- .../reception/decoding/pdpx/TestFlavorFeature.java | 2 +- .../decoding/pdpx/TestFlavorProperty.java | 4 +- .../decoding/pdpx/TestHpaFeatureAttribute.java | 4 +- .../decoding/pdpx/TestPolicyDecoderCsarPdpx.java | 307 ++++++++++----------- 13 files changed, 518 insertions(+), 220 deletions(-) create mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ConfigBody.java create mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterBuilder.java create mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterGroup.java (limited to 'plugins/reception-plugins/src') diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ConfigBody.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ConfigBody.java new file mode 100644 index 00000000..72d9bd2b --- /dev/null +++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ConfigBody.java @@ -0,0 +1,97 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.distribution.reception.decoding.pdpx; + +public class ConfigBody { + + private String service; + private String description; + private String version; + private String priority; + private String riskType; + private String riskLevel; + private String guard; + private Content content; + + public String getService() { + return service; + } + + public void setService(String service) { + this.service = service; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getPriority() { + return priority; + } + + public void setPriority(String priority) { + this.priority = priority; + } + + public String getRiskType() { + return riskType; + } + + public void setRiskType(String riskType) { + this.riskType = riskType; + } + + public String getRiskLevel() { + return riskLevel; + } + + public void setRiskLevel(String riskLevel) { + this.riskLevel = riskLevel; + } + + public String getGuard() { + return guard; + } + + public void setGuard(String guard) { + this.guard = guard; + } + + public Content getContent() { + return content; + } + + public void setContent(Content content) { + this.content = content; + } +} diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ExtractFromNode.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ExtractFromNode.java index 1d0f621b..7c839a28 100644 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ExtractFromNode.java +++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/ExtractFromNode.java @@ -20,15 +20,12 @@ package org.onap.policy.distribution.reception.decoding.pdpx; -import java.io.FileWriter; -import java.io.Writer; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.HashMap; import java.util.regex.Matcher; import java.util.regex.Pattern; - import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; @@ -76,14 +73,16 @@ public class ExtractFromNode { } /** - * ExtractInfo from VNF , each VNF may includes more than one VDUs and CPs return new generated PdpxPolicy if it has - * got Hpa feature info or else return null. + * ExtractInfo from VNF , each VNF may includes more than one VDUs and CPs return new generated + * PdpxPolicy if it has got Hpa feature info or else return null. * * @param node the NodeTemplate + * * @return the extracted info from input node + * * @throws PolicyDecodingException if extract fails */ - public PdpxPolicy extractInfo(final NodeTemplate node) throws PolicyDecodingException { + public Content extractInfo(final NodeTemplate node) throws PolicyDecodingException { LOGGER.debug("the meta data of this nodetemplate = " + sdcCsarHelper.getNodeTemplateMetadata(node)); final List lnodeChild = sdcCsarHelper.getNodeTemplateChildren(node); @@ -106,31 +105,23 @@ public class ExtractFromNode { LOGGER.debug("the size of vdu is =" + lnodeVdu.size()); LOGGER.debug("the size of cp is =" + lnodeVduCp.size()); - final PdpxPolicy pdpxPolicy = new PdpxPolicy(); - final Content content = pdpxPolicy.getContent(); + final Content content = new Content(); extractInfoVdu(lnodeVdu, content); extractInfoVduCp(lnodeVduCp, content); if (content.getFlavorFeatures().isEmpty()) { return null; } - String outputFile = sdcCsarHelper.getNodeTemplateMetadata(node).getValue("name"); - outputFile += ".json"; - LOGGER.debug("outputFile = " + outputFile); - try (Writer writer = new FileWriter(outputFile)) { - gson.toJson(pdpxPolicy, writer); - } catch (final Exception exp) { - final String message = "Failed writing generated policies to file"; - LOGGER.error(message, exp); - throw new PolicyDecodingException(message, exp); - } - return pdpxPolicy; + + return content; } /** - * ExtractInfofromVdu, supported hpa features, All under the capability of tosca.nodes.nfv.Vdu.Compute. + * ExtractInfofromVdu, supported hpa features, All under the capability of + * tosca.nodes.nfv.Vdu.Compute. * * @param lnodeVdu the list of Vdu node + * * @param content to be change based on lnodeVdu */ public void extractInfoVdu(final List lnodeVdu, final Content content) { @@ -158,9 +149,11 @@ public class ExtractFromNode { } /** - * GenerateBasicCapability, supported hpa features, All under the capability of tosca.nodes.nfv.Vdu.Compute. + * GenerateBasicCapability, supported hpa features, All under the capability of + * tosca.nodes.nfv.Vdu.Compute. * * @param capabilityAssignment represents the capability of node + * * @param flavorFeature represents all the features of specified flavor */ private void generateBasicCapability(final CapabilityAssignment capabilityAssignment, FlavorFeature flavorFeature){ @@ -195,11 +188,14 @@ public class ExtractFromNode { } /** - * GenerateHpaFeatureAttribute based on the value of featureValue. the format: "hpa-attribute-key": "pciVendorId", - * "hpa-attribute-value": "1234", "operator": "=", "unit": "xxx". + * GenerateHpaFeatureAttribute based on the value of featureValue. the format: + * "hpa-attribute-key": "pciVendorId", "hpa-attribute-value": "1234", "operator": "=", "unit": + * "xxx". * * @param hpaAttributeKey get from the high layer tosca DM + * * @param featureValue get from the high layer tosca DM + * */ private HpaFeatureAttribute generateHpaFeatureAttribute(final String hpaAttributeKey, final String featureValue) { //based on input featureValue, return back a suitable hpaFeatureAttribute @@ -221,11 +217,13 @@ public class ExtractFromNode { } /** - * GenerateHugePages, supported hpa features, All under the capability of tosca.nodes.nfv.Vdu.Compute. The format is - * a map like: {"schema-version": "0", "schema-location": "", "platform-id": "generic", "mandatory": true, - * "configuration-value": "2 MB"} + * GenerateHugePages, supported hpa features, All under the capability of + * tosca.nodes.nfv.Vdu.Compute. The format is a map like: {"schema-version": "0", + * "schema-location": "", "platform-id": "generic", "mandatory": true, "configuration-value": "2 + * MB"} * * @param capabilityAssignment represents the capability of node + * * @param flavorFeature represents all the features of specified flavor */ private void generateHugePages(final CapabilityAssignment capabilityAssignment, FlavorFeature flavorFeature){ @@ -255,6 +253,7 @@ public class ExtractFromNode { * tosca.nodes.nfv.VduCp. * * @param lnodeVduCp the list of VduCp node + * * @param content to be change based on lnodeVduCp * @throws PolicyDecodingException if extract CP fails */ diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpx.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpx.java index 03f0c041..030c470b 100644 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpx.java +++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpx.java @@ -20,14 +20,17 @@ package org.onap.policy.distribution.reception.decoding.pdpx; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.List; - import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; +import org.onap.policy.common.parameters.ParameterService; import org.onap.policy.distribution.model.Csar; +import org.onap.policy.distribution.model.OptimizationPolicy; import org.onap.policy.distribution.model.PolicyInput; import org.onap.policy.distribution.reception.decoding.PolicyDecoder; import org.onap.policy.distribution.reception.decoding.PolicyDecodingException; @@ -38,25 +41,40 @@ import org.onap.sdc.toscaparser.api.NodeTemplate; /** * Decodes PDP-X policies from a CSAR file. */ -public class PolicyDecoderCsarPdpx implements PolicyDecoder { +public class PolicyDecoderCsarPdpx implements PolicyDecoder { private static final Logger LOGGER = FlexLogger.getLogger(PolicyDecoderCsarPdpx.class); + private final Gson gson = new GsonBuilder().serializeNulls().disableHtmlEscaping().create(); + private PolicyDecoderCsarPdpxConfigurationParameterGroup decoderParameters; @Override - public Collection decode(final Csar csar) throws PolicyDecodingException { - final List lPdpxPolicy = new ArrayList<>(); + public Collection decode(final Csar csar) throws PolicyDecodingException { + final List policys = new ArrayList<>(); final ISdcCsarHelper sdcCsarHelper = parseCsar(csar); final List lnodeVf = sdcCsarHelper.getServiceVfList(); LOGGER.debug("the size of Vf = " + lnodeVf.size()); final ExtractFromNode extractFromNode = new ExtractFromNode(); extractFromNode.setSdcCsarHelper(sdcCsarHelper); for (final NodeTemplate node : lnodeVf) { - final PdpxPolicy ret = extractFromNode.extractInfo(node); - if (ret != null) { - lPdpxPolicy.add(ret); + final Content content = extractFromNode.extractInfo(node); + if (content != null) { + final OptimizationPolicy policy = new OptimizationPolicy(); + policy.setOnapName(decoderParameters.getOnapName()); + policy.setPolicyName(decoderParameters.getPolicyNamePrefix() + "." + content.getIdentity()); + ConfigBody configBody = new ConfigBody(); + configBody.setService("hpaPolicy"); + configBody.setDescription("OOF Policy"); + configBody.setVersion(decoderParameters.getVersion()); + configBody.setPriority(decoderParameters.getPriority()); + configBody.setRiskLevel(decoderParameters.getRiskLevel()); + configBody.setRiskType(decoderParameters.getRiskType()); + configBody.setGuard("false"); + configBody.setContent(content); + policy.setConfigBody(gson.toJson(configBody)); + policys.add(policy); } } - return lPdpxPolicy; + return policys; } @Override @@ -88,6 +106,6 @@ public class PolicyDecoderCsarPdpx implements PolicyDecoder { @Override public void configure(final String parameterGroupName) { - throw new UnsupportedOperationException("The method is not supprted"); + decoderParameters = ParameterService.get(parameterGroupName); } } diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterBuilder.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterBuilder.java new file mode 100644 index 00000000..199d582b --- /dev/null +++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterBuilder.java @@ -0,0 +1,95 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.distribution.reception.decoding.pdpx; + +/** + * This class builds an instance of {@link PolicyDecodeCsarPdpxConfigurationParameterGroup} class. + */ +public class PolicyDecoderCsarPdpxConfigurationParameterBuilder { + + private String policyNamePrefix; + private String onapName; + private String version; + private String priority; + private String riskType; + private String riskLevel; + + public PolicyDecoderCsarPdpxConfigurationParameterBuilder setPolicyNamePrefix(final String policyNamePrefix) { + this.policyNamePrefix = policyNamePrefix; + return this; + } + + public PolicyDecoderCsarPdpxConfigurationParameterBuilder setOnapName(final String onapName) { + this.onapName = onapName; + return this; + } + + public PolicyDecoderCsarPdpxConfigurationParameterBuilder setVersion(final String version) { + this.version = version; + return this; + } + + public PolicyDecoderCsarPdpxConfigurationParameterBuilder setPriority(final String priority) { + this.priority = priority; + return this; + } + + public PolicyDecoderCsarPdpxConfigurationParameterBuilder setRiskType(final String riskType) { + this.riskType = riskType; + return this; + } + + public PolicyDecoderCsarPdpxConfigurationParameterBuilder setRiskLevel(final String riskLevel) { + this.riskLevel = riskLevel; + return this; + } + + public PolicyDecoderCsarPdpxConfigurationParameterGroup build() { + return new PolicyDecoderCsarPdpxConfigurationParameterGroup(this); + } + + public String getPolicyNamePrefix() { + return policyNamePrefix; + } + + public String getOnapName() { + return onapName; + } + + public String getVersion() { + return version; + } + + public String getPriority() { + return priority; + } + + public String getRiskType() { + return riskType; + } + + public String getRiskLevel() { + return riskLevel; + } + +} + + diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterGroup.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterGroup.java new file mode 100644 index 00000000..d785b827 --- /dev/null +++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PolicyDecoderCsarPdpxConfigurationParameterGroup.java @@ -0,0 +1,112 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2018 Intel. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.distribution.reception.decoding.pdpx; + +import org.onap.policy.common.parameters.GroupValidationResult; +import org.onap.policy.common.parameters.ValidationStatus; +import org.onap.policy.common.utils.validation.ParameterValidationUtils; +import org.onap.policy.distribution.reception.handling.sdc.SdcReceptionHandlerConfigurationParameterGroup; +import org.onap.policy.distribution.reception.parameters.PolicyDecoderConfigurationParameterGroup; + +/** + * This class handles reading, parsing and validating of the paramaters for the + * {@link PolicyDecoderCsarPdpx} + */ +public class PolicyDecoderCsarPdpxConfigurationParameterGroup extends PolicyDecoderConfigurationParameterGroup { + + private String policyNamePrefix; + private String onapName; + private String version; + private String priority; + private String riskType; + private String riskLevel; + + /** + * The constructor for instantiating {@link SdcReceptionHandlerConfigurationParameterGroup} + * class. + * + * @param builder the SDC configuration builder + */ + public PolicyDecoderCsarPdpxConfigurationParameterGroup( + final PolicyDecoderCsarPdpxConfigurationParameterBuilder builder) { + policyNamePrefix = builder.getPolicyNamePrefix(); + onapName = builder.getOnapName(); + version = builder.getVersion(); + priority = builder.getPriority(); + riskType = builder.getRiskType(); + riskLevel = builder.getRiskLevel(); + } + + public String getPolicyNamePrefix() { + return policyNamePrefix; + } + + public String getOnapName() { + return onapName; + } + + public String getVersion() { + return version; + } + + public String getPriority() { + return priority; + } + + public String getRiskType() { + return riskType; + } + + public String getRiskLevel() { + return riskLevel; + } + + /** + * {@inheritDoc} + */ + @Override + public GroupValidationResult validate() { + final GroupValidationResult validationResult = new GroupValidationResult(this); + validateStringElement(validationResult, policyNamePrefix, "policyNamePrefix"); + validateStringElement(validationResult, onapName, "onapName"); + validateStringElement(validationResult, version, "version"); + validateStringElement(validationResult, priority, "priority"); + validateStringElement(validationResult, riskType, "riskType"); + validateStringElement(validationResult, riskLevel, "riskLevel"); + return validationResult; + } + + /** + * Validate the string element. + * + * @param validationResult the result object + * @param element the element to validate + * @param elementName the element name for error message + */ + private void validateStringElement(final GroupValidationResult validationResult, final String element, + final String elementName) { + if (!ParameterValidationUtils.validateStringParameter(element)) { + validationResult.setResult(elementName, ValidationStatus.INVALID, + elementName + " must be a non-blank string"); + } + } +} + diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandlerConfigurationParameterGroup.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandlerConfigurationParameterGroup.java index bbee652a..0140fb53 100644 --- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandlerConfigurationParameterGroup.java +++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/SdcReceptionHandlerConfigurationParameterGroup.java @@ -21,16 +21,15 @@ package org.onap.policy.distribution.reception.handling.sdc; import java.util.List; -import java.util.UUID; - import org.onap.policy.common.parameters.GroupValidationResult; import org.onap.policy.common.parameters.ValidationStatus; import org.onap.policy.common.utils.validation.ParameterValidationUtils; import org.onap.policy.distribution.reception.parameters.ReceptionHandlerConfigurationParameterGroup; /** - * This class handles reading, parsing and validating of the Policy SDC Service Distribution parameters from Json - * format, which strictly adheres to the interface:IConfiguration, defined by SDC SDK. + * This class handles reading, parsing and validating of the Policy SDC Service Distribution + * parameters from Json format, which strictly adheres to the interface:IConfiguration, defined by + * SDC SDK. */ public class SdcReceptionHandlerConfigurationParameterGroup extends ReceptionHandlerConfigurationParameterGroup { @@ -51,7 +50,8 @@ public class SdcReceptionHandlerConfigurationParameterGroup extends ReceptionHan private boolean isUseHttpsWithDmaap; /** - * The constructor for instantiating {@link SdcReceptionHandlerConfigurationParameterGroup} class. + * The constructor for instantiating {@link SdcReceptionHandlerConfigurationParameterGroup} + * class. * * @param builder the SDC configuration builder */ @@ -135,16 +135,6 @@ public class SdcReceptionHandlerConfigurationParameterGroup extends ReceptionHan return isUseHttpsWithDmaap; } - /** - * Set the name of this group. - * - * @param name the name to set. - */ - @Override - public void setName(final String name) { - super.setName(name + "_" + UUID.randomUUID().toString()); - } - /** * {@inheritDoc} */ diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestAttribute.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestAttribute.java index f11a7ecd..565f17d3 100644 --- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestAttribute.java +++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestAttribute.java @@ -39,7 +39,7 @@ public class TestAttribute { attribute.setAttributeName(attributeName); attribute.setAttributeValue(attributeValue); - validateReport(attributeName,attributeValue,attribute); + validateReport(attributeName, attributeValue, attribute); } private void validateReport(final String name, final String value, final Attribute attribute) { diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestContent.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestContent.java index a329a3ee..56534d8f 100644 --- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestContent.java +++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestContent.java @@ -41,11 +41,11 @@ public class TestContent { content.setIdentity(identity); content.setPolicyType(policyType); - validateReport(resources, identity, policyType,content); + validateReport(resources, identity, policyType, content); } - private void validateReport(final String resources, final String identity, final String policyType, - final Content content) { + private void validateReport(final String resources, final String identity, final String policyType, + final Content content) { assertEquals(resources, content.getResources()); assertEquals(identity, content.getIdentity()); assertEquals(policyType, content.getPolicyType()); diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestDirective.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestDirective.java index 48d11d32..cc8d946f 100644 --- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestDirective.java +++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestDirective.java @@ -37,7 +37,7 @@ public class TestDirective { final Directive directive = new Directive(); directive.setType(type); - validateReport(type,directive); + validateReport(type, directive); } private void validateReport(final String type, final Directive directive) { diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorFeature.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorFeature.java index 47b4e343..e4de2759 100644 --- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorFeature.java +++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorFeature.java @@ -39,7 +39,7 @@ public class TestFlavorFeature { flavorFeature.setId(id); flavorFeature.setType(type); - validateReport(id,type,flavorFeature); + validateReport(id, type, flavorFeature); } private void validateReport(final String id, final String type, final FlavorFeature flavorFeature) { diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorProperty.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorProperty.java index b5a535d7..da6c26fc 100644 --- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorProperty.java +++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestFlavorProperty.java @@ -43,11 +43,11 @@ public class TestFlavorProperty { flavorProperty.setArchitecture(architecture); flavorProperty.setHpaVersion(hpaVersion); - validateReport(hpaFeature,mandatory,architecture,hpaVersion,flavorProperty); + validateReport(hpaFeature, mandatory, architecture, hpaVersion, flavorProperty); } private void validateReport(final String hpaFeature, final String mandatory, final String architecture, - final String hpaVersion, final FlavorProperty flavorProperty) { + final String hpaVersion, final FlavorProperty flavorProperty) { assertEquals(hpaFeature, flavorProperty.getHpaFeature()); assertEquals(mandatory, flavorProperty.getMandatory()); assertEquals(architecture, flavorProperty.getArchitecture()); diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestHpaFeatureAttribute.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestHpaFeatureAttribute.java index 40c30eb7..f2f514d0 100644 --- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestHpaFeatureAttribute.java +++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestHpaFeatureAttribute.java @@ -43,11 +43,11 @@ public class TestHpaFeatureAttribute { hpaFeatureAttribute.setOperator(operator); hpaFeatureAttribute.setUnit(unit); - validateReport(hpaAttributeKey,hpaAttributeValue,operator,unit,hpaFeatureAttribute); + validateReport(hpaAttributeKey, hpaAttributeValue, operator, unit, hpaFeatureAttribute); } private void validateReport(final String hpaAttributeKey, final String hpaAttributeValue, final String operator, - final String unit, final HpaFeatureAttribute hpaFeatureAttribute) { + final String unit, final HpaFeatureAttribute hpaFeatureAttribute) { assertEquals(hpaAttributeKey, hpaFeatureAttribute.getHpaAttributeKey()); assertEquals(hpaAttributeValue, hpaFeatureAttribute.getHpaAttributeValue()); assertEquals(operator, hpaFeatureAttribute.getOperator()); diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestPolicyDecoderCsarPdpx.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestPolicyDecoderCsarPdpx.java index 11bce326..0585b23a 100644 --- a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestPolicyDecoderCsarPdpx.java +++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/decoding/pdpx/TestPolicyDecoderCsarPdpx.java @@ -21,16 +21,17 @@ package org.onap.policy.distribution.reception.decoding.pdpx; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; +import static org.junit.Assert.assertTrue; import java.io.IOException; import java.util.Collection; - +import org.junit.BeforeClass; import org.junit.Test; +import org.onap.policy.common.parameters.ParameterGroup; +import org.onap.policy.common.parameters.ParameterService; import org.onap.policy.distribution.model.Csar; +import org.onap.policy.distribution.model.OptimizationPolicy; +import org.onap.policy.distribution.reception.decoding.PolicyDecodingException; /** * Class to perform unit test of {@link PolicyDecoderCsarPdpx}. @@ -38,178 +39,164 @@ import org.onap.policy.distribution.model.Csar; */ public class TestPolicyDecoderCsarPdpx { + private static final String CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION = "csarToOptimizationPolicyConfiguration"; + + /** + * Set up for test cases. + */ + @BeforeClass + public static void setUp() { + ParameterGroup parameterGroup = new PolicyDecoderCsarPdpxConfigurationParameterBuilder().setOnapName("onapName") + .setPolicyNamePrefix("OOF").setPriority("5").setRiskLevel("2").setRiskType("Test").setVersion("1.0") + .build(); + parameterGroup.setName(CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION); + ParameterService.register(parameterGroup); + } + @Test - public void testHpaPolicy2Vnf() throws IOException { + public void testHpaPolicy2Vnf() throws IOException, PolicyDecodingException { Csar csar = new Csar("src/test/resources/service-TestNs8-csar.csar"); PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx(); - try { - Collection ret = policyDecoderCsarPdpx.decode(csar); - assertEquals(2, ret.size()); - PdpxPolicy pdpxPolicy = (PdpxPolicy) ret.toArray()[0]; - assertEquals("Optimization", pdpxPolicy.getContent().getPolicyType()); - assertEquals(1, pdpxPolicy.getContent().getFlavorFeatures().size()); - - FlavorFeature flavorFeature = pdpxPolicy.getContent().getFlavorFeatures().get(0); - assertEquals("vdu_vnf_1", flavorFeature.getId()); - assertEquals("tosca.node.nfv.Vdu.Compute", flavorFeature.getType()); - assertEquals(1, flavorFeature.getDirectives().size()); - Directive directive = flavorFeature.getDirectives().get(0); - assertEquals("flavor_directive", directive.getType()); - assertEquals(1, directive.getAttributes().size()); - assertEquals("flavorName", directive.getAttributes().get(0).getAttributeName()); - assertEquals("", directive.getAttributes().get(0).getAttributeValue()); - assertEquals(2, flavorFeature.getFlavorProperties().size()); - FlavorProperty flavorProperty = flavorFeature.getFlavorProperties().get(0); - assertEquals("BasicCapabilities", flavorProperty.getHpaFeature()); - assertEquals("true", flavorProperty.getMandatory()); - assertEquals("generic", flavorProperty.getArchitecture()); - assertEquals("v1", flavorProperty.getHpaVersion()); - assertEquals(0, flavorProperty.getDirectives().size()); - assertEquals(1, flavorProperty.getHpaFeatureAttributes().size()); - HpaFeatureAttribute hpaFeatreAttribute = flavorProperty.getHpaFeatureAttributes().get(0); - assertEquals("virtualMemSize",hpaFeatreAttribute.getHpaAttributeKey()); - assertEquals("4096",hpaFeatreAttribute.getHpaAttributeValue()); - assertEquals("",hpaFeatreAttribute.getOperator()); - assertEquals("MB",hpaFeatreAttribute.getUnit()); - - } catch (Exception e) { - fail("test should not thrown an exception here: " + e.getMessage()); - } + policyDecoderCsarPdpx.configure(CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION); + + Collection ret = policyDecoderCsarPdpx.decode(csar); + + assertEquals(2, ret.size()); + OptimizationPolicy policy = (OptimizationPolicy) ret.toArray()[0]; + + assertEquals("onapName", policy.getOnapName()); + assertTrue(policy.getPolicyName().startsWith("OOF.")); + assertTrue(policy.getConfigBody().contains("\"priority\":\"5\"")); + assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\"")); + assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\"")); + assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\"")); + assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\"")); + + assertTrue(policy.getConfigBody().contains("\"id\":\"vdu_vnf_1\"")); + assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\"")); + assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directive\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"BasicCapabilities\"")); + assertTrue(policy.getConfigBody().contains("\"mandatory\":\"true\"")); + assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"virtualMemSize\"")); + assertTrue(policy.getConfigBody().contains("\"operator\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"unit\":\"MB\"")); } @Test - public void testHpaPolicySriov() throws IOException { + public void testHpaPolicySriov() throws IOException, PolicyDecodingException { Csar csar = new Csar("src/test/resources/hpaPolicySriov.csar"); PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx(); - try { - Collection ret = policyDecoderCsarPdpx.decode(csar); - assertEquals(2, ret.size()); - PdpxPolicy pdpxPolicy = (PdpxPolicy) ret.toArray()[0]; - assertEquals("Optimization", pdpxPolicy.getContent().getPolicyType()); - assertEquals(1, pdpxPolicy.getContent().getFlavorFeatures().size()); - - FlavorFeature flavorFeature = pdpxPolicy.getContent().getFlavorFeatures().get(0); - assertEquals("vdu_vnf_1", flavorFeature.getId()); - assertEquals("tosca.node.nfv.Vdu.Compute", flavorFeature.getType()); - assertEquals(1, flavorFeature.getDirectives().size()); - Directive directive = flavorFeature.getDirectives().get(0); - assertEquals("flavor_directive", directive.getType()); - assertEquals(1, directive.getAttributes().size()); - assertEquals("flavorName", directive.getAttributes().get(0).getAttributeName()); - assertEquals("", directive.getAttributes().get(0).getAttributeValue()); - assertEquals(4, flavorFeature.getFlavorProperties().size()); - FlavorProperty flavorProperty = flavorFeature.getFlavorProperties().get(3); - assertEquals("SriovNICNetwork", flavorProperty.getHpaFeature()); - assertEquals("true", flavorProperty.getMandatory()); - assertEquals("generic", flavorProperty.getArchitecture()); - assertEquals("v1", flavorProperty.getHpaVersion()); - assertEquals(0, flavorProperty.getDirectives().size()); - assertEquals(3, flavorProperty.getHpaFeatureAttributes().size()); - - HpaFeatureAttribute pciVendorId = flavorProperty.getHpaFeatureAttributes().get(0); - assertEquals("pciVendorId",pciVendorId.getHpaAttributeKey()); - assertEquals("1234",pciVendorId.getHpaAttributeValue()); - assertEquals("",pciVendorId.getOperator()); - assertEquals("",pciVendorId.getUnit()); - HpaFeatureAttribute pciDeviceId = flavorProperty.getHpaFeatureAttributes().get(1); - assertEquals("pciDeviceId",pciDeviceId.getHpaAttributeKey()); - assertEquals("5678",pciDeviceId.getHpaAttributeValue()); - assertEquals("",pciDeviceId.getOperator()); - assertEquals("",pciDeviceId.getUnit()); - HpaFeatureAttribute pciNumDevices = flavorProperty.getHpaFeatureAttributes().get(2); - assertEquals("pciNumDevices",pciNumDevices.getHpaAttributeKey()); - assertEquals("1",pciNumDevices.getHpaAttributeValue()); - assertEquals("",pciNumDevices.getOperator()); - assertEquals("",pciNumDevices.getUnit()); - } catch (Exception e) { - fail("test should not thrown an exception here: " + e.getMessage()); - } + policyDecoderCsarPdpx.configure(CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION); + + Collection policies = policyDecoderCsarPdpx.decode(csar); + OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0]; + + assertEquals("onapName", policy.getOnapName()); + assertTrue(policy.getPolicyName().startsWith("OOF.")); + assertTrue(policy.getConfigBody().contains("\"priority\":\"5\"")); + assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\"")); + assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\"")); + assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\"")); + assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\"")); + + assertTrue(policy.getConfigBody().contains("\"id\":\"vdu_vnf_1\"")); + assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\"")); + assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directive\"")); + assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\"")); + assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"SriovNICNetwork\"")); + assertTrue(policy.getConfigBody().contains("\"mandatory\":\"true\"")); + assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\"")); + assertTrue(policy.getConfigBody().contains("\"operator\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"unit\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciDeviceId\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"5678\"")); + assertTrue(policy.getConfigBody().contains("\"operator\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"unit\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciNumDevices\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1\"")); + assertTrue(policy.getConfigBody().contains("\"operator\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"unit\":\"\"")); } @Test - public void testHpaPolicyPciePassthrough() throws IOException { + public void testHpaPolicyPciePassthrough() throws IOException, PolicyDecodingException { Csar csar = new Csar("src/test/resources/hpaPolicyPciePassthrough.csar"); PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx(); - try { - Collection ret = policyDecoderCsarPdpx.decode(csar); - assertEquals(2, ret.size()); - PdpxPolicy pdpxPolicy = (PdpxPolicy) ret.toArray()[0]; - assertEquals("Optimization", pdpxPolicy.getContent().getPolicyType()); - assertEquals(1, pdpxPolicy.getContent().getFlavorFeatures().size()); - - FlavorFeature flavorFeature = pdpxPolicy.getContent().getFlavorFeatures().get(0); - assertEquals("vdu_vnf_1", flavorFeature.getId()); - assertEquals("tosca.node.nfv.Vdu.Compute", flavorFeature.getType()); - assertEquals(1, flavorFeature.getDirectives().size()); - Directive directive = flavorFeature.getDirectives().get(0); - assertEquals("flavor_directive", directive.getType()); - assertEquals(1, directive.getAttributes().size()); - assertEquals("flavorName", directive.getAttributes().get(0).getAttributeName()); - assertEquals("", directive.getAttributes().get(0).getAttributeValue()); - assertEquals(4, flavorFeature.getFlavorProperties().size()); - FlavorProperty flavorProperty = flavorFeature.getFlavorProperties().get(3); - assertEquals("pciePassthrough", flavorProperty.getHpaFeature()); - assertEquals("true", flavorProperty.getMandatory()); - assertEquals("generic", flavorProperty.getArchitecture()); - assertEquals("v1", flavorProperty.getHpaVersion()); - assertEquals(0, flavorProperty.getDirectives().size()); - assertEquals(3, flavorProperty.getHpaFeatureAttributes().size()); - - HpaFeatureAttribute pciVendorId = flavorProperty.getHpaFeatureAttributes().get(0); - assertEquals("pciVendorId",pciVendorId.getHpaAttributeKey()); - assertEquals("1234",pciVendorId.getHpaAttributeValue()); - assertEquals("",pciVendorId.getOperator()); - assertEquals("",pciVendorId.getUnit()); - HpaFeatureAttribute pciDeviceId = flavorProperty.getHpaFeatureAttributes().get(1); - assertEquals("pciDeviceId",pciDeviceId.getHpaAttributeKey()); - assertEquals("5678",pciDeviceId.getHpaAttributeValue()); - assertEquals("",pciDeviceId.getOperator()); - assertEquals("",pciDeviceId.getUnit()); - HpaFeatureAttribute pciNumDevices = flavorProperty.getHpaFeatureAttributes().get(2); - assertEquals("pciNumDevices",pciNumDevices.getHpaAttributeKey()); - assertEquals("1",pciNumDevices.getHpaAttributeValue()); - assertEquals("",pciNumDevices.getOperator()); - assertEquals("",pciNumDevices.getUnit()); - } catch (Exception e) { - fail("test should not thrown an exception here: " + e.getMessage()); - } + policyDecoderCsarPdpx.configure(CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION); + + Collection policies = policyDecoderCsarPdpx.decode(csar); + assertEquals(2, policies.size()); + OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0]; + + assertEquals("onapName", policy.getOnapName()); + assertTrue(policy.getPolicyName().startsWith("OOF.")); + assertTrue(policy.getConfigBody().contains("\"priority\":\"5\"")); + assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\"")); + assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\"")); + assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\"")); + assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\"")); + + assertTrue(policy.getConfigBody().contains("\"id\":\"vdu_vnf_1\"")); + assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\"")); + assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directive\"")); + assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\"")); + assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"pciePassthrough\"")); + assertTrue(policy.getConfigBody().contains("\"mandatory\":\"true\"")); + assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\"")); + assertTrue(policy.getConfigBody().contains("\"operator\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"unit\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciDeviceId\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"5678\"")); + assertTrue(policy.getConfigBody().contains("\"operator\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"unit\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciNumDevices\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1\"")); + assertTrue(policy.getConfigBody().contains("\"operator\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"unit\":\"\"")); + + } @Test - public void testHpaPolicyHugePage() throws IOException { + public void testHpaPolicyHugePage() throws IOException, PolicyDecodingException { Csar csar = new Csar("src/test/resources/hpaPolicyHugePage.csar"); PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx(); - try { - Collection ret = policyDecoderCsarPdpx.decode(csar); - assertEquals(2, ret.size()); - PdpxPolicy pdpxPolicy = (PdpxPolicy) ret.toArray()[0]; - assertEquals("Optimization", pdpxPolicy.getContent().getPolicyType()); - assertEquals(1, pdpxPolicy.getContent().getFlavorFeatures().size()); - - FlavorFeature flavorFeature = pdpxPolicy.getContent().getFlavorFeatures().get(0); - assertEquals("vdu_vnf_1", flavorFeature.getId()); - assertEquals("tosca.node.nfv.Vdu.Compute", flavorFeature.getType()); - assertEquals(1, flavorFeature.getDirectives().size()); - Directive directive = flavorFeature.getDirectives().get(0); - assertEquals("flavor_directive", directive.getType()); - assertEquals(1, directive.getAttributes().size()); - assertEquals("flavorName", directive.getAttributes().get(0).getAttributeName()); - assertEquals("", directive.getAttributes().get(0).getAttributeValue()); - assertEquals(3, flavorFeature.getFlavorProperties().size()); - FlavorProperty flavorProperty = flavorFeature.getFlavorProperties().get(2); - assertEquals("hugePages", flavorProperty.getHpaFeature()); - assertEquals("false", flavorProperty.getMandatory()); - assertEquals("generic", flavorProperty.getArchitecture()); - assertEquals("v1", flavorProperty.getHpaVersion()); - assertEquals(0, flavorProperty.getDirectives().size()); - assertEquals(1, flavorProperty.getHpaFeatureAttributes().size()); - HpaFeatureAttribute hpaFeatreAttribute = flavorProperty.getHpaFeatureAttributes().get(0); - assertEquals("memoryPageSize",hpaFeatreAttribute.getHpaAttributeKey()); - assertEquals("2",hpaFeatreAttribute.getHpaAttributeValue()); - assertEquals("",hpaFeatreAttribute.getOperator()); - assertEquals("MB",hpaFeatreAttribute.getUnit()); - } catch (Exception e) { - fail("test should not thrown an exception here: " + e.getMessage()); - } + policyDecoderCsarPdpx.configure(CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION); + + Collection policies = policyDecoderCsarPdpx.decode(csar); + assertEquals(2, policies.size()); + OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0]; + + assertEquals("onapName", policy.getOnapName()); + assertTrue(policy.getPolicyName().startsWith("OOF.")); + assertTrue(policy.getConfigBody().contains("\"priority\":\"5\"")); + assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\"")); + assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\"")); + assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\"")); + assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\"")); + + assertTrue(policy.getConfigBody().contains("\"id\":\"vdu_vnf_1\"")); + assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\"")); + assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directive\"")); + assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\"")); + assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"hugePages\"")); + assertTrue(policy.getConfigBody().contains("\"mandatory\":\"false\"")); + assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"memoryPageSize\"")); + assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"2\"")); + assertTrue(policy.getConfigBody().contains("\"operator\":\"\"")); + assertTrue(policy.getConfigBody().contains("\"unit\":\"MB\"")); } } -- cgit 1.2.3-korg