diff options
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.java | 73 |
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; + } + } } |