aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormmis <michael.morris@ericsson.com>2018-08-27 23:29:24 +0100
committermmis <michael.morris@ericsson.com>2018-08-30 16:52:30 +0100
commitde6124af19910e5ebb1de6698843b8ab64b5931a (patch)
tree0a7ecfa5c8199e01108345bbd8957db46441b59d
parente705197bb18af558fb7ea853b01e1297521763f2 (diff)
Create code infrastructure for policy forwarding
Added sending of polices from the policy forwarder to the xacml PDP and added handling of parameters for configuring the policy forwarders Issue-ID: POLICY-926 Change-Id: I26effe70769f7edc765470a1a9ad40ed9faad82d Signed-off-by: mmis <michael.morris@ericsson.com>
-rw-r--r--forwarding/src/main/java/org/onap/policy/distribution/forwarding/PolicyForwarder.java15
-rw-r--r--forwarding/src/main/java/org/onap/policy/distribution/forwarding/parameters/PolicyForwarderParameters.java15
-rw-r--r--main/src/main/java/org/onap/policy/distribution/main/parameters/DistributionParameterGroup.java38
-rw-r--r--main/src/main/java/org/onap/policy/distribution/main/parameters/DistributionParameterHandler.java8
-rw-r--r--main/src/main/java/org/onap/policy/distribution/main/parameters/PolicyForwarderConfigurationParameterGroup.java (renamed from plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/pap/engine/XacmlPapServletPolicyForwarder.java)21
-rw-r--r--main/src/main/java/org/onap/policy/distribution/main/parameters/PolicyForwarderConfigurationParametersJsonAdapter.java80
-rw-r--r--main/src/main/java/org/onap/policy/distribution/main/startstop/DistributionActivator.java17
-rw-r--r--main/src/test/java/org/onap/policy/distribution/main/parameters/CommonTestData.java29
-rw-r--r--main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterGroup.java39
-rw-r--r--main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterHandler.java90
-rw-r--r--main/src/test/java/org/onap/policy/distribution/main/parameters/TestPluginHandlerParameters.java1
-rw-r--r--main/src/test/java/org/onap/policy/distribution/main/parameters/TestPolicyForwarderParameters.java35
-rw-r--r--main/src/test/java/org/onap/policy/distribution/main/startstop/TestDistributionActivator.java7
-rw-r--r--main/src/test/java/org/onap/policy/distribution/main/testclasses/DummyPolicyForwarder.java4
-rw-r--r--main/src/test/java/org/onap/policy/distribution/main/testclasses/DummyPolicyForwarderParameterGroup.java131
-rw-r--r--main/src/test/resources/parameters/DistributionConfigParameters.json16
-rw-r--r--main/src/test/resources/parameters/DistributionConfigParameters_EmptyPolicyDecoder.json16
-rw-r--r--main/src/test/resources/parameters/DistributionConfigParameters_EmptyPolicyForwarder.json13
-rw-r--r--main/src/test/resources/parameters/DistributionConfigParameters_EmptyReceptionHandler.json13
-rw-r--r--main/src/test/resources/parameters/DistributionConfigParameters_InvalidDecoderAndForwarderParameters.json22
-rw-r--r--main/src/test/resources/parameters/DistributionConfigParameters_InvalidForwarderConfigurationClassName.json67
-rw-r--r--main/src/test/resources/parameters/DistributionConfigParameters_InvalidName.json16
-rw-r--r--main/src/test/resources/parameters/DistributionConfigParameters_InvalidReceptionHandlerParameters.json16
-rw-r--r--main/src/test/resources/parameters/DistributionConfigParameters_InvalidRestServerParameters.json16
-rw-r--r--main/src/test/resources/parameters/DistributionConfigParameters_NoPolicyDecoder.json16
-rw-r--r--main/src/test/resources/parameters/DistributionConfigParameters_UnknownForwarderConfigurationClassName.json67
-rw-r--r--main/src/test/resources/parameters/MinimumParameters.json16
-rw-r--r--model/src/main/java/org/onap/policy/distribution/model/OptimizationPolicy.java126
-rw-r--r--model/src/main/java/org/onap/policy/distribution/model/Policy.java14
-rw-r--r--plugins/forwarding-plugins/pom.xml20
-rw-r--r--plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyAdapter.java53
-rw-r--r--plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyForwarder.java135
-rw-r--r--plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyForwarderParameterGroup.java182
-rw-r--r--plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/adapters/AbstractXacmlPdpPolicyAdapter.java54
-rw-r--r--plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/adapters/XacmlPdpOptimizationPolicyAdapter.java54
-rw-r--r--plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpPolicyForwarderParameterGroupTest.java98
-rw-r--r--plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpPolicyForwarderTest.java338
-rw-r--r--plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/testclasses/DummyDecoder.java59
-rw-r--r--plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/testclasses/DummyReceptionHandler.java37
-rw-r--r--plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PdpxPolicy.java10
-rw-r--r--reception/src/main/java/org/onap/policy/distribution/reception/handling/PluginHandler.java5
-rw-r--r--reception/src/test/java/org/onap/policy/distribution/reception/handling/AbstractReceptionHandlerTest.java24
-rw-r--r--reception/src/test/java/org/onap/policy/distribution/reception/handling/DummyPolicyForwarder.java4
43 files changed, 1939 insertions, 98 deletions
diff --git a/forwarding/src/main/java/org/onap/policy/distribution/forwarding/PolicyForwarder.java b/forwarding/src/main/java/org/onap/policy/distribution/forwarding/PolicyForwarder.java
index 5272fc9b..5bd53804 100644
--- a/forwarding/src/main/java/org/onap/policy/distribution/forwarding/PolicyForwarder.java
+++ b/forwarding/src/main/java/org/onap/policy/distribution/forwarding/PolicyForwarder.java
@@ -25,10 +25,25 @@ import org.onap.policy.distribution.model.Policy;
/**
* Forwards polices.
+ * <p>
+ * To create a policy forwarder a class implementing this interface must be created, along with a
+ * concrete sub class of PolicyForwarderConfigurationParameterGroup to handle configuration
+ * parameters for the policy forwarder.
*/
public interface PolicyForwarder {
/**
+ * Configure the policy forwarder.
+ * <p>
+ * This method will be invoked immediately after instantiation in order for the policy forwarder
+ * to configure itself.
+ *
+ * @param parameterGroupName the name of the parameter group which contains the configuration
+ * for the policy forwarder
+ */
+ void configure(String parameterGroupName);
+
+ /**
* Forward the given policies.
*
* @param policies the policies to forward
diff --git a/forwarding/src/main/java/org/onap/policy/distribution/forwarding/parameters/PolicyForwarderParameters.java b/forwarding/src/main/java/org/onap/policy/distribution/forwarding/parameters/PolicyForwarderParameters.java
index 28a1b1be..2426cccd 100644
--- a/forwarding/src/main/java/org/onap/policy/distribution/forwarding/parameters/PolicyForwarderParameters.java
+++ b/forwarding/src/main/java/org/onap/policy/distribution/forwarding/parameters/PolicyForwarderParameters.java
@@ -37,16 +37,20 @@ public class PolicyForwarderParameters implements ParameterGroup {
private String forwarderType;
private String forwarderClassName;
+ private String forwarderConfigurationName;
/**
* Constructor for instantiating PolicyForwarderParameters.
*
* @param forwarderType the policy forwarder type
* @param forwarderClassName the policy forwarder class name
+ * @param forwarderConfigurationName the name of the configuration for the policy forwarder
*/
- public PolicyForwarderParameters(final String forwarderType, final String forwarderClassName) {
+ public PolicyForwarderParameters(final String forwarderType, final String forwarderClassName,
+ final String forwarderConfigurationName) {
this.forwarderType = forwarderType;
this.forwarderClassName = forwarderClassName;
+ this.forwarderConfigurationName = forwarderConfigurationName;
}
/**
@@ -68,6 +72,15 @@ public class PolicyForwarderParameters implements ParameterGroup {
}
/**
+ * Return the name of the forwarder configuration of this PolicyForwarderParameters instance.
+ *
+ * @return the the name of the forwarder configuration
+ */
+ public String getForwarderConfigurationName() {
+ return forwarderConfigurationName;
+ }
+
+ /**
* {@inheritDoc}
*/
@Override
diff --git a/main/src/main/java/org/onap/policy/distribution/main/parameters/DistributionParameterGroup.java b/main/src/main/java/org/onap/policy/distribution/main/parameters/DistributionParameterGroup.java
index a188fb04..27291255 100644
--- a/main/src/main/java/org/onap/policy/distribution/main/parameters/DistributionParameterGroup.java
+++ b/main/src/main/java/org/onap/policy/distribution/main/parameters/DistributionParameterGroup.java
@@ -20,9 +20,9 @@
package org.onap.policy.distribution.main.parameters;
+import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
-
import org.onap.policy.common.parameters.GroupValidationResult;
import org.onap.policy.common.parameters.ParameterGroup;
import org.onap.policy.common.parameters.ValidationStatus;
@@ -38,6 +38,9 @@ public class DistributionParameterGroup implements ParameterGroup {
private String name;
private RestServerParameters restServerParameters;
private Map<String, ReceptionHandlerParameters> receptionHandlerParameters;
+ private Map<String, PolicyForwarderConfigurationParameterGroup> policyForwarderConfigurationParameters =
+ new LinkedHashMap<>();
+
/**
* Create the distribution parameter group.
@@ -45,10 +48,12 @@ public class DistributionParameterGroup implements ParameterGroup {
* @param name the parameter group name
*/
public DistributionParameterGroup(final String name, final RestServerParameters restServerParameters,
- final Map<String, ReceptionHandlerParameters> receptionHandlerParameters) {
+ final Map<String, ReceptionHandlerParameters> receptionHandlerParameters,
+ final Map<String, PolicyForwarderConfigurationParameterGroup> policyForwarderConfigurationParameters) {
this.name = name;
this.restServerParameters = restServerParameters;
this.receptionHandlerParameters = receptionHandlerParameters;
+ this.policyForwarderConfigurationParameters = policyForwarderConfigurationParameters;
}
/**
@@ -89,6 +94,26 @@ public class DistributionParameterGroup implements ParameterGroup {
return restServerParameters;
}
+
+ /**
+ * Gets the policy forwarder configuration parameter map.
+ *
+ * @return the policy forwarder configuration parameter map
+ */
+ public Map<String, PolicyForwarderConfigurationParameterGroup> getPolicyForwarderConfigurationParameters() {
+ return policyForwarderConfigurationParameters;
+ }
+
+ /**
+ * Sets the policy forwarder configuration parameter map.
+ *
+ * @param eventInputParameters the policy forwarder configuration parameters
+ */
+ public void setPolicyForwarderConfigurationParameters(
+ final Map<String, PolicyForwarderConfigurationParameterGroup> policyForwarderConfigurationParameters) {
+ this.policyForwarderConfigurationParameters = policyForwarderConfigurationParameters;
+ }
+
/**
* Validate the parameter group.
*
@@ -107,6 +132,7 @@ public class DistributionParameterGroup implements ParameterGroup {
validationResult.setResult("restServerParameters", restServerParameters.validate());
}
validateReceptionHandlers(validationResult);
+ validateForwarderConfigurations(validationResult);
return validationResult;
}
@@ -126,4 +152,12 @@ public class DistributionParameterGroup implements ParameterGroup {
}
}
}
+
+ private void validateForwarderConfigurations(final GroupValidationResult validationResult) {
+ for (final Entry<String, PolicyForwarderConfigurationParameterGroup> configurationParameters : policyForwarderConfigurationParameters
+ .entrySet()) {
+ validationResult.setResult("policyForwarderConfigurationParameters", configurationParameters.getKey(),
+ configurationParameters.getValue().validate());
+ }
+ }
}
diff --git a/main/src/main/java/org/onap/policy/distribution/main/parameters/DistributionParameterHandler.java b/main/src/main/java/org/onap/policy/distribution/main/parameters/DistributionParameterHandler.java
index 3174b8c6..5cc507e6 100644
--- a/main/src/main/java/org/onap/policy/distribution/main/parameters/DistributionParameterHandler.java
+++ b/main/src/main/java/org/onap/policy/distribution/main/parameters/DistributionParameterHandler.java
@@ -22,9 +22,7 @@ package org.onap.policy.distribution.main.parameters;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
-
import java.io.FileReader;
-
import org.onap.policy.common.logging.flexlogger.FlexLogger;
import org.onap.policy.common.logging.flexlogger.Logger;
import org.onap.policy.common.parameters.GroupValidationResult;
@@ -32,7 +30,8 @@ import org.onap.policy.distribution.main.PolicyDistributionException;
import org.onap.policy.distribution.main.startstop.DistributionCommandLineArguments;
/**
- * This class handles reading, parsing and validating of policy distribution parameters from JSON files.
+ * This class handles reading, parsing and validating of policy distribution parameters from JSON
+ * files.
*/
public class DistributionParameterHandler {
private static final Logger LOGGER = FlexLogger.getLogger(DistributionParameterHandler.class);
@@ -51,7 +50,8 @@ public class DistributionParameterHandler {
// Read the parameters
try {
// Read the parameters from JSON using Gson
- final Gson gson = new GsonBuilder().create();
+ final Gson gson = new GsonBuilder().registerTypeAdapter(PolicyForwarderConfigurationParameterGroup.class,
+ new PolicyForwarderConfigurationParametersJsonAdapter()).create();
distributionParameterGroup = gson.fromJson(new FileReader(arguments.getFullConfigurationFilePath()),
DistributionParameterGroup.class);
} catch (final Exception e) {
diff --git a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/pap/engine/XacmlPapServletPolicyForwarder.java b/main/src/main/java/org/onap/policy/distribution/main/parameters/PolicyForwarderConfigurationParameterGroup.java
index eb33a852..f2c496d4 100644
--- a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/pap/engine/XacmlPapServletPolicyForwarder.java
+++ b/main/src/main/java/org/onap/policy/distribution/main/parameters/PolicyForwarderConfigurationParameterGroup.java
@@ -18,21 +18,26 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.policy.distribution.forwarding.pap.engine;
-
-import java.util.Collection;
+package org.onap.policy.distribution.main.parameters;
+import org.onap.policy.common.parameters.ParameterGroup;
import org.onap.policy.distribution.forwarding.PolicyForwarder;
-import org.onap.policy.distribution.model.Policy;
/**
- * Forwards policies to the XACML PAP Servlet.
+ * Base class of all {@link ParameterGroup} classes for configuration parameters for
+ * {@link PolicyForwarder} classes
*/
-public class XacmlPapServletPolicyForwarder implements PolicyForwarder {
+public abstract class PolicyForwarderConfigurationParameterGroup implements ParameterGroup {
+
+ private String name;
@Override
- public void forward(final Collection<Policy> policies) {
- // Send policies to PAP using common/policy-endpoints
+ public String getName() {
+ return name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
}
}
diff --git a/main/src/main/java/org/onap/policy/distribution/main/parameters/PolicyForwarderConfigurationParametersJsonAdapter.java b/main/src/main/java/org/onap/policy/distribution/main/parameters/PolicyForwarderConfigurationParametersJsonAdapter.java
new file mode 100644
index 00000000..5ce15a28
--- /dev/null
+++ b/main/src/main/java/org/onap/policy/distribution/main/parameters/PolicyForwarderConfigurationParametersJsonAdapter.java
@@ -0,0 +1,80 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-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.main.parameters;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
+import java.lang.reflect.Type;
+import org.slf4j.ext.XLogger;
+import org.slf4j.ext.XLoggerFactory;
+
+/**
+ * This class deserialises policy forwarder parameters from JSON.
+ */
+public class PolicyForwarderConfigurationParametersJsonAdapter
+ implements JsonDeserializer<PolicyForwarderConfigurationParameterGroup> {
+ private static final XLogger LOGGER =
+ XLoggerFactory.getXLogger(PolicyForwarderConfigurationParametersJsonAdapter.class);
+
+ private static final String PARAMETER_CLASS_NAME = "parameterClassName";
+ private static final String POLICY_FORWARDER_PARAMETERS = "parameters";
+
+ @Override
+ public PolicyForwarderConfigurationParameterGroup deserialize(final JsonElement json, final Type typeOfT,
+ final JsonDeserializationContext context) {
+ final JsonObject jsonObject = json.getAsJsonObject();
+
+ final String policyForwarderParameterClassName = getParameterGroupClassName(jsonObject);
+ Class<?> policyForwarderParameterClass = getParameterGroupClass(policyForwarderParameterClassName);
+
+ return context.deserialize(jsonObject.get(POLICY_FORWARDER_PARAMETERS), policyForwarderParameterClass);
+ }
+
+ private String getParameterGroupClassName(final JsonObject jsonObject) {
+ final JsonPrimitive classNameJsonPrimitive = ((JsonPrimitive) jsonObject.get(PARAMETER_CLASS_NAME));
+
+ if (classNameJsonPrimitive == null || classNameJsonPrimitive.getAsString().length() == 0) {
+ final String errorMessage = "parameter \"" + PARAMETER_CLASS_NAME + "\" value \""
+ + (classNameJsonPrimitive != null ? classNameJsonPrimitive.getAsString() : "null")
+ + "\" invalid in JSON file";
+ LOGGER.warn(errorMessage);
+ throw new IllegalArgumentException(errorMessage);
+ }
+ return classNameJsonPrimitive.getAsString().replaceAll("\\s+", "");
+ }
+
+ private Class<?> getParameterGroupClass(final String policyForwarderParameterClassName) {
+ Class<?> policyForwarderParameterClass = null;
+ try {
+ policyForwarderParameterClass = Class.forName(policyForwarderParameterClassName);
+ } catch (final ClassNotFoundException e) {
+ final String errorMessage = "parameter \"" + PARAMETER_CLASS_NAME + "\" value \""
+ + policyForwarderParameterClassName + "\", could not find class";
+ LOGGER.warn(errorMessage, e);
+ throw new IllegalArgumentException(errorMessage, e);
+ }
+ return policyForwarderParameterClass;
+ }
+
+}
diff --git a/main/src/main/java/org/onap/policy/distribution/main/startstop/DistributionActivator.java b/main/src/main/java/org/onap/policy/distribution/main/startstop/DistributionActivator.java
index 70724a12..792c4726 100644
--- a/main/src/main/java/org/onap/policy/distribution/main/startstop/DistributionActivator.java
+++ b/main/src/main/java/org/onap/policy/distribution/main/startstop/DistributionActivator.java
@@ -22,20 +22,21 @@ package org.onap.policy.distribution.main.startstop;
import java.util.HashMap;
import java.util.Map;
-
+import java.util.Map.Entry;
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.main.PolicyDistributionException;
import org.onap.policy.distribution.main.parameters.DistributionParameterGroup;
+import org.onap.policy.distribution.main.parameters.PolicyForwarderConfigurationParameterGroup;
import org.onap.policy.distribution.main.rest.DistributionRestServer;
import org.onap.policy.distribution.reception.decoding.PluginInitializationException;
import org.onap.policy.distribution.reception.handling.AbstractReceptionHandler;
import org.onap.policy.distribution.reception.parameters.ReceptionHandlerParameters;
/**
- * This class wraps a distributor so that it can be activated as a complete service together with all its distribution
- * and forwarding handlers.
+ * This class wraps a distributor so that it can be activated as a complete service together with
+ * all its distribution and forwarding handlers.
*/
public class DistributionActivator {
// The logger for this class
@@ -148,6 +149,11 @@ public class DistributionActivator {
ParameterService.register(params.getPssdConfigurationParametersGroup());
ParameterService.register(params.getPluginHandlerParameters());
}
+ for (final Entry<String, PolicyForwarderConfigurationParameterGroup> forwarderConfiguration : distributionParameterGroup
+ .getPolicyForwarderConfigurationParameters().entrySet()) {
+ forwarderConfiguration.getValue().setName(forwarderConfiguration.getKey());
+ ParameterService.register(forwarderConfiguration.getValue());
+ }
}
/**
@@ -163,6 +169,11 @@ public class DistributionActivator {
ParameterService.deregister((params.getPssdConfigurationParametersGroup().getName()));
ParameterService.deregister((params.getPluginHandlerParameters().getName()));
}
+ for (final Entry<String, PolicyForwarderConfigurationParameterGroup> forwarderConfiguration : distributionParameterGroup
+ .getPolicyForwarderConfigurationParameters().entrySet()) {
+ forwarderConfiguration.getValue().setName(forwarderConfiguration.getKey());
+ ParameterService.deregister(forwarderConfiguration.getKey());
+ }
}
/**
diff --git a/main/src/test/java/org/onap/policy/distribution/main/parameters/CommonTestData.java b/main/src/test/java/org/onap/policy/distribution/main/parameters/CommonTestData.java
index ac58b830..186aa821 100644
--- a/main/src/test/java/org/onap/policy/distribution/main/parameters/CommonTestData.java
+++ b/main/src/test/java/org/onap/policy/distribution/main/parameters/CommonTestData.java
@@ -24,8 +24,9 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-
import org.onap.policy.distribution.forwarding.parameters.PolicyForwarderParameters;
+import org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup;
+import org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup.DummyPolicyForwarderParameterGroupBuilder;
import org.onap.policy.distribution.reception.parameters.PluginHandlerParameters;
import org.onap.policy.distribution.reception.parameters.PolicyDecoderParameters;
import org.onap.policy.distribution.reception.parameters.PssdConfigurationParametersGroup;
@@ -48,6 +49,8 @@ public class CommonTestData {
public static final String FORWARDER_TYPE = "DummyForwarder";
public static final String FORWARDER_CLASS_NAME =
"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder";
+ public static final String FORWARDER_CONFIGURATION_PARAMETERS = "dummyConfiguration";
+ public static final String FORWARDER_HOST = "192.168.99.100";
public static final String RECEPTION_HANDLER_TYPE = "DummyReceptionHandler";
public static final String RECEPTION_HANDLER_CLASS_NAME =
"org.onap.policy.distribution.main.testclasses.DummyReceptionHandler";
@@ -142,8 +145,8 @@ public class CommonTestData {
final Map<String, PolicyForwarderParameters> policyForwarders =
new HashMap<String, PolicyForwarderParameters>();
if (!isEmpty) {
- final PolicyForwarderParameters pFParameters =
- new PolicyForwarderParameters(FORWARDER_TYPE, FORWARDER_CLASS_NAME);
+ final PolicyForwarderParameters pFParameters = new PolicyForwarderParameters(FORWARDER_TYPE,
+ FORWARDER_CLASS_NAME, FORWARDER_CONFIGURATION_PARAMETERS);
policyForwarders.put(DUMMY_ENGINE_FORWARDER_KEY, pFParameters);
}
return policyForwarders;
@@ -163,4 +166,24 @@ public class CommonTestData {
}
return policyDecoders;
}
+
+ /**
+ * Returns PolicyForwarderConfigurationParameterGroups for test cases.
+ *
+ * @param isEmpty boolean value to represent that object created should be empty or not
+ * @return the PolicyForwarderConfigurationParameterGroups
+ */
+ public Map<String, PolicyForwarderConfigurationParameterGroup> getPolicyForwarderConfigurationParameters(
+ final boolean isEmpty) {
+ final Map<String, PolicyForwarderConfigurationParameterGroup> policyForwarderConfigurationParameters =
+ new HashMap<String, PolicyForwarderConfigurationParameterGroup>();
+ if (!isEmpty) {
+ DummyPolicyForwarderParameterGroup dummyPolicyForwarderParameterGroup =
+ new DummyPolicyForwarderParameterGroupBuilder().setUseHttps(true).setHostname(FORWARDER_HOST)
+ .setPort(1234).setUserName("myUser").setPassword("myPassword").setIsManaged(true).build();
+ policyForwarderConfigurationParameters.put(FORWARDER_CONFIGURATION_PARAMETERS,
+ dummyPolicyForwarderParameterGroup);
+ }
+ return policyForwarderConfigurationParameters;
+ }
}
diff --git a/main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterGroup.java b/main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterGroup.java
index a2d72585..0c8c80d6 100644
--- a/main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterGroup.java
+++ b/main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterGroup.java
@@ -26,9 +26,9 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.Map;
-
import org.junit.Test;
import org.onap.policy.common.parameters.GroupValidationResult;
+import org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup;
import org.onap.policy.distribution.reception.parameters.ReceptionHandlerParameters;
/**
@@ -44,9 +44,12 @@ public class TestDistributionParameterGroup {
final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false);
final Map<String, ReceptionHandlerParameters> receptionHandlerParameters = commonTestData
.getReceptionHandlerParameters(false);
+ final Map<String, PolicyForwarderConfigurationParameterGroup> forwarderConfigurations =
+ commonTestData.getPolicyForwarderConfigurationParameters(false);
- final DistributionParameterGroup distributionParameters = new DistributionParameterGroup(
- CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters, receptionHandlerParameters);
+ final DistributionParameterGroup distributionParameters =
+ new DistributionParameterGroup(CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters,
+ receptionHandlerParameters, forwarderConfigurations);
final GroupValidationResult validationResult = distributionParameters.validate();
assertTrue(validationResult.isValid());
assertEquals(restServerParameters.getHost(), distributionParameters.getRestServerParameters().getHost());
@@ -69,6 +72,9 @@ public class TestDistributionParameterGroup {
.getPluginHandlerParameters(),
distributionParameters.getReceptionHandlerParameters()
.get(CommonTestData.DUMMY_RECEPTION_HANDLER_KEY).getPluginHandlerParameters());
+ assertEquals(CommonTestData.FORWARDER_HOST,
+ ((DummyPolicyForwarderParameterGroup) distributionParameters.getPolicyForwarderConfigurationParameters()
+ .get(CommonTestData.FORWARDER_CONFIGURATION_PARAMETERS)).getHostname());
}
@Test
@@ -76,9 +82,11 @@ public class TestDistributionParameterGroup {
final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false);
final Map<String, ReceptionHandlerParameters> receptionHandlerParameters = commonTestData
.getReceptionHandlerParameters(false);
+ final Map<String, PolicyForwarderConfigurationParameterGroup> forwarderConfigurations =
+ commonTestData.getPolicyForwarderConfigurationParameters(false);
final DistributionParameterGroup distributionParameters = new DistributionParameterGroup(null,
- restServerParameters, receptionHandlerParameters);
+ restServerParameters, receptionHandlerParameters, forwarderConfigurations);
final GroupValidationResult validationResult = distributionParameters.validate();
assertFalse(validationResult.isValid());
assertEquals(null, distributionParameters.getName());
@@ -105,9 +113,11 @@ public class TestDistributionParameterGroup {
final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false);
final Map<String, ReceptionHandlerParameters> receptionHandlerParameters = commonTestData
.getReceptionHandlerParameters(false);
+ final Map<String, PolicyForwarderConfigurationParameterGroup> forwarderConfigurations =
+ commonTestData.getPolicyForwarderConfigurationParameters(false);
final DistributionParameterGroup distributionParameters = new DistributionParameterGroup("",
- restServerParameters, receptionHandlerParameters);
+ restServerParameters, receptionHandlerParameters, forwarderConfigurations);
final GroupValidationResult validationResult = distributionParameters.validate();
assertFalse(validationResult.isValid());
assertEquals("", distributionParameters.getName());
@@ -131,9 +141,11 @@ public class TestDistributionParameterGroup {
@Test
public void testDistributionParameterGroup_NullReceptionHandlerParameters() {
final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false);
+ final Map<String, PolicyForwarderConfigurationParameterGroup> forwarderConfigurations =
+ commonTestData.getPolicyForwarderConfigurationParameters(false);
try {
final DistributionParameterGroup distributionParameters = new DistributionParameterGroup(
- CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters, null);
+ CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters, null, forwarderConfigurations);
distributionParameters.validate();
fail("test should throw an exception here");
} catch (final Exception e) {
@@ -147,9 +159,11 @@ public class TestDistributionParameterGroup {
final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(false);
final Map<String, ReceptionHandlerParameters> receptionHandlerParameters = commonTestData
.getReceptionHandlerParameters(true);
-
- final DistributionParameterGroup distributionParameters = new DistributionParameterGroup(
- CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters, receptionHandlerParameters);
+ final Map<String, PolicyForwarderConfigurationParameterGroup> forwarderConfigurations =
+ commonTestData.getPolicyForwarderConfigurationParameters(false);
+ final DistributionParameterGroup distributionParameters =
+ new DistributionParameterGroup(CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters,
+ receptionHandlerParameters, forwarderConfigurations);
distributionParameters.validate();
GroupValidationResult result = distributionParameters.validate();
assertFalse(result.isValid());
@@ -161,9 +175,12 @@ public class TestDistributionParameterGroup {
final RestServerParameters restServerParameters = commonTestData.getRestServerParameters(true);
final Map<String, ReceptionHandlerParameters> receptionHandlerParameters = commonTestData
.getReceptionHandlerParameters(false);
+ final Map<String, PolicyForwarderConfigurationParameterGroup> forwarderConfigurations =
+ commonTestData.getPolicyForwarderConfigurationParameters(false);
- final DistributionParameterGroup distributionParameters = new DistributionParameterGroup(
- CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters, receptionHandlerParameters);
+ final DistributionParameterGroup distributionParameters =
+ new DistributionParameterGroup(CommonTestData.DISTRIBUTION_GROUP_NAME, restServerParameters,
+ receptionHandlerParameters, forwarderConfigurations);
final GroupValidationResult validationResult = distributionParameters.validate();
assertFalse(validationResult.isValid());
assertTrue(validationResult.getResult()
diff --git a/main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterHandler.java b/main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterHandler.java
index 8b474984..14d1a105 100644
--- a/main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterHandler.java
+++ b/main/src/test/java/org/onap/policy/distribution/main/parameters/TestDistributionParameterHandler.java
@@ -27,10 +27,10 @@ import static org.junit.Assert.fail;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
-
import org.junit.Test;
import org.onap.policy.distribution.main.PolicyDistributionException;
import org.onap.policy.distribution.main.startstop.DistributionCommandLineArguments;
+import org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup;
/**
* Class to perform unit test of DistributionParameterHandler.
@@ -40,8 +40,7 @@ import org.onap.policy.distribution.main.startstop.DistributionCommandLineArgume
public class TestDistributionParameterHandler {
@Test
public void testParameterHandlerNoParameterFile() throws PolicyDistributionException {
- final String[] noArgumentString =
- { "-c", "parameters/NoParameterFile.json" };
+ final String[] noArgumentString = {"-c", "parameters/NoParameterFile.json"};
final DistributionCommandLineArguments noArguments = new DistributionCommandLineArguments();
noArguments.parse(noArgumentString);
@@ -56,8 +55,7 @@ public class TestDistributionParameterHandler {
@Test
public void testParameterHandlerEmptyParameters() throws PolicyDistributionException {
- final String[] emptyArgumentString =
- { "-c", "parameters/EmptyParameters.json" };
+ final String[] emptyArgumentString = {"-c", "parameters/EmptyParameters.json"};
final DistributionCommandLineArguments emptyArguments = new DistributionCommandLineArguments();
emptyArguments.parse(emptyArgumentString);
@@ -72,8 +70,7 @@ public class TestDistributionParameterHandler {
@Test
public void testParameterHandlerBadParameters() throws PolicyDistributionException {
- final String[] badArgumentString =
- { "-c", "parameters/BadParameters.json" };
+ final String[] badArgumentString = {"-c", "parameters/BadParameters.json"};
final DistributionCommandLineArguments badArguments = new DistributionCommandLineArguments();
badArguments.parse(badArgumentString);
@@ -90,8 +87,7 @@ public class TestDistributionParameterHandler {
@Test
public void testParameterHandlerInvalidParameters() throws PolicyDistributionException {
- final String[] invalidArgumentString =
- { "-c", "parameters/InvalidParameters.json" };
+ final String[] invalidArgumentString = {"-c", "parameters/InvalidParameters.json"};
final DistributionCommandLineArguments invalidArguments = new DistributionCommandLineArguments();
invalidArguments.parse(invalidArgumentString);
@@ -108,8 +104,7 @@ public class TestDistributionParameterHandler {
@Test
public void testParameterHandlerNoParameters() throws PolicyDistributionException {
- final String[] noArgumentString =
- { "-c", "parameters/NoParameters.json" };
+ final String[] noArgumentString = {"-c", "parameters/NoParameters.json"};
final DistributionCommandLineArguments noArguments = new DistributionCommandLineArguments();
noArguments.parse(noArgumentString);
@@ -124,8 +119,7 @@ public class TestDistributionParameterHandler {
@Test
public void testParameterHandlerMinumumParameters() throws PolicyDistributionException {
- final String[] minArgumentString =
- { "-c", "parameters/MinimumParameters.json" };
+ final String[] minArgumentString = {"-c", "parameters/MinimumParameters.json"};
final DistributionCommandLineArguments minArguments = new DistributionCommandLineArguments();
minArguments.parse(minArgumentString);
@@ -136,8 +130,7 @@ public class TestDistributionParameterHandler {
@Test
public void testDistributionParameterGroup() throws PolicyDistributionException {
- final String[] distributionConfigParameters =
- { "-c", "parameters/DistributionConfigParameters.json" };
+ final String[] distributionConfigParameters = {"-c", "parameters/DistributionConfigParameters.json"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
arguments.parse(distributionConfigParameters);
@@ -155,12 +148,50 @@ public class TestDistributionParameterHandler {
parGroup.getReceptionHandlerParameters().get(CommonTestData.DUMMY_RECEPTION_HANDLER_KEY)
.getPluginHandlerParameters().getPolicyForwarders()
.get(CommonTestData.DUMMY_ENGINE_FORWARDER_KEY).getForwarderType());
+ assertEquals(CommonTestData.FORWARDER_HOST,
+ ((DummyPolicyForwarderParameterGroup) parGroup.getPolicyForwarderConfigurationParameters()
+ .get(CommonTestData.FORWARDER_CONFIGURATION_PARAMETERS)).getHostname());
+ }
+
+ @Test
+ public void testDistributionParameterGroup_InvalidForwarderConfigurationClassName()
+ throws PolicyDistributionException {
+ final String[] distributionConfigParameters =
+ {"-c", "parameters/DistributionConfigParameters_InvalidForwarderConfigurationClassName.json"};
+
+ final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
+ arguments.parse(distributionConfigParameters);
+
+ try {
+ new DistributionParameterHandler().getParameters(arguments);
+ fail("test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().contains("parameter \"parameterClassName\" value \"\" invalid in JSON file"));
+ }
+ }
+
+ @Test
+ public void testDistributionParameterGroup_UnknownForwarderConfigurationClassName()
+ throws PolicyDistributionException {
+ final String[] distributionConfigParameters =
+ {"-c", "parameters/DistributionConfigParameters_UnknownForwarderConfigurationClassName.json"};
+
+ final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
+ arguments.parse(distributionConfigParameters);
+
+ try {
+ new DistributionParameterHandler().getParameters(arguments);
+ fail("test should throw an exception here");
+ } catch (final Exception e) {
+ assertTrue(e.getMessage().contains(
+ "parameter \"parameterClassName\" value \"org.onap.policy.Unknown\", could not find class"));
+ }
}
@Test
public void testDistributionParameterGroup_InvalidName() throws PolicyDistributionException {
final String[] distributionConfigParameters =
- { "-c", "parameters/DistributionConfigParameters_InvalidName.json" };
+ {"-c", "parameters/DistributionConfigParameters_InvalidName.json"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
arguments.parse(distributionConfigParameters);
@@ -177,7 +208,7 @@ public class TestDistributionParameterHandler {
@Test
public void testDistributionParameterGroup_NoReceptionHandler() throws PolicyDistributionException {
final String[] distributionConfigParameters =
- { "-c", "parameters/DistributionConfigParameters_NoReceptionHandler.json" };
+ {"-c", "parameters/DistributionConfigParameters_NoReceptionHandler.json"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
arguments.parse(distributionConfigParameters);
@@ -193,7 +224,7 @@ public class TestDistributionParameterHandler {
@Test
public void testDistributionParameterGroup_EmptyReceptionHandler() throws PolicyDistributionException {
final String[] distributionConfigParameters =
- { "-c", "parameters/DistributionConfigParameters_EmptyReceptionHandler.json" };
+ {"-c", "parameters/DistributionConfigParameters_EmptyReceptionHandler.json"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
arguments.parse(distributionConfigParameters);
@@ -209,7 +240,7 @@ public class TestDistributionParameterHandler {
@Test
public void testDistributionParameterGroup_NoPolicyDecoder() throws PolicyDistributionException {
final String[] distributionConfigParameters =
- { "-c", "parameters/DistributionConfigParameters_NoPolicyDecoder.json" };
+ {"-c", "parameters/DistributionConfigParameters_NoPolicyDecoder.json"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
arguments.parse(distributionConfigParameters);
@@ -225,7 +256,7 @@ public class TestDistributionParameterHandler {
@Test
public void testDistributionParameterGroup_NoPolicyForwarder() throws PolicyDistributionException {
final String[] distributionConfigParameters =
- { "-c", "parameters/DistributionConfigParameters_NoPolicyForwarder.json" };
+ {"-c", "parameters/DistributionConfigParameters_NoPolicyForwarder.json"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
arguments.parse(distributionConfigParameters);
@@ -241,7 +272,7 @@ public class TestDistributionParameterHandler {
@Test
public void testDistributionParameterGroup_EmptyPolicyDecoder() throws PolicyDistributionException {
final String[] distributionConfigParameters =
- { "-c", "parameters/DistributionConfigParameters_EmptyPolicyDecoder.json" };
+ {"-c", "parameters/DistributionConfigParameters_EmptyPolicyDecoder.json"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
arguments.parse(distributionConfigParameters);
@@ -257,7 +288,7 @@ public class TestDistributionParameterHandler {
@Test
public void testDistributionParameterGroup_EmptyPolicyForwarder() throws PolicyDistributionException {
final String[] distributionConfigParameters =
- { "-c", "parameters/DistributionConfigParameters_EmptyPolicyForwarder.json" };
+ {"-c", "parameters/DistributionConfigParameters_EmptyPolicyForwarder.json"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
arguments.parse(distributionConfigParameters);
@@ -274,7 +305,7 @@ public class TestDistributionParameterHandler {
public void testDistributionParameterGroup_InvalidReceptionHandlerParameters()
throws PolicyDistributionException, IOException {
final String[] distributionConfigParameters =
- { "-c", "parameters/DistributionConfigParameters_InvalidReceptionHandlerParameters.json" };
+ {"-c", "parameters/DistributionConfigParameters_InvalidReceptionHandlerParameters.json"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
arguments.parse(distributionConfigParameters);
@@ -294,7 +325,7 @@ public class TestDistributionParameterHandler {
public void testDistributionParameterGroup_InvalidDecoderAndForwarderParameters()
throws PolicyDistributionException, IOException {
final String[] distributionConfigParameters =
- { "-c", "parameters/DistributionConfigParameters_InvalidDecoderAndForwarderParameters.json" };
+ {"-c", "parameters/DistributionConfigParameters_InvalidDecoderAndForwarderParameters.json"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
arguments.parse(distributionConfigParameters);
@@ -314,7 +345,7 @@ public class TestDistributionParameterHandler {
public void testDistributionParameterGroup_InvalidRestServerParameters()
throws PolicyDistributionException, IOException {
final String[] distributionConfigParameters =
- { "-c", "parameters/DistributionConfigParameters_InvalidRestServerParameters.json" };
+ {"-c", "parameters/DistributionConfigParameters_InvalidRestServerParameters.json"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
arguments.parse(distributionConfigParameters);
@@ -332,8 +363,7 @@ public class TestDistributionParameterHandler {
@Test
public void testDistributionVersion() throws PolicyDistributionException {
- final String[] distributionConfigParameters =
- { "-v" };
+ final String[] distributionConfigParameters = {"-v"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
final String version = arguments.parse(distributionConfigParameters);
assertTrue(version.startsWith("ONAP Policy Framework Distribution Service"));
@@ -341,8 +371,7 @@ public class TestDistributionParameterHandler {
@Test
public void testDistributionHelp() throws PolicyDistributionException {
- final String[] distributionConfigParameters =
- { "-h" };
+ final String[] distributionConfigParameters = {"-h"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
final String help = arguments.parse(distributionConfigParameters);
assertTrue(help.startsWith("usage:"));
@@ -350,8 +379,7 @@ public class TestDistributionParameterHandler {
@Test
public void testDistributionInvalidOption() throws PolicyDistributionException {
- final String[] distributionConfigParameters =
- { "-d" };
+ final String[] distributionConfigParameters = {"-d"};
final DistributionCommandLineArguments arguments = new DistributionCommandLineArguments();
try {
arguments.parse(distributionConfigParameters);
diff --git a/main/src/test/java/org/onap/policy/distribution/main/parameters/TestPluginHandlerParameters.java b/main/src/test/java/org/onap/policy/distribution/main/parameters/TestPluginHandlerParameters.java
index 552ee50c..9eeae354 100644
--- a/main/src/test/java/org/onap/policy/distribution/main/parameters/TestPluginHandlerParameters.java
+++ b/main/src/test/java/org/onap/policy/distribution/main/parameters/TestPluginHandlerParameters.java
@@ -26,7 +26,6 @@ import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.Map;
-
import org.junit.Test;
import org.onap.policy.common.parameters.GroupValidationResult;
import org.onap.policy.distribution.forwarding.parameters.PolicyForwarderParameters;
diff --git a/main/src/test/java/org/onap/policy/distribution/main/parameters/TestPolicyForwarderParameters.java b/main/src/test/java/org/onap/policy/distribution/main/parameters/TestPolicyForwarderParameters.java
index d64df1b3..9907bfb8 100644
--- a/main/src/test/java/org/onap/policy/distribution/main/parameters/TestPolicyForwarderParameters.java
+++ b/main/src/test/java/org/onap/policy/distribution/main/parameters/TestPolicyForwarderParameters.java
@@ -23,6 +23,9 @@ package org.onap.policy.distribution.main.parameters;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.onap.policy.distribution.main.parameters.CommonTestData.FORWARDER_CLASS_NAME;
+import static org.onap.policy.distribution.main.parameters.CommonTestData.FORWARDER_CONFIGURATION_PARAMETERS;
+import static org.onap.policy.distribution.main.parameters.CommonTestData.FORWARDER_TYPE;
import org.junit.Test;
import org.onap.policy.common.parameters.GroupValidationResult;
@@ -38,20 +41,20 @@ public class TestPolicyForwarderParameters {
@Test
public void testPolicyForwarderParameters() {
final PolicyForwarderParameters pFParameters =
- new PolicyForwarderParameters(CommonTestData.FORWARDER_TYPE, CommonTestData.FORWARDER_CLASS_NAME);
+ new PolicyForwarderParameters(FORWARDER_TYPE, FORWARDER_CLASS_NAME, FORWARDER_CONFIGURATION_PARAMETERS);
final GroupValidationResult validationResult = pFParameters.validate();
- assertEquals(CommonTestData.FORWARDER_TYPE, pFParameters.getForwarderType());
- assertEquals(CommonTestData.FORWARDER_CLASS_NAME, pFParameters.getForwarderClassName());
+ assertEquals(FORWARDER_TYPE, pFParameters.getForwarderType());
+ assertEquals(FORWARDER_CLASS_NAME, pFParameters.getForwarderClassName());
assertTrue(validationResult.isValid());
}
@Test
public void testPolicyForwarderParameters_InvalidForwarderType() {
final PolicyForwarderParameters pFParameters =
- new PolicyForwarderParameters("", CommonTestData.FORWARDER_CLASS_NAME);
+ new PolicyForwarderParameters("", FORWARDER_CLASS_NAME, FORWARDER_CONFIGURATION_PARAMETERS);
final GroupValidationResult validationResult = pFParameters.validate();
assertEquals("", pFParameters.getForwarderType());
- assertEquals(CommonTestData.FORWARDER_CLASS_NAME, pFParameters.getForwarderClassName());
+ assertEquals(FORWARDER_CLASS_NAME, pFParameters.getForwarderClassName());
assertFalse(validationResult.isValid());
assertTrue(validationResult.getResult().contains(
"field \"forwarderType\" type \"java.lang.String\" value \"\" INVALID, must be a non-blank string"));
@@ -59,7 +62,8 @@ public class TestPolicyForwarderParameters {
@Test
public void testPolicyForwarderParameters_InvalidForwarderClassName() {
- final PolicyForwarderParameters pFParameters = new PolicyForwarderParameters(CommonTestData.FORWARDER_TYPE, "");
+ final PolicyForwarderParameters pFParameters =
+ new PolicyForwarderParameters(FORWARDER_TYPE, "", FORWARDER_CONFIGURATION_PARAMETERS);
final GroupValidationResult validationResult = pFParameters.validate();
assertEquals(CommonTestData.FORWARDER_TYPE, pFParameters.getForwarderType());
assertEquals("", pFParameters.getForwarderClassName());
@@ -71,7 +75,8 @@ public class TestPolicyForwarderParameters {
@Test
public void testPolicyForwarderParameters_InvalidForwarderTypeAndClassName() {
- final PolicyForwarderParameters pFParameters = new PolicyForwarderParameters("", "");
+ final PolicyForwarderParameters pFParameters =
+ new PolicyForwarderParameters("", "", FORWARDER_CONFIGURATION_PARAMETERS);
final GroupValidationResult validationResult = pFParameters.validate();
assertEquals("", pFParameters.getForwarderType());
assertEquals("", pFParameters.getForwarderClassName());
@@ -86,10 +91,10 @@ public class TestPolicyForwarderParameters {
@Test
public void testPolicyForwarderParameters_NullForwarderType() {
final PolicyForwarderParameters pFParameters =
- new PolicyForwarderParameters(null, CommonTestData.FORWARDER_CLASS_NAME);
+ new PolicyForwarderParameters(null, FORWARDER_CLASS_NAME, FORWARDER_CONFIGURATION_PARAMETERS);
final GroupValidationResult validationResult = pFParameters.validate();
assertEquals(null, pFParameters.getForwarderType());
- assertEquals(CommonTestData.FORWARDER_CLASS_NAME, pFParameters.getForwarderClassName());
+ assertEquals(FORWARDER_CLASS_NAME, pFParameters.getForwarderClassName());
assertFalse(validationResult.isValid());
assertTrue(validationResult.getResult()
.contains("field \"forwarderType\" type \"java.lang.String\" value \"null\" INVALID, "
@@ -99,9 +104,9 @@ public class TestPolicyForwarderParameters {
@Test
public void testPolicyForwarderParameters_NullForwarderClassName() {
final PolicyForwarderParameters pFParameters =
- new PolicyForwarderParameters(CommonTestData.FORWARDER_TYPE, null);
+ new PolicyForwarderParameters(FORWARDER_TYPE, null, FORWARDER_CONFIGURATION_PARAMETERS);
final GroupValidationResult validationResult = pFParameters.validate();
- assertEquals(CommonTestData.FORWARDER_TYPE, pFParameters.getForwarderType());
+ assertEquals(FORWARDER_TYPE, pFParameters.getForwarderType());
assertEquals(null, pFParameters.getForwarderClassName());
assertFalse(validationResult.isValid());
assertTrue(validationResult.getResult()
@@ -111,11 +116,11 @@ public class TestPolicyForwarderParameters {
@Test
public void testPolicyForwarderParameters_InvalidForwarderClass() {
- final PolicyForwarderParameters pFParameters = new PolicyForwarderParameters(CommonTestData.FORWARDER_TYPE,
- CommonTestData.FORWARDER_CLASS_NAME + "Invalid");
+ final PolicyForwarderParameters pFParameters = new PolicyForwarderParameters(FORWARDER_TYPE,
+ FORWARDER_CLASS_NAME + "Invalid", FORWARDER_CONFIGURATION_PARAMETERS);
final GroupValidationResult validationResult = pFParameters.validate();
- assertEquals(CommonTestData.FORWARDER_TYPE, pFParameters.getForwarderType());
- assertEquals(CommonTestData.FORWARDER_CLASS_NAME + "Invalid", pFParameters.getForwarderClassName());
+ assertEquals(FORWARDER_TYPE, pFParameters.getForwarderType());
+ assertEquals(FORWARDER_CLASS_NAME + "Invalid", pFParameters.getForwarderClassName());
assertFalse(validationResult.isValid());
assertTrue(validationResult.getResult().contains("policy forwarder class not found in classpath"));
}
diff --git a/main/src/test/java/org/onap/policy/distribution/main/startstop/TestDistributionActivator.java b/main/src/test/java/org/onap/policy/distribution/main/startstop/TestDistributionActivator.java
index c901b5d9..47ac82b1 100644
--- a/main/src/test/java/org/onap/policy/distribution/main/startstop/TestDistributionActivator.java
+++ b/main/src/test/java/org/onap/policy/distribution/main/startstop/TestDistributionActivator.java
@@ -28,6 +28,7 @@ import org.onap.policy.distribution.main.PolicyDistributionException;
import org.onap.policy.distribution.main.parameters.CommonTestData;
import org.onap.policy.distribution.main.parameters.DistributionParameterGroup;
import org.onap.policy.distribution.main.parameters.DistributionParameterHandler;
+import org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup;
/**
* Class to perform unit test of DistributionActivator.
@@ -38,8 +39,7 @@ public class TestDistributionActivator {
@Test
public void testDistributionActivator() throws PolicyDistributionException {
- final String[] distributionConfigParameters =
- { "-c", "parameters/DistributionConfigParameters.json" };
+ final String[] distributionConfigParameters = {"-c", "parameters/DistributionConfigParameters.json"};
final DistributionCommandLineArguments arguments =
new DistributionCommandLineArguments(distributionConfigParameters);
@@ -61,6 +61,9 @@ public class TestDistributionActivator {
activator.getParameterGroup().getReceptionHandlerParameters()
.get(CommonTestData.DUMMY_RECEPTION_HANDLER_KEY).getPluginHandlerParameters()
.getPolicyForwarders().get(CommonTestData.DUMMY_ENGINE_FORWARDER_KEY).getForwarderType());
+ assertEquals(DummyPolicyForwarderParameterGroup.class,
+ activator.getParameterGroup().getPolicyForwarderConfigurationParameters()
+ .get(CommonTestData.FORWARDER_CONFIGURATION_PARAMETERS).getClass());
activator.terminate();
}
}
diff --git a/main/src/test/java/org/onap/policy/distribution/main/testclasses/DummyPolicyForwarder.java b/main/src/test/java/org/onap/policy/distribution/main/testclasses/DummyPolicyForwarder.java
index 5cae0c6a..c9c7fef2 100644
--- a/main/src/test/java/org/onap/policy/distribution/main/testclasses/DummyPolicyForwarder.java
+++ b/main/src/test/java/org/onap/policy/distribution/main/testclasses/DummyPolicyForwarder.java
@@ -22,7 +22,6 @@ package org.onap.policy.distribution.main.testclasses;
import java.util.ArrayList;
import java.util.Collection;
-
import org.onap.policy.distribution.forwarding.PolicyForwarder;
import org.onap.policy.distribution.forwarding.PolicyForwardingException;
import org.onap.policy.distribution.model.Policy;
@@ -49,4 +48,7 @@ public class DummyPolicyForwarder implements PolicyForwarder {
public boolean receivedPolicy(final Policy policy) {
return policiesReceived.contains(policy);
}
+
+ @Override
+ public void configure(String parameterGroupName) {}
}
diff --git a/main/src/test/java/org/onap/policy/distribution/main/testclasses/DummyPolicyForwarderParameterGroup.java b/main/src/test/java/org/onap/policy/distribution/main/testclasses/DummyPolicyForwarderParameterGroup.java
new file mode 100644
index 00000000..66217d18
--- /dev/null
+++ b/main/src/test/java/org/onap/policy/distribution/main/testclasses/DummyPolicyForwarderParameterGroup.java
@@ -0,0 +1,131 @@
+/*-
+ * ============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.main.testclasses;
+
+import org.onap.policy.common.parameters.GroupValidationResult;
+import org.onap.policy.distribution.main.parameters.PolicyForwarderConfigurationParameterGroup;
+
+/**
+ * Dummy policy forwarder parameter group.
+ */
+public class DummyPolicyForwarderParameterGroup extends PolicyForwarderConfigurationParameterGroup {
+
+ private boolean useHttps;
+ private String hostname;
+ private int port;
+ private String userName;
+ private String password;
+ private boolean isManaged;
+
+ public boolean isUseHttps() {
+ return useHttps;
+ }
+
+ public String getHostname() {
+ return hostname;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public boolean isManaged() {
+ return isManaged;
+ }
+
+ /**
+ * Builder for DummyPolicyForwarderParameterGroup.
+ */
+ public static class DummyPolicyForwarderParameterGroupBuilder {
+ private boolean useHttps;
+ private String hostname;
+ private int port;
+ private String userName;
+ private String password;
+ private boolean isManaged;
+
+ public DummyPolicyForwarderParameterGroupBuilder setUseHttps(final boolean useHttps) {
+ this.useHttps = useHttps;
+ return this;
+ }
+
+ public DummyPolicyForwarderParameterGroupBuilder setHostname(final String hostname) {
+ this.hostname = hostname;
+ return this;
+ }
+
+ public DummyPolicyForwarderParameterGroupBuilder setPort(final int port) {
+ this.port = port;
+ return this;
+ }
+
+ public DummyPolicyForwarderParameterGroupBuilder setUserName(final String userName) {
+ this.userName = userName;
+ return this;
+ }
+
+ public DummyPolicyForwarderParameterGroupBuilder setPassword(final String password) {
+ this.password = password;
+ return this;
+ }
+
+ public DummyPolicyForwarderParameterGroupBuilder setIsManaged(final boolean isManaged) {
+ this.isManaged = isManaged;
+ return this;
+ }
+
+ /**
+ * Creates a new DummyPolicyForwarderParameterGroup instance.
+ */
+ public DummyPolicyForwarderParameterGroup build() {
+ return new DummyPolicyForwarderParameterGroup(this);
+ }
+ }
+
+ /**
+ * Construct an instance.
+ *
+ * @param builder the builder create the instance from
+ */
+ private DummyPolicyForwarderParameterGroup(final DummyPolicyForwarderParameterGroupBuilder builder) {
+ this.useHttps = builder.useHttps;
+ this.hostname = builder.hostname;
+ this.port = builder.port;
+ this.userName = builder.userName;
+ this.password = builder.password;
+ this.isManaged = builder.isManaged;
+ }
+
+ @Override
+ public GroupValidationResult validate() {
+ final GroupValidationResult validationResult = new GroupValidationResult(this);
+ return validationResult;
+ }
+
+}
diff --git a/main/src/test/resources/parameters/DistributionConfigParameters.json b/main/src/test/resources/parameters/DistributionConfigParameters.json
index 29e3e467..7a557624 100644
--- a/main/src/test/resources/parameters/DistributionConfigParameters.json
+++ b/main/src/test/resources/parameters/DistributionConfigParameters.json
@@ -44,10 +44,24 @@
"policyForwarders":{
"DummyForwarder":{
"forwarderType":"DummyForwarder",
- "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder"
+ "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder",
+ "forwarderConfigurationParameters": "dummyConfiguration"
}
}
}
}
+ },
+ "policyForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
}
}
diff --git a/main/src/test/resources/parameters/DistributionConfigParameters_EmptyPolicyDecoder.json b/main/src/test/resources/parameters/DistributionConfigParameters_EmptyPolicyDecoder.json
index ce667771..d11ac9ea 100644
--- a/main/src/test/resources/parameters/DistributionConfigParameters_EmptyPolicyDecoder.json
+++ b/main/src/test/resources/parameters/DistributionConfigParameters_EmptyPolicyDecoder.json
@@ -40,10 +40,24 @@
"policyForwarders":{
"DummyForwarder":{
"forwarderType":"DummyForwarder",
- "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder"
+ "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder",
+ "forwarderConfigurationName": "dummyConfiguration"
}
}
}
}
+ },
+ "policyForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
}
}
diff --git a/main/src/test/resources/parameters/DistributionConfigParameters_EmptyPolicyForwarder.json b/main/src/test/resources/parameters/DistributionConfigParameters_EmptyPolicyForwarder.json
index 3eceef2d..c534154c 100644
--- a/main/src/test/resources/parameters/DistributionConfigParameters_EmptyPolicyForwarder.json
+++ b/main/src/test/resources/parameters/DistributionConfigParameters_EmptyPolicyForwarder.json
@@ -45,5 +45,18 @@
}
}
}
+ },
+ "policyForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
}
}
diff --git a/main/src/test/resources/parameters/DistributionConfigParameters_EmptyReceptionHandler.json b/main/src/test/resources/parameters/DistributionConfigParameters_EmptyReceptionHandler.json
index 74733007..b8010f8d 100644
--- a/main/src/test/resources/parameters/DistributionConfigParameters_EmptyReceptionHandler.json
+++ b/main/src/test/resources/parameters/DistributionConfigParameters_EmptyReceptionHandler.json
@@ -7,5 +7,18 @@
"password":"zb!XztG34"
},
"receptionHandlerParameters":{
+ },
+ "policyForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
}
} \ No newline at end of file
diff --git a/main/src/test/resources/parameters/DistributionConfigParameters_InvalidDecoderAndForwarderParameters.json b/main/src/test/resources/parameters/DistributionConfigParameters_InvalidDecoderAndForwarderParameters.json
index 4d1c4090..0c9caa6c 100644
--- a/main/src/test/resources/parameters/DistributionConfigParameters_InvalidDecoderAndForwarderParameters.json
+++ b/main/src/test/resources/parameters/DistributionConfigParameters_InvalidDecoderAndForwarderParameters.json
@@ -52,19 +52,35 @@
"policyForwarders":{
"DummyForwarder":{
"forwarderType":"DummyForwarder",
- "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder"
+ "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder",
+ "forwarderConfigurationName": "dummyConfiguration"
},
"PAPStandaloneForwarder":{
"forwarderType":"",
- "forwarderClassName":"org.onap.policy.distribution.main.testclasses.PapStandalonePolicyForwarder"
+ "forwarderClassName":"org.onap.policy.distribution.main.testclasses.PapStandalonePolicyForwarder",
+ "forwarderConfigurationName": "dummyConfiguration"
},
"PAPEngineForwarder":{
"forwarderType":"PAPEngineForwarder",
- "forwarderClassName":""
+ "forwarderClassName":"",
+ "forwarderConfigurationName": "dummyConfiguration"
}
}
}
}
+ },
+ "policyForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
}
}
diff --git a/main/src/test/resources/parameters/DistributionConfigParameters_InvalidForwarderConfigurationClassName.json b/main/src/test/resources/parameters/DistributionConfigParameters_InvalidForwarderConfigurationClassName.json
new file mode 100644
index 00000000..ba895a67
--- /dev/null
+++ b/main/src/test/resources/parameters/DistributionConfigParameters_InvalidForwarderConfigurationClassName.json
@@ -0,0 +1,67 @@
+{
+ "name":"SDCDistributionGroup",
+ "restServerParameters":{
+ "host":"0.0.0.0",
+ "port":6969,
+ "userName":"healthcheck",
+ "password":"zb!XztG34"
+ },
+ "receptionHandlerParameters":{
+ "DummyReceptionHandler":{
+ "receptionHandlerType":"DummyReceptionHandler",
+ "receptionHandlerClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandler",
+ "pssdConfiguration":{
+ "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
+ },
+ "pluginHandlerParameters":{
+ "policyDecoders":{
+ "DummyDecoder":{
+ "decoderType":"DummyDecoder",
+ "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+ }
+ },
+ "policyForwarders":{
+ "DummyForwarder":{
+ "forwarderType":"DummyForwarder",
+ "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder",
+ "forwarderConfigurationParameters": "dummyConfiguration"
+ }
+ }
+ }
+ }
+ },
+ "policyForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
+ }
+}
diff --git a/main/src/test/resources/parameters/DistributionConfigParameters_InvalidName.json b/main/src/test/resources/parameters/DistributionConfigParameters_InvalidName.json
index 377c70ec..7cafc266 100644
--- a/main/src/test/resources/parameters/DistributionConfigParameters_InvalidName.json
+++ b/main/src/test/resources/parameters/DistributionConfigParameters_InvalidName.json
@@ -44,10 +44,24 @@
"policyForwarders":{
"DummyForwarder":{
"forwarderType":"DummyForwarder",
- "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder"
+ "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder",
+ "forwarderConfigurationName": "dummyConfiguration"
}
}
}
}
+ },
+ "policyForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
}
}
diff --git a/main/src/test/resources/parameters/DistributionConfigParameters_InvalidReceptionHandlerParameters.json b/main/src/test/resources/parameters/DistributionConfigParameters_InvalidReceptionHandlerParameters.json
index 0ea171e8..793702fb 100644
--- a/main/src/test/resources/parameters/DistributionConfigParameters_InvalidReceptionHandlerParameters.json
+++ b/main/src/test/resources/parameters/DistributionConfigParameters_InvalidReceptionHandlerParameters.json
@@ -44,10 +44,24 @@
"policyForwarders":{
"DummyForwarder":{
"forwarderType":"DummyForwarder",
- "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder"
+ "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder",
+ "forwarderConfigurationName": "dummyConfiguration"
}
}
}
}
+ },
+ "policyForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
}
}
diff --git a/main/src/test/resources/parameters/DistributionConfigParameters_InvalidRestServerParameters.json b/main/src/test/resources/parameters/DistributionConfigParameters_InvalidRestServerParameters.json
index 85d450e6..0d650331 100644
--- a/main/src/test/resources/parameters/DistributionConfigParameters_InvalidRestServerParameters.json
+++ b/main/src/test/resources/parameters/DistributionConfigParameters_InvalidRestServerParameters.json
@@ -44,10 +44,24 @@
"policyForwarders":{
"DummyForwarder":{
"forwarderType":"DummyForwarder",
- "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder"
+ "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder",
+ "forwarderConfigurationName": "dummyConfiguration"
}
}
}
}
+ },
+ "policyForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
}
}
diff --git a/main/src/test/resources/parameters/DistributionConfigParameters_NoPolicyDecoder.json b/main/src/test/resources/parameters/DistributionConfigParameters_NoPolicyDecoder.json
index ffb4c728..f9392db5 100644
--- a/main/src/test/resources/parameters/DistributionConfigParameters_NoPolicyDecoder.json
+++ b/main/src/test/resources/parameters/DistributionConfigParameters_NoPolicyDecoder.json
@@ -38,10 +38,24 @@
"policyForwarders":{
"DummyForwarder":{
"forwarderType":"DummyForwarder",
- "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder"
+ "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder",
+ "forwarderConfigurationName": "dummyConfiguration"
}
}
}
}
+ },
+ "policyForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
}
}
diff --git a/main/src/test/resources/parameters/DistributionConfigParameters_UnknownForwarderConfigurationClassName.json b/main/src/test/resources/parameters/DistributionConfigParameters_UnknownForwarderConfigurationClassName.json
new file mode 100644
index 00000000..c189671d
--- /dev/null
+++ b/main/src/test/resources/parameters/DistributionConfigParameters_UnknownForwarderConfigurationClassName.json
@@ -0,0 +1,67 @@
+{
+ "name":"SDCDistributionGroup",
+ "restServerParameters":{
+ "host":"0.0.0.0",
+ "port":6969,
+ "userName":"healthcheck",
+ "password":"zb!XztG34"
+ },
+ "receptionHandlerParameters":{
+ "DummyReceptionHandler":{
+ "receptionHandlerType":"DummyReceptionHandler",
+ "receptionHandlerClassName":"org.onap.policy.distribution.main.testclasses.DummyReceptionHandler",
+ "pssdConfiguration":{
+ "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
+ },
+ "pluginHandlerParameters":{
+ "policyDecoders":{
+ "DummyDecoder":{
+ "decoderType":"DummyDecoder",
+ "decoderClassName":"org.onap.policy.distribution.main.testclasses.DummyDecoder"
+ }
+ },
+ "policyForwarders":{
+ "DummyForwarder":{
+ "forwarderType":"DummyForwarder",
+ "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder",
+ "forwarderConfigurationParameters": "dummyConfiguration"
+ }
+ }
+ }
+ }
+ },
+ "policyForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.Unknown",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
+ }
+}
diff --git a/main/src/test/resources/parameters/MinimumParameters.json b/main/src/test/resources/parameters/MinimumParameters.json
index c113d2ce..1b797def 100644
--- a/main/src/test/resources/parameters/MinimumParameters.json
+++ b/main/src/test/resources/parameters/MinimumParameters.json
@@ -44,10 +44,24 @@
"policyForwarders":{
"DummyForwarder":{
"forwarderType":"DummyForwarder",
- "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder"
+ "forwarderClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarder",
+ "forwarderConfigurationName": "dummyConfiguration"
}
}
}
}
+ },
+ "policyForwarderConfigurationParameters":{
+ "dummyConfiguration":{
+ "parameterClassName":"org.onap.policy.distribution.main.testclasses.DummyPolicyForwarderParameterGroup",
+ "parameters":{
+ "useHttps": false,
+ "hostname": "192.168.99.100",
+ "port": 8081,
+ "userName": "user",
+ "password": "pw123",
+ "isManaged": true
+ }
+ }
}
}
diff --git a/model/src/main/java/org/onap/policy/distribution/model/OptimizationPolicy.java b/model/src/main/java/org/onap/policy/distribution/model/OptimizationPolicy.java
new file mode 100644
index 00000000..797ea4b9
--- /dev/null
+++ b/model/src/main/java/org/onap/policy/distribution/model/OptimizationPolicy.java
@@ -0,0 +1,126 @@
+/*-
+ * ============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.model;
+
+import java.util.Date;
+
+/**
+ * An optimization policy
+ */
+public class OptimizationPolicy implements Policy {
+
+ private static final String OPTIMIZATION = "Optimization";
+ private String policyName;
+ private String policyDescription;
+ private String policyConfigType;
+ private String onapName;
+ private String configBody;
+ private String configBodyType;
+ private Date timetolive;
+ private String guard;
+ private String riskLevel;
+ private String riskType;
+
+ @Override
+ public String getPolicyName() {
+ return policyName;
+ }
+
+ @Override
+ public String getPolicyType() {
+ return OPTIMIZATION;
+ }
+
+ public void setPolicyName(String policyName) {
+ this.policyName = policyName;
+ }
+
+ public String getPolicyDescription() {
+ return policyDescription;
+ }
+
+ public void setPolicyDescription(String policyDescription) {
+ this.policyDescription = policyDescription;
+ }
+
+ public String getPolicyConfigType() {
+ return policyConfigType;
+ }
+
+ public void setPolicyConfigType(String policyConfigType) {
+ this.policyConfigType = policyConfigType;
+ }
+
+ public String getOnapName() {
+ return onapName;
+ }
+
+ public void setOnapName(String onapName) {
+ this.onapName = onapName;
+ }
+
+ public String getConfigBody() {
+ return configBody;
+ }
+
+ public void setConfigBody(String configBody) {
+ this.configBody = configBody;
+ }
+
+ public String getConfigBodyType() {
+ return configBodyType;
+ }
+
+ public void setConfigBodyType(String configBodyType) {
+ this.configBodyType = configBodyType;
+ }
+
+ public Date getTimetolive() {
+ return timetolive;
+ }
+
+ public void setTimetolive(Date timetolive) {
+ this.timetolive = timetolive;
+ }
+
+ public String getGuard() {
+ return guard;
+ }
+
+ public void setGuard(String guard) {
+ this.guard = guard;
+ }
+
+ public String getRiskLevel() {
+ return riskLevel;
+ }
+
+ public void setRiskLevel(String riskLevel) {
+ this.riskLevel = riskLevel;
+ }
+
+ public String getRiskType() {
+ return riskType;
+ }
+
+ public void setRiskType(String riskType) {
+ this.riskType = riskType;
+ }
+}
diff --git a/model/src/main/java/org/onap/policy/distribution/model/Policy.java b/model/src/main/java/org/onap/policy/distribution/model/Policy.java
index 74bc9e93..749f5b3d 100644
--- a/model/src/main/java/org/onap/policy/distribution/model/Policy.java
+++ b/model/src/main/java/org/onap/policy/distribution/model/Policy.java
@@ -25,6 +25,18 @@ package org.onap.policy.distribution.model;
*/
public interface Policy {
- // Add methods for PolicyForwarder to use when composing REST call to PAP
+ /**
+ * Get the name of the policy.
+ *
+ * @return the name of the policy
+ */
+ String getPolicyName();
+
+ /**
+ * Get the type of the policy.
+ *
+ * @return the type of the policy
+ */
+ String getPolicyType();
}
diff --git a/plugins/forwarding-plugins/pom.xml b/plugins/forwarding-plugins/pom.xml
index 24985bbe..006caa95 100644
--- a/plugins/forwarding-plugins/pom.xml
+++ b/plugins/forwarding-plugins/pom.xml
@@ -36,5 +36,25 @@
<artifactId>forwarding</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.onap.policy.distribution</groupId>
+ <artifactId>main</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.policy.engine</groupId>
+ <artifactId>PolicyEngineAPI</artifactId>
+ <version>1.3.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>com.thoughtworks</groupId>
+ <artifactId>web-stub</artifactId>
+ <version>1.1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-all</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
diff --git a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyAdapter.java b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyAdapter.java
new file mode 100644
index 00000000..c50eac12
--- /dev/null
+++ b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyAdapter.java
@@ -0,0 +1,53 @@
+/*-
+ * ============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.forwarding.xacml.pdp;
+
+import org.onap.policy.api.PolicyParameters;
+import org.onap.policy.api.PushPolicyParameters;
+import org.onap.policy.distribution.model.Policy;
+
+/**
+ * Adapts {@link Policy} objects to objects compatible with the XACML PDP API.
+ */
+public interface XacmlPdpPolicyAdapter<T extends Policy> {
+
+ /**
+ * Get the policy.
+ *
+ * @return the policy
+ */
+ T getPolicy();
+
+ /**
+ * Get as a {@link PolicyParameters} object.
+ *
+ * @returna {@link PolicyParameters} object
+ */
+ PolicyParameters getAsPolicyParameters();
+
+ /**
+ * Get as a {@link PushPolicyParameters} object.
+ *
+ * @returna {@link PushPolicyParameters} object
+ */
+ PushPolicyParameters getAsPushPolicyParameters(final String pdpGroups);
+
+}
diff --git a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyForwarder.java b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyForwarder.java
new file mode 100644
index 00000000..30d8f3ae
--- /dev/null
+++ b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyForwarder.java
@@ -0,0 +1,135 @@
+/*-
+ * ============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.forwarding.xacml.pdp;
+
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.util.Collection;
+import java.util.Collections;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import org.onap.policy.api.PolicyParameters;
+import org.onap.policy.api.PushPolicyParameters;
+import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams;
+import org.onap.policy.common.endpoints.http.client.HttpClient;
+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.forwarding.PolicyForwarder;
+import org.onap.policy.distribution.forwarding.xacml.pdp.adapters.XacmlPdpOptimizationPolicyAdapter;
+import org.onap.policy.distribution.model.OptimizationPolicy;
+import org.onap.policy.distribution.model.Policy;
+import org.springframework.http.HttpStatus;
+
+/**
+ * Forwards policies to the XACML PDP.
+ */
+public class XacmlPdpPolicyForwarder implements PolicyForwarder {
+
+ private static final Logger LOGGER = FlexLogger.getLogger(XacmlPdpPolicyForwarder.class);
+ private static final String BASE_PATH = "pdp/api/";
+
+ private XacmlPdpPolicyForwarderParameterGroup configurationParameters = null;
+
+
+ @Override
+ public void forward(final Collection<Policy> policies) {
+ for (Policy policy : policies) {
+ forward(policy);
+ }
+ }
+
+ private void forward(Policy policy) {
+ XacmlPdpPolicyAdapter<?> policyAdapter = getXacmlPdpPolicyAdapter(policy);
+
+ if (policyAdapter == null) {
+ LOGGER.error("Cannot forward policy " + policy + ". Unsupported policy type "
+ + policy.getClass().getSimpleName());
+ return;
+ }
+
+ boolean policyCreated = createPolicy(policyAdapter);
+ if (policyCreated) {
+ pushPolicy(policyAdapter);
+ }
+ }
+
+ private XacmlPdpPolicyAdapter<?> getXacmlPdpPolicyAdapter(Policy policy) {
+ if (policy instanceof OptimizationPolicy) {
+ return new XacmlPdpOptimizationPolicyAdapter((OptimizationPolicy) policy);
+ }
+ return null;
+ }
+
+ private boolean createPolicy(XacmlPdpPolicyAdapter<?> policyAdapter) {
+ PolicyParameters policyParameters = policyAdapter.getAsPolicyParameters();
+ Entity<PolicyParameters> entity = Entity.entity(policyParameters, MediaType.APPLICATION_JSON);
+
+ return invokeHttpClient(entity, "createPolicy", policyAdapter.getPolicy().getPolicyName());
+ }
+
+ private boolean pushPolicy(XacmlPdpPolicyAdapter<?> policyAdapter) {
+ PushPolicyParameters pushPolicyParameters =
+ policyAdapter.getAsPushPolicyParameters(configurationParameters.getPdpGroup());
+ Entity<PushPolicyParameters> entity = Entity.entity(pushPolicyParameters, MediaType.APPLICATION_JSON);
+
+ return invokeHttpClient(entity, "pushPolicy", policyAdapter.getPolicy().getPolicyName());
+ }
+
+ private boolean invokeHttpClient(final Entity<?> entity, final String method, final String policyName) {
+
+ try {
+ Response response = getHttpClient().put(method, entity,
+ Collections.singletonMap("ClientAuth", configurationParameters.getClientAuth()));
+
+ if (response.getStatus() != HttpStatus.OK.value()) {
+ LOGGER.error(
+ "Invocation of method " + method + " failed for policy " + policyName + ". Response status: "
+ + response.getStatus() + ", Response status info: " + response.getStatusInfo());
+ return false;
+ }
+ } catch (KeyManagementException | NoSuchAlgorithmException exception) {
+ LOGGER.error("Invocation of method " + method + " failed for policy " + policyName
+ + " due to error opening Http client", exception);
+ return false;
+ }
+ return true;
+ }
+
+ private HttpClient getHttpClient() throws KeyManagementException, NoSuchAlgorithmException {
+ boolean useHttps = configurationParameters.isUseHttps();
+ String hostname = configurationParameters.getHostname();
+ int port = configurationParameters.getPort();
+ String userName = configurationParameters.getUserName();
+ String password = configurationParameters.getPassword();
+ boolean managed = configurationParameters.isManaged();
+ BusTopicParams params = BusTopicParams.builder().clientName("SDC Dist").useHttps(useHttps).hostname(hostname)
+ .port(port).userName(userName).password(password).basePath(BASE_PATH).managed(managed).build();
+ return HttpClient.factory.build(params);
+ }
+
+ @Override
+ public void configure(String parameterGroupName) {
+ configurationParameters = ParameterService.get(parameterGroupName);
+ }
+
+}
diff --git a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyForwarderParameterGroup.java b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyForwarderParameterGroup.java
new file mode 100644
index 00000000..e72e64ae
--- /dev/null
+++ b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/XacmlPdpPolicyForwarderParameterGroup.java
@@ -0,0 +1,182 @@
+/*-
+ * ============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.forwarding.xacml.pdp;
+
+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.main.parameters.PolicyForwarderConfigurationParameterGroup;
+
+/**
+ * Holds the parameters for the{@link XacmlPdpPolicyForwarder}
+ */
+public class XacmlPdpPolicyForwarderParameterGroup extends PolicyForwarderConfigurationParameterGroup {
+
+ public static final String POLICY_FORWARDER_PLUGIN_CLASS = XacmlPdpPolicyForwarder.class.getCanonicalName();
+
+ private boolean useHttps;
+ private String hostname;
+ private int port;
+ private String userName;
+ private String password;
+ private String clientAuth;
+ private boolean isManaged;
+ private String pdpGroup;
+
+ public boolean isUseHttps() {
+ return useHttps;
+ }
+
+ public String getHostname() {
+ return hostname;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public String getClientAuth() {
+ return clientAuth;
+ }
+
+ public boolean isManaged() {
+ return isManaged;
+ }
+
+ public String getPdpGroup() {
+ return pdpGroup;
+ }
+
+ /**
+ * Builder for XacmlPdpPolicyForwarderParameterGroup.
+ */
+ public static class XacmlPdpPolicyForwarderParameterGroupBuilder {
+ private boolean useHttps = false;
+ private String hostname;
+ private int port;
+ private String userName;
+ private String password;
+ private String clientAuth;
+ private boolean isManaged = true;
+ private String pdpGroup;
+
+ public XacmlPdpPolicyForwarderParameterGroupBuilder setUseHttps(final boolean useHttps) {
+ this.useHttps = useHttps;
+ return this;
+ }
+
+ public XacmlPdpPolicyForwarderParameterGroupBuilder setHostname(final String hostname) {
+ this.hostname = hostname;
+ return this;
+ }
+
+ public XacmlPdpPolicyForwarderParameterGroupBuilder setPort(final int port) {
+ this.port = port;
+ return this;
+ }
+
+ public XacmlPdpPolicyForwarderParameterGroupBuilder setUserName(final String userName) {
+ this.userName = userName;
+ return this;
+ }
+
+ public XacmlPdpPolicyForwarderParameterGroupBuilder setPassword(final String password) {
+ this.password = password;
+ return this;
+ }
+
+ public XacmlPdpPolicyForwarderParameterGroupBuilder setClientAuth(final String clientAuth) {
+ this.clientAuth = clientAuth;
+ return this;
+ }
+
+ public XacmlPdpPolicyForwarderParameterGroupBuilder setIsManaged(final boolean isManaged) {
+ this.isManaged = isManaged;
+ return this;
+ }
+
+ public XacmlPdpPolicyForwarderParameterGroupBuilder setPdpGroup(final String pdpGroup) {
+ this.pdpGroup = pdpGroup;
+ return this;
+ }
+
+ /**
+ * Creates a new XacmlPapServletPolicyForwarderParameterGroup instance.
+ */
+ public XacmlPdpPolicyForwarderParameterGroup build() {
+ return new XacmlPdpPolicyForwarderParameterGroup(this);
+ }
+ }
+
+ /**
+ * Construct an instance
+ *
+ * @param builder the builder create the instance from
+ */
+ private XacmlPdpPolicyForwarderParameterGroup(final XacmlPdpPolicyForwarderParameterGroupBuilder builder) {
+ this.useHttps = builder.useHttps;
+ this.hostname = builder.hostname;
+ this.port = builder.port;
+ this.userName = builder.userName;
+ this.password = builder.password;
+ this.clientAuth = builder.clientAuth;
+ this.isManaged = builder.isManaged;
+ this.pdpGroup = builder.pdpGroup;
+ }
+
+ @Override
+ public GroupValidationResult validate() {
+ final GroupValidationResult validationResult = new GroupValidationResult(this);
+ if (!ParameterValidationUtils.validateStringParameter(hostname)) {
+ validationResult.setResult("hostname", ValidationStatus.INVALID,
+ "must be a non-blank string containing hostname/ipaddress");
+ }
+ if (!ParameterValidationUtils.validateIntParameter(port)) {
+ validationResult.setResult("port", ValidationStatus.INVALID, "must be a positive integer containing port");
+ }
+ if (!ParameterValidationUtils.validateStringParameter(userName)) {
+ validationResult.setResult("userName", ValidationStatus.INVALID,
+ "must be a non-blank string containing userName");
+ }
+ if (!ParameterValidationUtils.validateStringParameter(password)) {
+ validationResult.setResult("password", ValidationStatus.INVALID,
+ "must be a non-blank string containing password");
+ }
+ if (!ParameterValidationUtils.validateStringParameter(clientAuth)) {
+ validationResult.setResult("clientAuth", ValidationStatus.INVALID,
+ "must be a non-blank string containing clientAuth");
+ }
+ if (!ParameterValidationUtils.validateStringParameter(pdpGroup)) {
+ validationResult.setResult("pdpGroup", ValidationStatus.INVALID,
+ "must be a non-blank string containing pdpGroup");
+ }
+ return validationResult;
+ }
+
+}
diff --git a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/adapters/AbstractXacmlPdpPolicyAdapter.java b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/adapters/AbstractXacmlPdpPolicyAdapter.java
new file mode 100644
index 00000000..c1365166
--- /dev/null
+++ b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/adapters/AbstractXacmlPdpPolicyAdapter.java
@@ -0,0 +1,54 @@
+/*-
+ * ============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.forwarding.xacml.pdp.adapters;
+
+import org.onap.policy.api.PushPolicyParameters;
+import org.onap.policy.distribution.forwarding.xacml.pdp.XacmlPdpPolicyAdapter;
+import org.onap.policy.distribution.model.Policy;
+
+/**
+ * Base class for {@link XacmlPdpPolicyAdapter} implementations.
+ *
+ * @param <T> the type of policy the adapter handles
+ */
+public abstract class AbstractXacmlPdpPolicyAdapter<T extends Policy> implements XacmlPdpPolicyAdapter<T> {
+
+ private T policy;
+
+ protected AbstractXacmlPdpPolicyAdapter(T policy) {
+ this.policy = policy;
+ }
+
+ @Override
+ public T getPolicy() {
+ return policy;
+ }
+
+ @Override
+ public PushPolicyParameters getAsPushPolicyParameters(String pdpGroups) {
+ PushPolicyParameters pushPolicyParameters = new PushPolicyParameters();
+ pushPolicyParameters.setPolicyName(policy.getPolicyName());
+ pushPolicyParameters.setPolicyType(policy.getPolicyType());
+ pushPolicyParameters.setPdpGroup(pdpGroups);
+ return pushPolicyParameters;
+ }
+
+}
diff --git a/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/adapters/XacmlPdpOptimizationPolicyAdapter.java b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/adapters/XacmlPdpOptimizationPolicyAdapter.java
new file mode 100644
index 00000000..1ec654fa
--- /dev/null
+++ b/plugins/forwarding-plugins/src/main/java/org/onap/policy/distribution/forwarding/xacml/pdp/adapters/XacmlPdpOptimizationPolicyAdapter.java
@@ -0,0 +1,54 @@
+/*-
+ * ============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.forwarding.xacml.pdp.adapters;
+
+import org.onap.policy.api.PolicyConfigType;
+import org.onap.policy.api.PolicyParameters;
+import org.onap.policy.distribution.model.OptimizationPolicy;
+
+/**
+ * Adapts {@link OptimizationPolicy} objects to objects compatible with the XACML PDP API.
+ */
+public class XacmlPdpOptimizationPolicyAdapter extends AbstractXacmlPdpPolicyAdapter<OptimizationPolicy> {
+
+ /**
+ * Create an instance to adapt the given {@link OptimizationPolicy}.
+ *
+ * @param optimizationPolicy the {@link OptimizationPolicy} to be adapted
+ */
+ public XacmlPdpOptimizationPolicyAdapter(final OptimizationPolicy optimizationPolicy) {
+ super(optimizationPolicy);
+ }
+
+ @Override
+ public PolicyParameters getAsPolicyParameters() {
+ PolicyParameters policyParameters = new PolicyParameters();
+ policyParameters.setPolicyName(getPolicy().getPolicyName());
+ policyParameters.setPolicyDescription(getPolicy().getPolicyDescription());
+ policyParameters.setPolicyConfigType(PolicyConfigType.valueOf(getPolicy().getPolicyConfigType()));
+ policyParameters.setOnapName(getPolicy().getOnapName());
+ policyParameters.setRiskLevel(getPolicy().getRiskLevel());
+ policyParameters.setConfigBody(getPolicy().getConfigBody());
+ policyParameters.setRiskType(getPolicy().getRiskType());
+ return policyParameters;
+ }
+
+}
diff --git a/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpPolicyForwarderParameterGroupTest.java b/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpPolicyForwarderParameterGroupTest.java
new file mode 100644
index 00000000..1241b7f3
--- /dev/null
+++ b/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpPolicyForwarderParameterGroupTest.java
@@ -0,0 +1,98 @@
+/*-
+ * ============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.forwarding.xacml.pdp.engine;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.onap.policy.common.parameters.ValidationStatus;
+import org.onap.policy.distribution.forwarding.xacml.pdp.XacmlPdpPolicyForwarderParameterGroup;
+import org.onap.policy.distribution.forwarding.xacml.pdp.XacmlPdpPolicyForwarderParameterGroup.XacmlPdpPolicyForwarderParameterGroupBuilder;
+
+public class XacmlPdpPolicyForwarderParameterGroupTest {
+
+ @Test
+ public void testBuilderAndGetters() {
+ XacmlPdpPolicyForwarderParameterGroupBuilder builder =
+ new XacmlPdpPolicyForwarderParameterGroupBuilder();
+ XacmlPdpPolicyForwarderParameterGroup configurationParameters =
+ builder.setUseHttps(true).setHostname("10.10.10.10").setPort(1234).setUserName("myUser")
+ .setPassword("myPassword").setClientAuth("myClientAuth").setIsManaged(false).build();
+
+ assertTrue(configurationParameters.isUseHttps());
+ assertEquals("10.10.10.10", configurationParameters.getHostname());
+ assertEquals(1234, configurationParameters.getPort());
+ assertEquals("myUser", configurationParameters.getUserName());
+ assertEquals("myPassword", configurationParameters.getPassword());
+ assertEquals("myClientAuth", configurationParameters.getClientAuth());
+ assertFalse(configurationParameters.isManaged());
+ }
+
+ @Test
+ public void testInvalidHostName() {
+ XacmlPdpPolicyForwarderParameterGroupBuilder builder =
+ new XacmlPdpPolicyForwarderParameterGroupBuilder();
+ XacmlPdpPolicyForwarderParameterGroup configurationParameters = builder.setUseHttps(true).setHostname("")
+ .setPort(1234).setUserName("myUser").setPassword("myPassword").setIsManaged(false).build();
+ configurationParameters.setName("myConfiguration");
+
+ assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus());
+ }
+
+ @Test
+ public void testInvalidPort() {
+ XacmlPdpPolicyForwarderParameterGroupBuilder builder =
+ new XacmlPdpPolicyForwarderParameterGroupBuilder();
+ XacmlPdpPolicyForwarderParameterGroup configurationParameters =
+ builder.setUseHttps(true).setHostname("10.10.10.10").setPort(-1234).setUserName("myUser")
+ .setPassword("myPassword").setIsManaged(false).build();
+ configurationParameters.setName("myConfiguration");
+
+ assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus());
+ }
+
+ @Test
+ public void testInvalidUserName() {
+ XacmlPdpPolicyForwarderParameterGroupBuilder builder =
+ new XacmlPdpPolicyForwarderParameterGroupBuilder();
+ XacmlPdpPolicyForwarderParameterGroup configurationParameters =
+ builder.setUseHttps(true).setHostname("10.10.10.10").setPort(1234).setUserName("")
+ .setPassword("myPassword").setIsManaged(false).build();
+ configurationParameters.setName("myConfiguration");
+
+ assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus());
+ }
+
+ @Test
+ public void testInvalidPassword() {
+ XacmlPdpPolicyForwarderParameterGroupBuilder builder =
+ new XacmlPdpPolicyForwarderParameterGroupBuilder();
+ XacmlPdpPolicyForwarderParameterGroup configurationParameters =
+ builder.setUseHttps(true).setHostname("10.10.10.10").setPort(1234).setUserName("myUser").setPassword("")
+ .setIsManaged(false).build();
+ configurationParameters.setName("myConfiguration");
+
+ assertEquals(ValidationStatus.INVALID, configurationParameters.validate().getStatus());
+ }
+
+}
diff --git a/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpPolicyForwarderTest.java b/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpPolicyForwarderTest.java
new file mode 100644
index 00000000..d851b640
--- /dev/null
+++ b/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/engine/XacmlPdpPolicyForwarderTest.java
@@ -0,0 +1,338 @@
+/*-
+ * ============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.forwarding.xacml.pdp.engine;
+
+import static org.mockito.Matchers.anyObject;
+import static org.mockito.Matchers.argThat;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.core.Response;
+import org.hamcrest.BaseMatcher;
+import org.hamcrest.Description;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.policy.api.PolicyParameters;
+import org.onap.policy.api.PushPolicyParameters;
+import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams;
+import org.onap.policy.common.endpoints.http.client.HttpClient;
+import org.onap.policy.common.endpoints.http.client.HttpClientFactory;
+import org.onap.policy.common.parameters.ParameterGroup;
+import org.onap.policy.common.parameters.ParameterService;
+import org.onap.policy.distribution.forwarding.xacml.pdp.XacmlPdpPolicyForwarder;
+import org.onap.policy.distribution.forwarding.xacml.pdp.XacmlPdpPolicyForwarderParameterGroup.XacmlPdpPolicyForwarderParameterGroupBuilder;
+import org.onap.policy.distribution.main.PolicyDistributionException;
+import org.onap.policy.distribution.model.OptimizationPolicy;
+import org.onap.policy.distribution.model.Policy;
+
+public class XacmlPdpPolicyForwarderTest {
+
+ private static final BusTopicParams BUS_TOPIC_PARAMS = BusTopicParams.builder().useHttps(false).hostname("myHost")
+ .port(1234).userName("myUser").password("myPassword").managed(true).build();
+ private static final String CLIENT_AUTH = "ClientAuth";
+ private static final String CLIENT_AUTH_VALUE = "myClientAuth";
+ private static final String PDP_GROUP_VALUE = "myPdpGroup";
+ private HashMap<String, Object> headers = new HashMap<>();
+ private BusTopicParamsMatcher matcher = new BusTopicParamsMatcher(BUS_TOPIC_PARAMS);
+
+ /**
+ * Set up.
+ */
+ @BeforeClass
+ public static void setUp() {
+ ParameterGroup parameterGroup = new XacmlPdpPolicyForwarderParameterGroupBuilder()
+ .setUseHttps(BUS_TOPIC_PARAMS.isUseHttps()).setHostname(BUS_TOPIC_PARAMS.getHostname())
+ .setPort(BUS_TOPIC_PARAMS.getPort()).setUserName(BUS_TOPIC_PARAMS.getUserName())
+ .setPassword(BUS_TOPIC_PARAMS.getPassword()).setClientAuth(CLIENT_AUTH_VALUE)
+ .setIsManaged(BUS_TOPIC_PARAMS.isManaged()).setPdpGroup(PDP_GROUP_VALUE).build();
+ parameterGroup.setName("xacmlPdpConfiguration");
+ ParameterService.register(parameterGroup);
+ }
+
+ @Test
+ public void testForwardPolicy() throws KeyManagementException, NoSuchAlgorithmException, NoSuchFieldException,
+ SecurityException, IllegalArgumentException, IllegalAccessException, PolicyDistributionException {
+
+ HttpClient httpClientMock = mock(HttpClient.class);
+ headers.put(CLIENT_AUTH, CLIENT_AUTH_VALUE);
+ when(httpClientMock.put(eq("createPolicy"), anyObject(), eq(headers))).thenReturn(Response.ok().build());
+ when(httpClientMock.put(eq("pushPolicy"), anyObject(), eq(headers))).thenReturn(Response.ok().build());
+
+ HttpClientFactory httpClientFactoryMock = mock(HttpClientFactory.class);
+ when(httpClientFactoryMock.build(argThat(matcher))).thenReturn(httpClientMock);
+
+ overwriteField(HttpClient.class, "factory", null, httpClientFactoryMock);
+
+ XacmlPdpPolicyForwarder forwarder = new XacmlPdpPolicyForwarder();
+ forwarder.configure("xacmlPdpConfiguration");
+
+ Collection<Policy> policies = new ArrayList<>();
+
+ OptimizationPolicy policy1 = new OptimizationPolicy();
+ policy1.setPolicyName("policy1");
+ policy1.setPolicyConfigType("Optimization");
+ policies.add(policy1);
+
+ Policy policy2 = new UnsupportedPolicy();
+ policies.add(policy2);
+
+ OptimizationPolicy policy3 = new OptimizationPolicy();
+ policy3.setPolicyName("policy3");
+ policy3.setPolicyConfigType("Optimization");
+ policies.add(policy3);
+
+ forwarder.forward(policies);
+
+ verify(httpClientMock).put(eq("createPolicy"), argThat(new PolicyParametersEntityMatcher(policy1)),
+ eq(headers));
+ verify(httpClientMock).put(eq("createPolicy"), argThat(new PolicyParametersEntityMatcher(policy3)),
+ eq(headers));
+ verify(httpClientMock).put(eq("pushPolicy"), argThat(new PushPolicyParametersEntityMatcher(policy1)),
+ eq(headers));
+ verify(httpClientMock).put(eq("pushPolicy"), argThat(new PushPolicyParametersEntityMatcher(policy3)),
+ eq(headers));
+ }
+
+ @Test
+ public void testForwardPolicy_CreateFailsPushNotInvoked()
+ throws KeyManagementException, NoSuchAlgorithmException, NoSuchFieldException, SecurityException,
+ IllegalArgumentException, IllegalAccessException, PolicyDistributionException {
+
+ HttpClient httpClientMock = mock(HttpClient.class);
+ headers.put(CLIENT_AUTH, CLIENT_AUTH_VALUE);
+ when(httpClientMock.put(eq("createPolicy"), anyObject(), eq(headers))).thenReturn(Response.status(400).build());
+ when(httpClientMock.put(eq("pushPolicy"), anyObject(), eq(headers))).thenReturn(Response.ok().build());
+
+ HttpClientFactory httpClientFactoryMock = mock(HttpClientFactory.class);
+ when(httpClientFactoryMock.build(argThat(matcher))).thenReturn(httpClientMock);
+
+ overwriteField(HttpClient.class, "factory", null, httpClientFactoryMock);
+
+ XacmlPdpPolicyForwarder forwarder = new XacmlPdpPolicyForwarder();
+ forwarder.configure("xacmlPdpConfiguration");
+
+ Collection<Policy> policies = new ArrayList<>();
+ OptimizationPolicy policy = new OptimizationPolicy();
+ policy.setPolicyName("policy");
+ policy.setPolicyConfigType("Optimization");
+ policies.add(policy);
+ forwarder.forward(policies);
+
+ verify(httpClientMock).put(eq("createPolicy"), argThat(new PolicyParametersEntityMatcher(policy)), eq(headers));
+ verify(httpClientMock, times(0)).put(eq("pushPolicy"), anyObject(), anyObject());
+ }
+
+ @Test
+ public void testForwardPolicy_PushFails()
+ throws KeyManagementException, NoSuchAlgorithmException, NoSuchFieldException, SecurityException,
+ IllegalArgumentException, IllegalAccessException, PolicyDistributionException {
+
+ HttpClient httpClientMock = mock(HttpClient.class);
+ headers.put(CLIENT_AUTH, CLIENT_AUTH_VALUE);
+ when(httpClientMock.put(eq("createPolicy"), anyObject(), eq(headers))).thenReturn(Response.ok().build());
+ when(httpClientMock.put(eq("pushPolicy"), anyObject(), eq(headers))).thenReturn(Response.status(400).build());
+
+ HttpClientFactory httpClientFactoryMock = mock(HttpClientFactory.class);
+ when(httpClientFactoryMock.build(argThat(matcher))).thenReturn(httpClientMock);
+
+ overwriteField(HttpClient.class, "factory", null, httpClientFactoryMock);
+
+ XacmlPdpPolicyForwarder forwarder = new XacmlPdpPolicyForwarder();
+ forwarder.configure("xacmlPdpConfiguration");
+
+ Collection<Policy> policies = new ArrayList<>();
+ OptimizationPolicy policy = new OptimizationPolicy();
+ policy.setPolicyName("policy");
+ policy.setPolicyConfigType("Optimization");
+ policies.add(policy);
+ forwarder.forward(policies);
+
+ verify(httpClientMock).put(eq("createPolicy"), argThat(new PolicyParametersEntityMatcher(policy)), eq(headers));
+ verify(httpClientMock).put(eq("pushPolicy"), argThat(new PushPolicyParametersEntityMatcher(policy)),
+ eq(headers));
+ }
+
+ @Test
+ public void testForwardPolicy_HttpClientInitFailureForPolicyCreate()
+ throws KeyManagementException, NoSuchAlgorithmException, NoSuchFieldException, SecurityException,
+ IllegalArgumentException, IllegalAccessException, PolicyDistributionException {
+
+ HttpClient httpClientMock = mock(HttpClient.class);
+ headers.put(CLIENT_AUTH, CLIENT_AUTH_VALUE);
+ when(httpClientMock.put(eq("createPolicy"), anyObject(), eq(headers))).thenReturn(Response.ok().build());
+ when(httpClientMock.put(eq("pushPolicy"), anyObject(), eq(headers))).thenReturn(Response.status(400).build());
+
+ HttpClientFactory httpClientFactoryMock = mock(HttpClientFactory.class);
+ when(httpClientFactoryMock.build(argThat(matcher))).thenThrow(new KeyManagementException());
+
+ overwriteField(HttpClient.class, "factory", null, httpClientFactoryMock);
+
+ XacmlPdpPolicyForwarder forwarder = new XacmlPdpPolicyForwarder();
+ forwarder.configure("xacmlPdpConfiguration");
+
+ Collection<Policy> policies = new ArrayList<>();
+ OptimizationPolicy policy = new OptimizationPolicy();
+ policy.setPolicyName("policy");
+ policy.setPolicyConfigType("Optimization");
+ policies.add(policy);
+ forwarder.forward(policies);
+
+ verify(httpClientMock, times(0)).put(eq("createPolicy"), anyObject(), anyObject());
+ verify(httpClientMock, times(0)).put(eq("pushPolicy"), anyObject(), anyObject());
+ }
+
+ @Test
+ public void testForwardPolicy_HttpClientInitFailureForPolicyPush()
+ throws KeyManagementException, NoSuchAlgorithmException, NoSuchFieldException, SecurityException,
+ IllegalArgumentException, IllegalAccessException, PolicyDistributionException {
+
+ HttpClient httpClientMock = mock(HttpClient.class);
+ headers.put(CLIENT_AUTH, CLIENT_AUTH_VALUE);
+ when(httpClientMock.put(eq("createPolicy"), anyObject(), eq(headers))).thenReturn(Response.ok().build());
+ when(httpClientMock.put(eq("pushPolicy"), anyObject(), eq(headers))).thenReturn(Response.status(400).build());
+
+ HttpClientFactory httpClientFactoryMock = mock(HttpClientFactory.class);
+ when(httpClientFactoryMock.build(argThat(matcher))).thenReturn(httpClientMock)
+ .thenThrow(new KeyManagementException());
+
+ overwriteField(HttpClient.class, "factory", null, httpClientFactoryMock);
+
+ XacmlPdpPolicyForwarder forwarder = new XacmlPdpPolicyForwarder();
+ forwarder.configure("xacmlPdpConfiguration");
+
+ Collection<Policy> policies = new ArrayList<>();
+ OptimizationPolicy policy = new OptimizationPolicy();
+ policy.setPolicyName("policy");
+ policy.setPolicyConfigType("Optimization");
+ policies.add(policy);
+ forwarder.forward(policies);
+
+ verify(httpClientMock).put(eq("createPolicy"), argThat(new PolicyParametersEntityMatcher(policy)), eq(headers));
+ verify(httpClientMock, times(0)).put(eq("pushPolicy"), anyObject(), anyObject());
+ }
+
+ private void overwriteField(final Class<?> clazz, final String fieldName, final Object object, final Object value)
+ throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {
+ Field field = clazz.getField(fieldName);
+ field.setAccessible(true);
+ Field modifiersField = Field.class.getDeclaredField("modifiers");
+ modifiersField.setAccessible(true);
+ modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
+ field.set(object, value);
+ }
+
+ class BusTopicParamsMatcher extends BaseMatcher<BusTopicParams> {
+
+ private BusTopicParams busTopicParams;
+
+ BusTopicParamsMatcher(final BusTopicParams busTopicParams) {
+ this.busTopicParams = busTopicParams;
+ }
+
+ @Override
+ public boolean matches(Object arg0) {
+ if (arg0 instanceof BusTopicParams) {
+ BusTopicParams toCompareTo = (BusTopicParams) arg0;
+ return toCompareTo.isUseHttps() == busTopicParams.isUseHttps()
+ && toCompareTo.getHostname().equals(busTopicParams.getHostname())
+ && toCompareTo.getPort() == busTopicParams.getPort()
+ && toCompareTo.getUserName().equals(busTopicParams.getUserName())
+ && toCompareTo.getPassword().equals(busTopicParams.getPassword())
+ && toCompareTo.isManaged() == busTopicParams.isManaged();
+ }
+ return false;
+ }
+
+ @Override
+ public void describeTo(Description arg0) {}
+ }
+
+ class PolicyParametersEntityMatcher extends BaseMatcher<Entity<PolicyParameters>> {
+
+ private OptimizationPolicy policy;
+
+ PolicyParametersEntityMatcher(final OptimizationPolicy policy) {
+ this.policy = policy;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean matches(Object arg0) {
+ if (arg0 instanceof Entity) {
+ PolicyParameters toCompareTo = ((Entity<PolicyParameters>) arg0).getEntity();
+ return toCompareTo.getPolicyName().equals(policy.getPolicyName())
+ && toCompareTo.getPolicyConfigType().toString().equals(policy.getPolicyConfigType());
+ }
+ return false;
+ }
+
+ @Override
+ public void describeTo(Description arg0) {}
+ }
+
+ class PushPolicyParametersEntityMatcher extends BaseMatcher<Entity<PushPolicyParameters>> {
+
+ private Policy policy;
+
+ PushPolicyParametersEntityMatcher(final Policy policy) {
+ this.policy = policy;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean matches(Object arg0) {
+ if (arg0 instanceof Entity) {
+ PushPolicyParameters toCompareTo = ((Entity<PushPolicyParameters>) arg0).getEntity();
+ return toCompareTo.getPolicyName().equals(policy.getPolicyName())
+ && toCompareTo.getPolicyType().equals(policy.getPolicyType())
+ && toCompareTo.getPdpGroup().equals(PDP_GROUP_VALUE);
+ }
+ return false;
+ }
+
+ @Override
+ public void describeTo(Description arg0) {}
+ }
+
+ class UnsupportedPolicy implements Policy {
+
+ @Override
+ public String getPolicyName() {
+ return "unsupported";
+ }
+
+ @Override
+ public String getPolicyType() {
+ return "unsupported";
+ }
+ }
+}
diff --git a/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/testclasses/DummyDecoder.java b/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/testclasses/DummyDecoder.java
new file mode 100644
index 00000000..e09357cf
--- /dev/null
+++ b/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/testclasses/DummyDecoder.java
@@ -0,0 +1,59 @@
+/*-
+ * ============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.forwarding.xacml.pdp.testclasses;
+
+import java.util.Collection;
+
+import org.onap.policy.distribution.model.Policy;
+import org.onap.policy.distribution.model.PolicyInput;
+import org.onap.policy.distribution.reception.decoding.PolicyDecoder;
+import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
+
+/**
+ * Class to create a dummy decoder for test cases.
+ *
+ * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
+ */
+public class DummyDecoder implements PolicyDecoder<PolicyInput, Policy> {
+
+ private boolean canHandleValue;
+ private Collection<Policy> policesToReturn;
+
+ public DummyDecoder() {
+ this.canHandleValue = false;
+ this.policesToReturn = null;
+ }
+
+ public DummyDecoder(final boolean canHandleValue, final Collection<Policy> policesToReturn) {
+ this.canHandleValue = canHandleValue;
+ this.policesToReturn = policesToReturn;
+ }
+
+ @Override
+ public boolean canHandle(final PolicyInput policyInput) {
+ return canHandleValue;
+ }
+
+ @Override
+ public Collection<Policy> decode(final PolicyInput input) throws PolicyDecodingException {
+ return policesToReturn;
+ }
+}
diff --git a/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/testclasses/DummyReceptionHandler.java b/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/testclasses/DummyReceptionHandler.java
new file mode 100644
index 00000000..c0934812
--- /dev/null
+++ b/plugins/forwarding-plugins/src/test/java/org/onap/policy/distribution/forwarding/xacml/pdp/testclasses/DummyReceptionHandler.java
@@ -0,0 +1,37 @@
+/*-
+ * ============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.forwarding.xacml.pdp.testclasses;
+
+import org.onap.policy.distribution.reception.handling.AbstractReceptionHandler;
+
+/**
+ * Class to create a dummy reception handler for test cases.
+ *
+ * @author Ram Krishna Verma (ram.krishna.verma@ericsson.com)
+ */
+public class DummyReceptionHandler extends AbstractReceptionHandler {
+
+ @Override
+ public void initializeReception(final String parameterGroupName) {}
+
+ @Override
+ public void destroy() {}
+}
diff --git a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PdpxPolicy.java b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PdpxPolicy.java
index 6e0eb3bd..135d2564 100644
--- a/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PdpxPolicy.java
+++ b/plugins/reception-plugins/src/main/java/org/onap/policy/distribution/reception/decoding/pdpx/PdpxPolicy.java
@@ -28,4 +28,14 @@ import org.onap.policy.distribution.reception.decoding.PolicyDecoder;
*/
public class PdpxPolicy implements Policy {
+ @Override
+ public String getPolicyName() {
+ return null;
+ }
+
+ @Override
+ public String getPolicyType() {
+ return null;
+ }
+
}
diff --git a/reception/src/main/java/org/onap/policy/distribution/reception/handling/PluginHandler.java b/reception/src/main/java/org/onap/policy/distribution/reception/handling/PluginHandler.java
index eb1a33a5..4f3f41e3 100644
--- a/reception/src/main/java/org/onap/policy/distribution/reception/handling/PluginHandler.java
+++ b/reception/src/main/java/org/onap/policy/distribution/reception/handling/PluginHandler.java
@@ -23,7 +23,6 @@ package org.onap.policy.distribution.reception.handling;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
-
import org.onap.policy.common.logging.flexlogger.FlexLogger;
import org.onap.policy.common.logging.flexlogger.Logger;
import org.onap.policy.common.parameters.ParameterService;
@@ -114,7 +113,9 @@ public class PluginHandler {
try {
final Class<PolicyForwarder> policyForwarderClass =
(Class<PolicyForwarder>) Class.forName(forwarderParameters.getForwarderClassName());
- policyForwarders.add(policyForwarderClass.newInstance());
+ PolicyForwarder policyForwarder = policyForwarderClass.newInstance();
+ policyForwarder.configure(forwarderParameters.getForwarderConfigurationName());
+ policyForwarders.add(policyForwarder);
} catch (final ClassNotFoundException | InstantiationException | IllegalAccessException exp) {
LOGGER.error("exception occured while initializing forwarders", exp);
throw new PluginInitializationException(exp.getMessage(), exp.getCause());
diff --git a/reception/src/test/java/org/onap/policy/distribution/reception/handling/AbstractReceptionHandlerTest.java b/reception/src/test/java/org/onap/policy/distribution/reception/handling/AbstractReceptionHandlerTest.java
index 83fe5a45..d339507c 100644
--- a/reception/src/test/java/org/onap/policy/distribution/reception/handling/AbstractReceptionHandlerTest.java
+++ b/reception/src/test/java/org/onap/policy/distribution/reception/handling/AbstractReceptionHandlerTest.java
@@ -29,7 +29,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
-
import org.junit.Test;
import org.onap.policy.common.parameters.ParameterService;
import org.onap.policy.distribution.forwarding.PolicyForwarder;
@@ -57,6 +56,7 @@ public class AbstractReceptionHandlerTest {
private static final String FORWARDER_TYPE = "DummyForwarder";
private static final String FORWARDER_CLASS_NAME =
"org.onap.policy.distribution.reception.handling.DummyPolicyForwarder";
+ private static final String FORWARDER_CONFIGURATION_PARAMETERS = "DummyConfiguration";
@Test
public void testInputReceived() throws PolicyDecodingException, NoSuchFieldException, SecurityException,
@@ -121,9 +121,29 @@ public class AbstractReceptionHandlerTest {
}
class DummyPolicy1 implements Policy {
+
+ @Override
+ public String getPolicyName() {
+ return null;
+ }
+
+ @Override
+ public String getPolicyType() {
+ return null;
+ }
}
class DummyPolicy2 implements Policy {
+
+ @Override
+ public String getPolicyName() {
+ return null;
+ }
+
+ @Override
+ public String getPolicyType() {
+ return null;
+ }
}
private void setUpPlugins(final AbstractReceptionHandler receptionHandler,
@@ -160,7 +180,7 @@ public class AbstractReceptionHandlerTest {
final Map<String, PolicyForwarderParameters> policyForwarders =
new HashMap<String, PolicyForwarderParameters>();
final PolicyForwarderParameters pFParameters =
- new PolicyForwarderParameters(FORWARDER_TYPE, FORWARDER_CLASS_NAME);
+ new PolicyForwarderParameters(FORWARDER_TYPE, FORWARDER_CLASS_NAME, FORWARDER_CONFIGURATION_PARAMETERS);
policyForwarders.put(FORWARDER_KEY, pFParameters);
return policyForwarders;
}
diff --git a/reception/src/test/java/org/onap/policy/distribution/reception/handling/DummyPolicyForwarder.java b/reception/src/test/java/org/onap/policy/distribution/reception/handling/DummyPolicyForwarder.java
index acee4697..a665c546 100644
--- a/reception/src/test/java/org/onap/policy/distribution/reception/handling/DummyPolicyForwarder.java
+++ b/reception/src/test/java/org/onap/policy/distribution/reception/handling/DummyPolicyForwarder.java
@@ -22,7 +22,6 @@ package org.onap.policy.distribution.reception.handling;
import java.util.ArrayList;
import java.util.Collection;
-
import org.onap.policy.distribution.forwarding.PolicyForwarder;
import org.onap.policy.distribution.forwarding.PolicyForwardingException;
import org.onap.policy.distribution.model.Policy;
@@ -49,4 +48,7 @@ public class DummyPolicyForwarder implements PolicyForwarder {
public boolean receivedPolicy(final Policy policy) {
return policiesReceived.contains(policy);
}
+
+ @Override
+ public void configure(String parameterGroupName) {}
}