aboutsummaryrefslogtreecommitdiffstats
path: root/policy-management/src/test/java/org/onap/policy/drools/controller/DroolsControllerFactoryTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'policy-management/src/test/java/org/onap/policy/drools/controller/DroolsControllerFactoryTest.java')
-rw-r--r--policy-management/src/test/java/org/onap/policy/drools/controller/DroolsControllerFactoryTest.java73
1 files changed, 73 insertions, 0 deletions
diff --git a/policy-management/src/test/java/org/onap/policy/drools/controller/DroolsControllerFactoryTest.java b/policy-management/src/test/java/org/onap/policy/drools/controller/DroolsControllerFactoryTest.java
index 7733ca1f..03301470 100644
--- a/policy-management/src/test/java/org/onap/policy/drools/controller/DroolsControllerFactoryTest.java
+++ b/policy-management/src/test/java/org/onap/policy/drools/controller/DroolsControllerFactoryTest.java
@@ -22,15 +22,26 @@ package org.onap.policy.drools.controller;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import static org.onap.policy.drools.properties.DroolsPropertyConstants.PROPERTY_CONTROLLER_TYPE;
import java.util.List;
import java.util.Properties;
import org.junit.Test;
+import org.onap.policy.drools.controller.internal.NullDroolsController;
+import org.onap.policy.drools.features.DroolsControllerFeatureApi;
+import org.onap.policy.drools.properties.DroolsPropertyConstants;
+import org.onap.policy.drools.protocol.coders.TopicCoderFilterConfiguration;
public class DroolsControllerFactoryTest {
+ private static final String DROOLS_CONTROLLER_BUILDER_TAG = "DroolsControllerFactoryTest";
+ public static final String TEST_GROUP_ID = "testGroupId";
+ public static final String TEST_ARTIFACT_ID = "testArtifactId";
+ public static final String TEST_VERSION = "testVersion";
+
@Test
public void testBuildNullController() {
Properties droolsProps = new Properties();
@@ -95,6 +106,28 @@ public class DroolsControllerFactoryTest {
return DroolsControllerConstants.NO_VERSION.equals(droolsController.getVersion());
}
+ @Test
+ public void testControllerType() {
+ DroolsControllerFactory droolsFactory = new IndexedDroolsControllerFactory();
+ Properties props = new Properties();
+
+ // this should build a 'NullDroolsController'
+ DroolsController ctrl1 = droolsFactory.build(props, null, null);
+ assertSame(NullDroolsController.class, ctrl1.getClass());
+
+ props.setProperty(PROPERTY_CONTROLLER_TYPE, DROOLS_CONTROLLER_BUILDER_TAG);
+ props.setProperty(DroolsPropertyConstants.RULES_GROUPID, TEST_GROUP_ID);
+ props.setProperty(DroolsPropertyConstants.RULES_ARTIFACTID, TEST_ARTIFACT_ID);
+ props.setProperty(DroolsPropertyConstants.RULES_VERSION, TEST_VERSION);
+
+ // this should build a 'TestDroolsController'
+ DroolsController ctrl2 = droolsFactory.build(props, null, null);
+ assertSame(TestDroolsController.class, ctrl2.getClass());
+
+ // verify that we can find the controller in the factory table
+ assertSame(ctrl2, droolsFactory.get(ctrl2.getGroupId(), ctrl2.getArtifactId(), null));
+ }
+
private boolean isActualController(DroolsController droolsController) {
if (droolsController == null) {
return false;
@@ -110,4 +143,44 @@ public class DroolsControllerFactoryTest {
return droolsController.getVersion() != null && droolsController.getVersion().substring(0, 1).matches("[0-9]");
}
+
+ /**
+ * This class provides an alternate DroolsController implementation,
+ * for the purpose of easy identification within a Junit test.
+ */
+ public static class TestDroolsController extends NullDroolsController {
+ @Override
+ public String getGroupId() {
+ return TEST_GROUP_ID;
+ }
+
+ @Override
+ public String getArtifactId() {
+ return TEST_ARTIFACT_ID;
+ }
+ }
+
+ /**
+ * An instance of this class is created by 'IndexedDroolsControllerFactory',
+ * using features. It does the build operation when the value of the
+ * 'controller.type' property matches the value of DROOLS_CONTROLLER_BUILDER_TAG.
+ */
+ public static class DroolsBuilder implements DroolsControllerFeatureApi {
+ @Override
+ public int getSequenceNumber() {
+ return 1;
+ }
+
+ @Override
+ public DroolsController beforeInstance(Properties properties,
+ String groupId, String artifactId, String version,
+ List<TopicCoderFilterConfiguration> decoderConfigurations,
+ List<TopicCoderFilterConfiguration> encoderConfigurations) {
+
+ if (DROOLS_CONTROLLER_BUILDER_TAG.equals(properties.getProperty(PROPERTY_CONTROLLER_TYPE))) {
+ return new TestDroolsController();
+ }
+ return null;
+ }
+ }
}