protocol coder and null drools controller junits 13/31613/1
authorJorge Hernandez <jh1730@att.com>
Tue, 13 Feb 2018 16:32:30 +0000 (10:32 -0600)
committerJorge Hernandez <jh1730@att.com>
Tue, 13 Feb 2018 16:32:30 +0000 (10:32 -0600)
Change-Id: Ie26a8cd44a39007e38c9dc8c28418e988df70c77
Issue-ID: POLICY-583
Signed-off-by: Jorge Hernandez <jh1730@att.com>
policy-management/src/test/java/org/onap/policy/drools/controller/internal/NullDroolsControllerTest.java [new file with mode: 0644]
policy-management/src/test/java/org/onap/policy/drools/protocol/coders/ProtocolCoderToolsetTest.java

diff --git a/policy-management/src/test/java/org/onap/policy/drools/controller/internal/NullDroolsControllerTest.java b/policy-management/src/test/java/org/onap/policy/drools/controller/internal/NullDroolsControllerTest.java
new file mode 100644 (file)
index 0000000..09d9cae
--- /dev/null
@@ -0,0 +1,145 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.drools.controller.internal;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.onap.policy.drools.controller.DroolsController;
+
+public class NullDroolsControllerTest {
+
+    @Test
+    public void start() {
+        DroolsController controller = new NullDroolsController();
+        controller.start();
+        Assert.assertFalse(controller.isAlive());
+        controller.stop();
+        Assert.assertFalse(controller.isAlive());
+        controller.shutdown();
+        Assert.assertFalse(controller.isAlive());
+        controller.halt();
+        Assert.assertFalse(controller.isAlive());
+    }
+
+    @Test
+    public void lock() {
+        DroolsController controller = new NullDroolsController();
+        controller.lock();
+        Assert.assertFalse(controller.isLocked());
+        controller.unlock();
+        Assert.assertFalse(controller.isLocked());
+    }
+
+    @Test
+    public void getGroupId() {
+        Assert.assertEquals(new NullDroolsController().getGroupId(), DroolsController.NO_GROUP_ID);
+    }
+
+    @Test
+    public void getArtifactId() {
+        Assert.assertEquals(new NullDroolsController().getArtifactId(), DroolsController.NO_ARTIFACT_ID);
+    }
+
+    @Test
+    public void getVersion() {
+        Assert.assertEquals(new NullDroolsController().getVersion(), DroolsController.NO_VERSION);
+    }
+
+    @Test
+    public void getSessionNames() {
+        Assert.assertTrue(new NullDroolsController().getSessionNames().isEmpty());
+    }
+
+    @Test
+    public void getCanonicalSessionNames() {
+        Assert.assertTrue(new NullDroolsController().getCanonicalSessionNames().isEmpty());
+    }
+
+    @Test
+    public void offer() {
+        Assert.assertFalse(new NullDroolsController().offer(null, null));
+    }
+
+    @Test(expected = IllegalStateException.class)
+    public void deliver() {
+        new NullDroolsController().deliver(null, null);
+    }
+
+    @Test
+    public void getRecentSourceEvents() {
+        Assert.assertTrue(new NullDroolsController().getRecentSourceEvents().length == 0);
+    }
+
+    @Test
+    public void getRecentSinkEvents() {
+        Assert.assertTrue(new NullDroolsController().getRecentSinkEvents().length == 0);
+    }
+
+    @Test
+    public void getContainer() {
+        Assert.assertNull(new NullDroolsController().getContainer());
+    }
+
+    @Test(expected = IllegalStateException.class)
+    public void ownsCoder() {
+        new NullDroolsController().ownsCoder(null, 0);
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void fetchModelClass() {
+        new NullDroolsController().fetchModelClass(this.getClass().getCanonicalName());
+    }
+
+    @Test
+    public void isBrained() {
+        Assert.assertFalse(new NullDroolsController().isBrained());
+    }
+
+    @Test
+    public void stringify() {
+        Assert.assertNotNull(new NullDroolsController().toString());
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void updateToVersion() {
+        new NullDroolsController().updateToVersion(null, null, null, null, null);
+    }
+
+    @Test
+    public void factClassNames() {
+        Assert.assertTrue(new NullDroolsController().factClassNames(null).isEmpty());
+    }
+
+    @Test
+    public void factCount() {
+        Assert.assertTrue(new NullDroolsController().factCount(null) == 0);
+    }
+
+    @Test
+    public void facts() {
+        Assert.assertTrue(new NullDroolsController().facts(null, null, true).isEmpty());
+    }
+
+    @Test
+    public void factQuery() {
+        Assert.assertTrue(new NullDroolsController().factQuery(null, null, null, false).isEmpty());
+    }
+}
\ No newline at end of file
index b91ad4a..e3dd7c5 100644 (file)
@@ -22,6 +22,8 @@ package org.onap.policy.drools.protocol.coders;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
 import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
@@ -39,6 +41,7 @@ import org.onap.policy.drools.event.comm.TopicSink;
 import org.onap.policy.drools.properties.PolicyProperties;
 import org.onap.policy.drools.protocol.coders.EventProtocolCoder.CoderFilters;
 import org.onap.policy.drools.protocol.coders.JsonProtocolFilter.FilterRule;
+import org.onap.policy.drools.protocol.coders.TopicCoderFilterConfiguration.CustomGsonCoder;
 import org.onap.policy.drools.util.KieUtils;
 import org.onap.policy.drools.utils.Triple;
 import org.slf4j.Logger;
@@ -50,11 +53,17 @@ import org.slf4j.LoggerFactory;
 public class ProtocolCoderToolsetTest {
     public static final String JUNIT_PROTOCOL_CODER_ARTIFACT_ID = "protocolcoder";
     public static final String JUNIT_PROTOCOL_CODER_TOPIC = JUNIT_PROTOCOL_CODER_ARTIFACT_ID;
+    public static final String CONTROLLER_ID = "blah";
+    public static final String ARTIFACT_ID_ECHO = "echo";
+    public static final String ARTIFACT_ID_POM_LINE =
+        "<artifactId>" + ARTIFACT_ID_ECHO + "</artifactId>";
 
     private static Logger logger = LoggerFactory.getLogger(ProtocolCoderToolset.class);
 
     private volatile ReleaseId releaseId;
 
+    public static final Gson customCoder = new GsonBuilder().create();
+
     @Before
     public void setUp() throws IOException {
         if (releaseId != null)
@@ -63,10 +72,10 @@ public class ProtocolCoderToolsetTest {
         String pom = new String(Files.readAllBytes
             (Paths.get(MavenDroolsControllerTest.JUNIT_ECHO_KMODULE_POM_PATH)));
 
-        if (!pom.contains("<artifactId>echo</artifactId>"))
+        if (!pom.contains(ARTIFACT_ID_POM_LINE))
             throw new IllegalArgumentException("unexpected junit test pom");
 
-        String newPom = pom.replace("echo",  JUNIT_PROTOCOL_CODER_ARTIFACT_ID);
+        String newPom = pom.replace(ARTIFACT_ID_ECHO,  JUNIT_PROTOCOL_CODER_ARTIFACT_ID);
 
         String kmodule = new String(Files.readAllBytes
             (Paths.get(MavenDroolsControllerTest.JUNIT_ECHO_KMODULE_PATH)));
@@ -80,15 +89,16 @@ public class ProtocolCoderToolsetTest {
     }
 
     @Test
-    public void testGsonToolset() {
-        if (releaseId == null)
-            throw new IllegalStateException("no prereq artifact installed in maven repository");
-
-        JsonProtocolFilter protocolFilter = createFilterSet();
+    public void testToolsets() {
+        createController();
+        testGsonToolset(createFilterSet());
+        testJacksonToolset(createFilterSet());
+    }
 
+    public void testGsonToolset(JsonProtocolFilter protocolFilter) {
         GsonProtocolCoderToolset gsonToolset =
             new GsonProtocolCoderToolset(JUNIT_PROTOCOL_CODER_TOPIC,
-                "blah",
+                CONTROLLER_ID,
                 this.releaseId.getGroupId(),
                 this.releaseId.getArtifactId(),
                 Triple.class.getCanonicalName(),
@@ -100,18 +110,22 @@ public class ProtocolCoderToolsetTest {
         Assert.assertNotNull(gsonToolset.getDecoder());
 
         testToolset(protocolFilter, gsonToolset);
-    }
 
-    @Test
-    public void testJacksonToolset() {
-        if (releaseId == null)
-            throw new IllegalStateException("no prereq artifact installed in maven repository");
+        Triple<String, String, String> triple = createTriple();
+        gsonToolset.setCustomCoder(new CustomGsonCoder(this.getClass().getCanonicalName(),
+                                    "customCoder"));
+        String tripleEncoded = encode(gsonToolset, triple);
+        decode(protocolFilter, gsonToolset, triple, tripleEncoded);
+    }
 
-        JsonProtocolFilter protocolFilter = createFilterSet();
+    private Triple<String, String, String> createTriple() {
+        return new Triple<>("v1", "v2", "v3");
+    }
 
+    public void testJacksonToolset(JsonProtocolFilter protocolFilter) {
         JacksonProtocolCoderToolset jacksonToolset =
             new JacksonProtocolCoderToolset(JUNIT_PROTOCOL_CODER_TOPIC,
-                "blah",
+                CONTROLLER_ID,
                 this.releaseId.getGroupId(),
                 this.releaseId.getArtifactId(),
                 Triple.class.getCanonicalName(),
@@ -125,32 +139,83 @@ public class ProtocolCoderToolsetTest {
         testToolset(protocolFilter, jacksonToolset);
     }
 
-    private JsonProtocolFilter createFilterSet() {
-        List<FilterRule> filters = new ArrayList<>();
-        filters.add(new FilterRule("first", ".*"));
-        filters.add(new FilterRule("second", "^blah.*"));
-        filters.add(new FilterRule("third", "^hello$"));
+    private void testToolset(JsonProtocolFilter protocolFilter, ProtocolCoderToolset coderToolset) {
 
-        return new JsonProtocolFilter(filters);
+        validateInitialization(protocolFilter, coderToolset);
+
+        updateCoderFilterRule(coderToolset);
+
+        addRemoveCoder(coderToolset);
+
+        /* restore original filters */
+        coderToolset.addCoder(Triple.class.getCanonicalName(), protocolFilter, 654321);
+
+        Triple<String, String, String> triple = createTriple();
+
+        String tripleEncoded = encode(coderToolset, triple);
+
+        decode(protocolFilter, coderToolset, triple, tripleEncoded);
     }
 
-    private void testToolset(JsonProtocolFilter protocolFilter, ProtocolCoderToolset coderToolset) {
+    private void decode(JsonProtocolFilter protocolFilter, ProtocolCoderToolset coderToolset,
+                        Triple<String, String, String> triple, String tripleEncoded) {
 
-        Assert.assertTrue("blah".equals(coderToolset.getControllerId()));
-        Assert.assertTrue(this.releaseId.getGroupId().equals(coderToolset.getGroupId()));
-        Assert.assertTrue(this.releaseId.getArtifactId().equals(coderToolset.getArtifactId()));
-        Assert.assertNull(coderToolset.getCustomCoder());
+        Triple<String, String, String> tripleDecoded = null;
+        try {
+            tripleDecoded =
+                (Triple<String, String, String>) coderToolset.decode(tripleEncoded);
+        } catch(UnsupportedOperationException e){
+            /* OK */
+            logger.trace("Junit expected exception - decode does not pass filtering", e);
+        }
 
-        Assert.assertTrue(coderToolset.getCoders().size() == 1);
+        CoderFilters coderFilters = coderToolset.getCoder(Triple.class.getCanonicalName());
+        Assert.assertTrue(coderFilters.getCodedClass() == Triple.class.getCanonicalName());
+        Assert.assertTrue(coderFilters.getFilter() == protocolFilter);
+        Assert.assertTrue(coderFilters.getFilter().getRules("second").size() == 1);
+        Assert.assertTrue(coderFilters.getFilter().getRules("third").size() == 1);
 
-        CoderFilters coderFilters = coderToolset.getCoder("blah");
-        Assert.assertTrue(coderFilters == null);
+        coderFilters.getFilter().getRules("second").get(0).setRegex("^v2$");
+        coderFilters.getFilter().getRules("third").get(0).setRegex(".*v3.*");
 
-        coderFilters = coderToolset.getCoder(Triple.class.getCanonicalName());
-        Assert.assertNotNull(coderFilters);
+        tripleDecoded =
+            (Triple<String, String, String>) coderToolset.decode(tripleEncoded);
 
-        Assert.assertEquals(coderFilters.getFilter(), protocolFilter);
+        Assert.assertTrue(tripleDecoded.first().equals(triple.first()));
+        Assert.assertTrue(tripleDecoded.second().equals(triple.second()));
+        Assert.assertTrue(tripleDecoded.third().equals(triple.third()));
+
+        coderFilters.getFilter().deleteRules("third");
+        Assert.assertTrue(coderFilters.getFilter().getRules("third").isEmpty());
+
+        tripleDecoded =
+            (Triple<String, String, String>) coderToolset.decode(tripleEncoded);
+
+        Assert.assertTrue(tripleDecoded.first().equals(triple.first()));
+        Assert.assertTrue(tripleDecoded.second().equals(triple.second()));
+        Assert.assertTrue(tripleDecoded.third().equals(triple.third()));
+
+        coderFilters.getFilter().addRule("third", ".*v3.*");
+    }
+
+    private String encode(ProtocolCoderToolset coderToolset, Triple<String, String, String> triple) {
+        String tripleEncoded = coderToolset.encode(triple);
+        Assert.assertTrue(!tripleEncoded.isEmpty());
+        return tripleEncoded;
+    }
 
+    private void addRemoveCoder(ProtocolCoderToolset coderToolset) {
+        List<FilterRule> filters = new ArrayList<>();
+        filters.add(new FilterRule("second", ".*"));
+
+        coderToolset.addCoder(this.getClass().getCanonicalName(), new JsonProtocolFilter(filters),654321);
+        Assert.assertTrue(coderToolset.getCoders().size() == 2);
+
+        coderToolset.removeCoders(this.getClass().getCanonicalName());
+        Assert.assertTrue(coderToolset.getCoders().size() == 1);
+    }
+
+    private void updateCoderFilterRule(ProtocolCoderToolset coderToolset) {
         List<FilterRule> filters = new ArrayList<>();
         filters.add(new FilterRule("third", ".*"));
         coderToolset.addCoder(Triple.class.getCanonicalName(),
@@ -173,21 +238,28 @@ public class ProtocolCoderToolsetTest {
         Assert.assertTrue
             (".*".equals(coderToolset.getCoder(Triple.class.getCanonicalName()).
                 getFilter().getRules("third").get(0).getRegex()));
+    }
 
-        coderToolset.addCoder("blah", new JsonProtocolFilter(filters),654321);
-        Assert.assertTrue(coderToolset.getCoders().size() == 2);
+    private void validateInitialization(JsonProtocolFilter protocolFilter, ProtocolCoderToolset coderToolset) {
+        Assert.assertTrue(CONTROLLER_ID.equals(coderToolset.getControllerId()));
+        Assert.assertTrue(this.releaseId.getGroupId().equals(coderToolset.getGroupId()));
+        Assert.assertTrue(this.releaseId.getArtifactId().equals(coderToolset.getArtifactId()));
+        Assert.assertNull(coderToolset.getCustomCoder());
 
-        coderToolset.removeCoders("blah");
         Assert.assertTrue(coderToolset.getCoders().size() == 1);
 
-        /* restore original filters */
-        coderToolset.addCoder(Triple.class.getCanonicalName(), protocolFilter, 654321);
+        CoderFilters coderFilters = coderToolset.getCoder(CONTROLLER_ID);
+        Assert.assertTrue(coderFilters == null);
 
-        Triple<String, String, String> triple =
-            new Triple<>("v1", "v2", "v3");
+        coderFilters = coderToolset.getCoder(Triple.class.getCanonicalName());
+        Assert.assertNotNull(coderFilters);
 
-        String tripleEncoded = coderToolset.encode(triple);
-        Assert.assertTrue(!tripleEncoded.isEmpty());
+        Assert.assertEquals(coderFilters.getFilter(), protocolFilter);
+    }
+
+    private void createController() {
+        if (releaseId == null)
+            throw new IllegalStateException("no prereq artifact installed in maven repository");
 
         Properties sinkConfig = new Properties();
         sinkConfig.put(PolicyProperties.PROPERTY_NOOP_SINK_TOPICS, JUNIT_PROTOCOL_CODER_TOPIC);
@@ -200,43 +272,18 @@ public class ProtocolCoderToolsetTest {
         droolsControllerConfig.put(PolicyProperties.RULES_VERSION, releaseId.getVersion());
         droolsControllerConfig.put(PolicyProperties.PROPERTY_NOOP_SINK_TOPICS + "." +
                 JUNIT_PROTOCOL_CODER_TOPIC + PolicyProperties.PROPERTY_TOPIC_EVENTS_SUFFIX,
-                 Triple.class.getCanonicalName());
+            Triple.class.getCanonicalName());
 
         DroolsController droolsController =
             DroolsController.factory.build(droolsControllerConfig, null, noopTopics);
+    }
 
-        Triple<String, String, String> tripleDecoded = null;
-        try {
-            tripleDecoded =
-                (Triple<String, String, String>) coderToolset.decode(tripleEncoded);
-        } catch(UnsupportedOperationException e){
-            logger.trace("Junit expected exception - decode does not pass filtering", e);
-        }
-
-        coderFilters = coderToolset.getCoder(Triple.class.getCanonicalName());
-        Assert.assertTrue(coderFilters.getCodedClass() == Triple.class.getCanonicalName());
-        Assert.assertTrue(coderFilters.getFilter() == protocolFilter);
-        Assert.assertTrue(coderFilters.getFilter().getRules("second").size() == 1);
-        Assert.assertTrue(coderFilters.getFilter().getRules("third").size() == 1);
-
-        coderFilters.getFilter().getRules("second").get(0).setRegex("^v2$");
-        coderFilters.getFilter().getRules("third").get(0).setRegex(".*v3.*");
-
-        tripleDecoded =
-            (Triple<String, String, String>) coderToolset.decode(tripleEncoded);
-
-        Assert.assertTrue(tripleDecoded.first().equals(triple.first()));
-        Assert.assertTrue(tripleDecoded.second().equals(triple.second()));
-        Assert.assertTrue(tripleDecoded.third().equals(triple.third()));
-
-        coderFilters.getFilter().deleteRules("third");
-        Assert.assertTrue(coderFilters.getFilter().getRules("third").isEmpty());
-
-        tripleDecoded =
-            (Triple<String, String, String>) coderToolset.decode(tripleEncoded);
+    private JsonProtocolFilter createFilterSet() {
+        List<FilterRule> filters = new ArrayList<>();
+        filters.add(new FilterRule("first", ".*"));
+        filters.add(new FilterRule("second", "^blah.*"));
+        filters.add(new FilterRule("third", "^hello$"));
 
-        Assert.assertTrue(tripleDecoded.first().equals(triple.first()));
-        Assert.assertTrue(tripleDecoded.second().equals(triple.second()));
-        Assert.assertTrue(tripleDecoded.third().equals(triple.third()));
+        return new JsonProtocolFilter(filters);
     }
 }