From 6261a6058cba8f5c0da0be36067ce1c6223c5ffc Mon Sep 17 00:00:00 2001 From: liboNet Date: Wed, 8 Aug 2018 08:08:10 +0800 Subject: Initial moduel structure for SDC handling This submission defines the initial module structure for this handling and add the IConfiguration implementation and test code, use the json format as the configuration. rename the class name to sensible one with PSSD prefix. remove static variable to make it possible for more than one subscription to SDC. improve the validate func to validate each mandatory parameters and check the int parameter's value Change-Id: I3106ad9d4535b1251eae064e803805b92378f6f1 Issue-ID: POLICY-956 Signed-off-by: liboNet --- .../reception/handling/sdc/PSSDConfiguration.java | 127 +++++++++++++ .../sdc/PSSDConfigurationParametersGroup.java | 199 +++++++++++++++++++++ .../handling/sdc/PSSDConfigurationTest.java | 79 ++++++++ .../src/test/resources/handling-sdc.json | 26 +++ .../src/test/resources/handling-sdcInvalid.json | 26 +++ 5 files changed, 457 insertions(+) create mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfiguration.java create mode 100644 plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationParametersGroup.java create mode 100644 plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationTest.java create mode 100644 plugins/reception-plugins/src/test/resources/handling-sdc.json create mode 100644 plugins/reception-plugins/src/test/resources/handling-sdcInvalid.json (limited to 'plugins/reception-plugins/src') diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfiguration.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfiguration.java new file mode 100644 index 00000000..5f74e2b2 --- /dev/null +++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfiguration.java @@ -0,0 +1,127 @@ +/*- + * ============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.handling.sdc; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; +import org.onap.sdc.api.consumer.IConfiguration; + +/** + * Properties for the handling Sdc + * + */ +public class PSSDConfiguration implements IConfiguration { + + // Configuration file structure + + // Configuration file properties + private PSSDConfigurationParametersGroup configParameters=null; + + /** + * Original constructor + * + * @param configParameters properties needed to be configured for the model loader + */ + public PSSDConfiguration(PSSDConfigurationParametersGroup configParameters) { + this.configParameters = configParameters; + + } + + + @Override + public String getAsdcAddress() { + return configParameters.getAsdcAddress(); + } + + @Override + public List getMsgBusAddress() { + return configParameters.getMsgBusAddress(); + } + + @Override + public String getUser() { + return configParameters.getUser(); + } + + @Override + public String getPassword() { + return configParameters.getPassword(); + } + + @Override + public int getPollingInterval() { + return configParameters.getPollingInterval(); + } + + @Override + public int getPollingTimeout() { + return configParameters.getPollingTimeout(); + } + + @Override + public List getRelevantArtifactTypes() { + return configParameters.getArtifactTypes(); + } + + @Override + public String getConsumerGroup() { + return configParameters.getConsumerGroup(); + } + + @Override + public String getEnvironmentName() { + return configParameters.getEnvironmentName(); + } + + @Override + public String getConsumerID() { + return configParameters.getConsumerID(); + } + + @Override + public String getKeyStorePassword() { + return configParameters.getKeyStorePassword(); + } + + @Override + public String getKeyStorePath() { + return configParameters.getKeyStorePath(); + } + + @Override + public boolean activateServerTLSAuth() { + return configParameters.activateServerTLSAuth(); + } + + @Override + public boolean isFilterInEmptyResources() { + return configParameters.isFilterInEmptyResources(); + } + + @Override + public Boolean isUseHttpsWithDmaap() { + return configParameters.isUseHttpsWithDmaap(); + } + + +} diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationParametersGroup.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationParametersGroup.java new file mode 100644 index 00000000..da603359 --- /dev/null +++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationParametersGroup.java @@ -0,0 +1,199 @@ +/*- + * ============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.handling.sdc; +import java.util.List; +import java.io.FileReader; +import java.io.IOException; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import org.onap.policy.common.parameters.GroupValidationResult; +import org.onap.policy.common.parameters.ParameterConstants; +import org.onap.policy.common.parameters.ParameterGroup; +import org.onap.policy.common.parameters.ValidationStatus; + +/** +* 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 PSSDConfigurationParametersGroup implements ParameterGroup { + //Policy SDC Service Distribution specified field. + private String name; + + //Interface of IConfiguration item + private String asdcAddress; + private List messageBusAddress; + private String user; + private String password; + private int pollingInterval; + private int pollingTimeout; + private String consumerId; + private List artifactTypes; + private String consumerGroup; + private String environmentName; + private String keystorePath; + private String keystorePassword; + private boolean activeserverTlsAuth; + private boolean isFilterinEmptyResources; + private Boolean isUseHttpsWithDmaap; + + public String getAsdcAddress(){ + return asdcAddress; + } + + public List getMsgBusAddress(){ + return messageBusAddress; + } + + public String getUser() { + return user; + } + + public String getPassword() { + return password; + } + + public int getPollingInterval() { + return pollingInterval; + } + + public int getPollingTimeout() { + return pollingTimeout; + } + + public String getConsumerID() { + return consumerId; + } + + public List getArtifactTypes(){ + return artifactTypes; + } + + public String getConsumerGroup() { + return consumerGroup; + } + + public String getEnvironmentName() { + return environmentName; + } + + public String getKeyStorePassword() { + return keystorePassword; + } + + public String getKeyStorePath() { + return keystorePath; + } + + public boolean activateServerTLSAuth() { + return activeserverTlsAuth; + } + + public boolean isFilterInEmptyResources() { + return isFilterinEmptyResources; + } + + public Boolean isUseHttpsWithDmaap() { + return isUseHttpsWithDmaap; + } + + @Override + public String toString() { + return "name =" + name +",TestParameters:[asdcAddress = " + asdcAddress + ", messageBusAddress = " + messageBusAddress + + ", user = "+ user + "]"; + } + + @Override + public String getName() { + return name; + } + + @Override + public GroupValidationResult validate() { + GroupValidationResult validationResult = new GroupValidationResult(this); + + if (name == null || name.trim().length() == 0) { + validationResult.setResult("name", ValidationStatus.INVALID, "name must be a non-blank string"); + } + + if (asdcAddress == null || asdcAddress.trim().length() == 0) { + validationResult.setResult("asdcAddress", ValidationStatus.INVALID, "asdcAddress must be a non-blank string"); + } + + if (user == null || user.trim().length() == 0) { + validationResult.setResult("user", ValidationStatus.INVALID, "user must be a non-blank string"); + } + + if (consumerId == null || consumerId.trim().length() == 0) { + validationResult.setResult("consumerId", ValidationStatus.INVALID, "consumerId must be a non-blank string"); + } + + if (consumerGroup == null || consumerGroup.trim().length() == 0) { + validationResult.setResult("consumerGroup", ValidationStatus.INVALID, "consumerGroup must be a non-blank string"); + } + + if (keystorePath == null || keystorePath.trim().length() == 0) { + validationResult.setResult("keystorePath", ValidationStatus.INVALID, "keystorePath must be a non-blank string"); + } + + if (keystorePassword == null || keystorePassword.trim().length() == 0) { + validationResult.setResult("keystorePassword", ValidationStatus.INVALID, "keystorePassword must be a non-blank string"); + } + + if(messageBusAddress == null){ + validationResult.setResult("messageBusAddress", ValidationStatus.INVALID, + "messageBusAddress must be a list of non-blank string"); + }else { + for(String temp:messageBusAddress){ + if(temp.trim().length() == 0){ + validationResult.setResult("messageBusAddress", ValidationStatus.INVALID, + "the string of messageBusAddress must be a non-blank string"); + } + } + } + + if(artifactTypes == null){ + validationResult.setResult("artifactTypes", ValidationStatus.INVALID, + "artifactTypes must be a list of non-blank string"); + }else { + for(String temp:artifactTypes){ + if(temp.trim().length() == 0){ + validationResult.setResult("artifactTypes", ValidationStatus.INVALID, + "the string of artifactTypes must be a non-blank string"); + } + } + } + + if (pollingInterval <= 0){ + validationResult.setResult("pollingInterval", ValidationStatus.INVALID, + "pollingInterval must be a positive integer"); + } + + if (pollingTimeout <= 0){ + validationResult.setResult("pollingTimeout", ValidationStatus.INVALID, + "pollingTimeout must be a positive integer"); + } + + return validationResult; + } + +} + diff --git a/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationTest.java b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationTest.java new file mode 100644 index 00000000..bcb7ac80 --- /dev/null +++ b/plugins/reception-plugins/src/test/java/org/onap/policy/distribution/reception/handling/sdc/PSSDConfigurationTest.java @@ -0,0 +1,79 @@ +/*- + * ============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.handling.sdc; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import org.junit.Test; +import org.onap.policy.common.parameters.GroupValidationResult; + +/*- + * Tests for PSSDConfiguration class + * + */ +public class PSSDConfigurationTest { + + @Test + public void testPSSDConfigurationParametersGroup() throws IOException { + PSSDConfigurationParametersGroup configParameters = null; + try { + final Gson gson = new GsonBuilder().create(); + configParameters = + gson.fromJson(new FileReader("src/test/resources/handling-sdc.json"), + PSSDConfigurationParametersGroup.class); + } catch (final Exception e) { + fail("test should not thrown an exception here: " + e.getMessage()); + } + final GroupValidationResult validationResult = configParameters.validate(); + assertTrue(validationResult.isValid()); + assertEquals("parameterConfig1", configParameters.getName()); + + PSSDConfiguration config = new PSSDConfiguration(configParameters); + assertEquals(20, config.getPollingInterval()); + assertEquals(30,config.getPollingTimeout()); + } + + @Test + public void testInvalidPSSDConfigurationParametersGroup() throws IOException { + PSSDConfigurationParametersGroup configParameters = null; + try { + final Gson gson = new GsonBuilder().create(); + configParameters = + gson.fromJson(new FileReader("src/test/resources/handling-sdcInvalid.json"), + PSSDConfigurationParametersGroup.class); + } catch (final Exception e) { + fail("test should not thrown an exception here: " + e.getMessage()); + } + final GroupValidationResult validationResult = configParameters.validate(); + assertFalse(validationResult.isValid()); + assertEquals("parameterConfig1", configParameters.getName()); + + } +} diff --git a/plugins/reception-plugins/src/test/resources/handling-sdc.json b/plugins/reception-plugins/src/test/resources/handling-sdc.json new file mode 100644 index 00000000..c1ca23aa --- /dev/null +++ b/plugins/reception-plugins/src/test/resources/handling-sdc.json @@ -0,0 +1,26 @@ +{ + "name" : "parameterConfig1", + "asdcAddress": "localhost", + "messageBusAddress": [ + "a.com", + "b.com", + "c.com" + ], + "user": "tbdsdc-1480", + "password": "tbdsdc-1480", + "pollingInterval":20, + "pollingTimeout":30, + "consumerId": "policy-id", + "artifactTypes": [ + "TOSCA_CSAR", + "HEAT" + ], + "consumerGroup": "policy-group", + "environmentName": "environmentName", + "keystorePath": "null", + "keystorePassword": "null", + "activeserverTlsAuth": false, + "isFilterinEmptyResources": true, + "isUseHttpsWithDmaap": false +} + diff --git a/plugins/reception-plugins/src/test/resources/handling-sdcInvalid.json b/plugins/reception-plugins/src/test/resources/handling-sdcInvalid.json new file mode 100644 index 00000000..ababea48 --- /dev/null +++ b/plugins/reception-plugins/src/test/resources/handling-sdcInvalid.json @@ -0,0 +1,26 @@ +{ + "name" : "parameterConfig1", + "asdcAddress": "localhost", + "messageBusAddress": [ + "a.com", + "b.com", + "c.com" + ], + "user": "tbdsdc-1480", + "password": "tbdsdc-1480", + "pollingInterval":-1, + "pollingTimeout":-2, + "consumerId": "policy-id", + "artifactTypes": [ + "TOSCA_CSAR", + "HEAT" + ], + "consumerGroup": "policy-group", + "environmentName": "environmentName", + "keystorePath": "null", + "keystorePassword": "null", + "activeserverTlsAuth": false, + "isFilterinEmptyResources": true, + "isUseHttpsWithDmaap": false +} + -- cgit 1.2.3-korg