diff options
author | 2019-11-11 11:28:47 -0600 | |
---|---|---|
committer | 2019-11-14 03:07:25 -0600 | |
commit | 1320df00310f70b3cf6695466eb2d76a2d3dc49b (patch) | |
tree | c7d4f55b594db9a2bbec98a5ba1ecb207467770f /policy-core/src/test/java/org/onap | |
parent | 2b0f80062f0609f483eea287bdf503be45f12472 (diff) |
Add 'DroolsRunnable' class
This provides a simple way to run arbitrary Java code within the
Drools thread. This change also includes a general way to specify
Drools rules that are automatically added to every Drools session.
Change-Id: I5ddcca4c807dc552fbcbd4a19dce311a4d358279
Issue-ID: POLICY-1948
Signed-off-by: Straubs, Ralph (rs8887) <rs8887@att.com>
Diffstat (limited to 'policy-core/src/test/java/org/onap')
-rw-r--r-- | policy-core/src/test/java/org/onap/policy/drools/core/DroolsContainerTest.java | 12 | ||||
-rw-r--r-- | policy-core/src/test/java/org/onap/policy/drools/util/KieUtilsTest.java | 62 |
2 files changed, 73 insertions, 1 deletions
diff --git a/policy-core/src/test/java/org/onap/policy/drools/core/DroolsContainerTest.java b/policy-core/src/test/java/org/onap/policy/drools/core/DroolsContainerTest.java index d168ca8b..2f45f01e 100644 --- a/policy-core/src/test/java/org/onap/policy/drools/core/DroolsContainerTest.java +++ b/policy-core/src/test/java/org/onap/policy/drools/core/DroolsContainerTest.java @@ -165,6 +165,18 @@ public class DroolsContainerTest { container.insert("session1", result); assertEquals(48, result.poll(TIMEOUT_SEC, TimeUnit.SECONDS).intValue()); + + // verify that default KiePackages have been added by testing + // that 'DroolsRunnable' is functioning + + final LinkedBlockingQueue<String> lbq = new LinkedBlockingQueue<>(); + container.insert("session1", new DroolsRunnable() { + @Override + public void run() { + lbq.add("DroolsRunnable String"); + } + }); + assertEquals("DroolsRunnable String", lbq.poll(TIMEOUT_SEC, TimeUnit.SECONDS)); } finally { container.shutdown(); assertFalse(container.isAlive()); diff --git a/policy-core/src/test/java/org/onap/policy/drools/util/KieUtilsTest.java b/policy-core/src/test/java/org/onap/policy/drools/util/KieUtilsTest.java index 83f62b32..89ab9d0a 100644 --- a/policy-core/src/test/java/org/onap/policy/drools/util/KieUtilsTest.java +++ b/policy-core/src/test/java/org/onap/policy/drools/util/KieUtilsTest.java @@ -22,12 +22,15 @@ package org.onap.policy.drools.util; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import java.io.IOException; +import java.net.URL; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.Enumeration; import java.util.stream.Collectors; import org.junit.BeforeClass; import org.junit.Test; @@ -119,4 +122,61 @@ public class KieUtilsTest { public void getFacts() { assertEquals(0, KieUtils.getFacts(session).size()); } -}
\ No newline at end of file + + @Test + public void resourceToPackagesTests() { + // Some minimal logging -- it would be nice to verify the 'KieUtils' logger messages + StringBuffer log; + + // test IOException from ClassLoader + log = new StringBuffer(); + assertNull(KieUtils.resourceToPackages(new BogusClassLoader(log), "BogusClassLoader")); + assertEquals("IOException(BogusClassLoader)", log.toString()); + + // test 'null' return when no resources are found + assertNull(KieUtils.resourceToPackages(ClassLoader.getSystemClassLoader(), "no/such/url")); + + // test IOException in 'IOUtils.toByteArray()' -> 'InputStream.read()' + log = new StringBuffer(); + assertNull(KieUtils.resourceToPackages(new BogusClassLoader(log), "BogusUrl")); + assertEquals("", log.toString()); + + // don't know how to test 'KieBuilder' errors at this point + + // success legs are tested in 'DroolsContainerTest' + } + + static class BogusClassLoader extends ClassLoader { + StringBuffer log; + + BogusClassLoader(StringBuffer log) { + this.log = log; + } + + @Override + public Enumeration<URL> getResources(String name) throws IOException { + if ("BogusUrl".equals(name)) { + return new Enumeration<URL>() { + @Override + public boolean hasMoreElements() { + return true; + } + + @Override + public URL nextElement() { + try { + // when the following URL is used, an IOException will occur + return new URL("http://127.0.0.1:1"); + } catch (IOException e) { + // this should never happen, as the URL above is syntactically valid + return null; + } + } + }; + } else { + log.append("IOException(BogusClassLoader)"); + throw new IOException("BogusClassLoader"); + } + } + } +} |