use of org.kie.api.builder.KieModule in project drools by kiegroup.
the class IncrementalCompilationTest method testIncrementalCompilationChangeingParentRule.
@Test
public void testIncrementalCompilationChangeingParentRule() throws Exception {
// DROOLS-1031
String drl1_1 = "rule R1 when\n" + " $s : String( this == \"s1\" )\n" + "then\n" + "end\n";
String drl1_2 = "rule R1 when\n" + " $s : String( this == \"s2\" )\n" + "then\n" + "end\n";
String drl2 = "rule R2 extends R1 when\n" + " $i : Integer()\n" + "then\n" + "end\n";
KieServices ks = KieServices.Factory.get();
ReleaseId releaseId1 = ks.newReleaseId("org.kie", "test-extends", "1.1.1");
KieModule km = createAndDeployJar(ks, releaseId1, drl1_1 + drl2);
KieContainer kc = ks.newKieContainer(km.getReleaseId());
KieSession ksession = kc.newKieSession();
ksession.insert(1);
ksession.insert("s2");
assertEquals(0, ksession.fireAllRules());
ReleaseId releaseId2 = ks.newReleaseId("org.kie", "test-extends", "1.1.2");
km = createAndDeployJar(ks, releaseId2, drl1_2 + drl2);
kc.updateToVersion(releaseId2);
assertEquals(2, ksession.fireAllRules());
}
use of org.kie.api.builder.KieModule in project drools by kiegroup.
the class IncrementalCompilationTest method testGlobalRemovedAndAdded.
@Test
public void testGlobalRemovedAndAdded() throws Exception {
// RHDM-311
String drlAWithGlobal = "package org.x.a\nglobal Boolean globalBool\n";
String drlANoGlobal = "package org.x.a\n";
String drlBWithGlobal = "package org.x.b\nglobal Boolean globalBool\n";
String drlBNoGlobal = "package org.x.b\n";
KieServices ks = KieServices.Factory.get();
ReleaseId releaseId1 = ks.newReleaseId("org.kie", "test-upgrade", "1.0.0");
KieModule km = createAndDeployJar(ks, releaseId1, drlAWithGlobal, drlBNoGlobal);
KieContainer kc = ks.newKieContainer(releaseId1);
KieSession ksession = kc.newKieSession();
ksession.setGlobal("globalBool", Boolean.FALSE);
ReleaseId releaseId2 = ks.newReleaseId("org.kie", "test-upgrade", "1.1.0");
createAndDeployJar(ks, releaseId2, drlANoGlobal, drlBWithGlobal);
kc.updateToVersion(releaseId2);
ksession.setGlobal("globalBool", Boolean.TRUE);
}
use of org.kie.api.builder.KieModule in project drools by kiegroup.
the class IncrementalCompilationTest method testKJarUpgradeDRLWithSpace4_usingSingleQuote.
@Test
public void testKJarUpgradeDRLWithSpace4_usingSingleQuote() throws Exception {
// DROOLS-1399 quater (using single quote)
String drl_1 = "package org.drools.compiler\n" + "rule Rx when\n" + " $m : Message( message == 'Hello World' )\n" + "then\n" + "end\n";
String drl_2 = "package org.drools.compiler\n" + "rule Rx when\n" + // <<- notice the EXTRA SPACE typo was removed
" $m : Message( message == 'Hello World' )\n" + "then\n" + "end\n";
KieServices ks = KieServices.Factory.get();
ReleaseId releaseId1 = ks.newReleaseId("org.kie", "test-upgrade", "1.0.0");
KieModule km = createAndDeployJar(ks, releaseId1, drl_1);
KieContainer kc = ks.newKieContainer(km.getReleaseId());
KieSession ksession = kc.newKieSession();
ksession.insert(new Message("Hello World"));
assertEquals(0, ksession.fireAllRules());
ReleaseId releaseId2 = ks.newReleaseId("org.kie", "test-upgrade", "1.1.0");
km = createAndDeployJar(ks, releaseId2, drl_2);
kc.updateToVersion(releaseId2);
// rule Rx is UNchanged and should NOT fire again
assertEquals(1, ksession.fireAllRules());
}
use of org.kie.api.builder.KieModule in project drools by kiegroup.
the class IncrementalCompilationTest method testRuleRemoval.
@Test
public void testRuleRemoval() throws Exception {
String drl1 = "package org.drools.compiler\n" + "rule R1 when\n" + " $m : Message()\n" + "then\n" + "end\n";
String drl2 = "rule R2 when\n" + " $m : Message( message == \"Hi Universe\" )\n" + "then\n" + "end\n";
String drl3 = "rule R3 when\n" + " $m : Message( message == \"Hello World\" )\n" + "then\n" + "end\n";
KieServices ks = KieServices.Factory.get();
// Create an in-memory jar for version 1.0.0
ReleaseId releaseId1 = ks.newReleaseId("org.kie", "test-upgrade", "1.0.0");
KieModule km = createAndDeployJar(ks, releaseId1, drl1 + drl2 + drl3);
// Create a session and fire rules
KieContainer kc = ks.newKieContainer(km.getReleaseId());
KiePackage kpkg = kc.getKieBase().getKiePackage("org.drools.compiler");
assertEquals(3, kpkg.getRules().size());
Map<String, Rule> rules = rulestoMap(kpkg.getRules());
assertNotNull(rules.get("R1"));
assertNotNull(rules.get("R2"));
assertNotNull(rules.get("R3"));
RuleTerminalNode rtn1_1 = (RuleTerminalNode) ((KnowledgeBaseImpl) kc.getKieBase()).getReteooBuilder().getTerminalNodes("org.drools.compiler.R1")[0];
RuleTerminalNode rtn2_1 = (RuleTerminalNode) ((KnowledgeBaseImpl) kc.getKieBase()).getReteooBuilder().getTerminalNodes("org.drools.compiler.R2")[0];
RuleTerminalNode rtn3_1 = (RuleTerminalNode) ((KnowledgeBaseImpl) kc.getKieBase()).getReteooBuilder().getTerminalNodes("org.drools.compiler.R3")[0];
// Create a new jar for version 1.1.0
ReleaseId releaseId2 = ks.newReleaseId("org.kie", "test-upgrade", "1.1.0");
km = createAndDeployJar(ks, releaseId2, drl1 + drl3);
// try to update the container to version 1.1.0
kc.updateToVersion(releaseId2);
KnowledgeBaseImpl rb_2 = ((KnowledgeBaseImpl) kc.getKieBase());
RuleTerminalNode rtn1_2 = (RuleTerminalNode) rb_2.getReteooBuilder().getTerminalNodes("org.drools.compiler.R1")[0];
RuleTerminalNode rtn3_2 = (RuleTerminalNode) rb_2.getReteooBuilder().getTerminalNodes("org.drools.compiler.R3")[0];
assertNull(rb_2.getReteooBuilder().getTerminalNodes("org.drools.compiler.R2"));
assertSame(rtn3_1, rtn3_2);
assertSame(rtn1_1, rtn1_2);
kpkg = kc.getKieBase().getKiePackage("org.drools.compiler");
assertEquals(2, kpkg.getRules().size());
rules = rulestoMap(kpkg.getRules());
assertNotNull(rules.get("R1"));
assertNull(rules.get("R2"));
assertNotNull(rules.get("R3"));
}
use of org.kie.api.builder.KieModule in project drools by kiegroup.
the class IncrementalCompilationTest method testRuleRemovalWithSubnetworkAndOR.
@Test
public void testRuleRemovalWithSubnetworkAndOR() throws Exception {
// DROOLS-1025
String drl1 = "global java.util.concurrent.atomic.AtomicInteger globalInt\n" + "rule R1 when\n" + " $s : String()\n" + " (or exists Integer(this == 1)\n" + " exists Integer(this == 2) )\n" + " exists Integer() from globalInt.get()\n" + "then\n" + "end\n";
KieServices ks = KieServices.Factory.get();
ReleaseId releaseId1 = ks.newReleaseId("org.kie", "test-upgrade", "1.1.1");
KieModule km = createAndDeployJar(ks, releaseId1, drl1);
KieContainer kc = ks.newKieContainer(km.getReleaseId());
KieSession ksession = kc.newKieSession();
ksession.setGlobal("globalInt", new AtomicInteger(0));
ksession.insert(1);
ksession.insert("1");
ksession.fireAllRules();
ReleaseId releaseId2 = ks.newReleaseId("org.kie", "test-upgrade", "1.1.2");
km = createAndDeployJar(ks, releaseId2);
try {
kc.updateToVersion(releaseId2);
} catch (Exception e) {
e.printStackTrace();
fail("Incremental update should succeed, but failed with " + e.getLocalizedMessage());
}
ksession.fireAllRules();
}
Aggregations