private void removeRule(InternalKnowledgeBase kbase, String ruleName) { kbase.removeRule("org.kie.test", ruleName); }
public static void addRule(String ruleName, RuleImpl firingRule) throws Exception { String rule = rules.get(ruleName); CommonTestMethodBase testBaseMethod = new CommonTestMethodBase(); kbase.addPackages(testBaseMethod.loadKnowledgePackagesFromString( rule )); if (firingRule != null) { kbase.removeRule("defaultpkg", firingRule.getName()); } }
@Test(timeout=10000) public void testDynamicRuleRemovalsUnusedWorkingMemorySubNetwork() throws Exception { InternalKnowledgeBase kbase = (InternalKnowledgeBase) loadKnowledgeBase( "test_DynamicRulesWithSubnetwork1.drl", "test_DynamicRulesWithSubnetwork2.drl", "test_DynamicRulesWithSubnetwork.drl" ); assertEquals( 2, kbase.getKiePackages().size() ); assertEquals( 4, kbase.getPackagesMap().get("org.drools.compiler").getRules().size() ); kbase.removeRule( "org.drools.compiler", "Apply Discount on all books" ); assertEquals( 3, kbase.getPackagesMap().get("org.drools.compiler").getRules().size() ); kbase.removeRule( "org.drools.compiler", "like book" ); assertEquals( 2, kbase.getPackagesMap().get("org.drools.compiler").getRules().size() ); kbase.removeKiePackage( "org.drools.compiler" ); assertEquals( 1, kbase.getKiePackages().size() ); }
@Test public void testPopulatedSharedLiaNodeNoBeta() throws Exception { InternalKnowledgeBase kbase1 = buildKnowledgeBase("r1", " A()\n"); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase1.newKieSession()); List list = new ArrayList(); wm.setGlobal("list", list); A a1 = new A(1); InternalFactHandle fh1 = (InternalFactHandle) wm.insert(a1); A a2 = new A(2); InternalFactHandle fh2 = (InternalFactHandle) wm.insert(a2); wm.fireAllRules(); assertEquals( 2, list.size() ); kbase1.addPackages( buildKnowledgePackage("r2", " a : A()\n") ); wm.fireAllRules(); assertEquals( 4, list.size() ); kbase1.removeRule("org.kie", "r1"); kbase1.removeRule("org.kie", "r2"); list.clear(); assertNull( fh1.getFirstLeftTuple() ); assertNull( fh2.getFirstLeftTuple() ); wm.update( fh1,a1 ); wm.update( fh2,a2 ); wm.fireAllRules(); assertEquals( 0, list.size() ); }
@Test public void testPathMemorySizeAfterSegmentMergeNonInitialized() throws Exception { InternalKnowledgeBase kbase1 = buildKnowledgeBase("r1", " A(1;) B(1;)\n" ); kbase1.addPackages( buildKnowledgePackage("r2", " A(1;)\n") ); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase1.newKieSession()); RuleTerminalNode rtn1 = getRtn( "org.kie.r1", kbase1 ); RuleTerminalNode rtn2 = getRtn( "org.kie.r2", kbase1 ); assertEquals( 2, wm.getNodeMemory(rtn1).getSegmentMemories().length ); assertEquals( 2, wm.getNodeMemory(rtn2).getSegmentMemories().length ); kbase1.removeRule("org.kie", "r2"); assertEquals( 1, wm.getNodeMemory(rtn1).getSegmentMemories().length ); }
@Test(timeout=10000) public void testDynamicRuleRemovalsUnusedWorkingMemory() throws Exception { InternalKnowledgeBase kbase = (InternalKnowledgeBase) SerializationHelper.serializeObject( loadKnowledgeBase( "test_Dynamic1.drl", "test_Dynamic2.drl", "test_Dynamic3.drl", "test_Dynamic4.drl" ) ); KieSession workingMemory = createKnowledgeSession( kbase ); assertEquals( 2, kbase.getKiePackages().size() ); KiePackage knowledgePackage = null; for (KiePackage pkg : kbase.getKiePackages()) { if ( pkg.getName().equals( "org.drools.compiler.test" ) ) { knowledgePackage = pkg; break; } } assertEquals( 5, knowledgePackage.getRules().size() ); kbase.removeRule( "org.drools.compiler.test", "Who likes Stilton" ); assertEquals( 4, knowledgePackage.getRules().size() ); kbase.removeRule( "org.drools.compiler.test", "like cheese" ); assertEquals( 3, knowledgePackage.getRules().size() ); kbase.removeKiePackage( "org.drools.compiler.test" ); assertEquals( 1, kbase.getKiePackages().size() ); }
@Test public void testPopulatedSingleRuleNoSharingWithSubnetworkAtStart() throws Exception { InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase.newKieSession()); wm.insert(new A(1)); wm.insert(new A(2)); wm.insert(new D(1)); wm.insert(new E(1)); wm.insert(new C(2)); wm.fireAllRules(); kbase.addPackages( buildKnowledgePackage("r1", " A() not( B() and C() ) D() E()\n") ); List list = new ArrayList(); wm.setGlobal("list", list); wm.fireAllRules(); assertEquals(2, list.size() ); assertEquals( "r1", ((Match)list.get(0)).getRule().getName() ); assertEquals( "r1", ((Match)list.get(1)).getRule().getName() ); kbase.removeRule("org.kie", "r1"); wm.insert(new A(1)); wm.fireAllRules(); assertEquals(2, list.size() ); }
@Test public void testPathMemorySizeAfterSegmentMerge() throws Exception { InternalKnowledgeBase kbase1 = buildKnowledgeBase("r1", " A(1;) B(1;)\n" ); kbase1.addPackages( buildKnowledgePackage("r2", " A(1;)\n") ); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase1.newKieSession()); List list = new ArrayList(); wm.setGlobal("list", list); // trigger segment initialization wm.insert(new A(1)); wm.insert(new B(1)); wm.fireAllRules(); RuleTerminalNode rtn1 = getRtn( "org.kie.r1", kbase1 ); RuleTerminalNode rtn2 = getRtn( "org.kie.r2", kbase1 ); assertEquals( 2, wm.getNodeMemory(rtn1).getSegmentMemories().length ); assertEquals( 2, wm.getNodeMemory(rtn2).getSegmentMemories().length ); kbase1.removeRule("org.kie", "r2"); assertEquals( 1, wm.getNodeMemory(rtn1).getSegmentMemories().length ); }
kbase.removeRule("defaultpkg", "R1");
assertTrue( asList(rian.getPathEndNodes()).containsAll( asList(rtn1, rtn2, rian) ) ); kbase.removeRule( "org.test", "xxx" );
kbase1.removeRule("org.kie", "r2"); System.out.println( "---" ); assertEquals( 7, countNodeMemories(wm.getNodeMemories()));
private void runTest(boolean shareBetaNodes) throws Exception { InternalKnowledgeBase kbase = (InternalKnowledgeBase) createKnowledgeBase( shareBetaNodes ); Collection<KiePackage> rule1 = compileRule( RULE_1 ); kbase.addPackages( rule1 ); // we need to add at least two rules. Test will not fail with only one rule. Collection<KiePackage> rule2 = compileRule( RULE_2 ); kbase.addPackages( rule2 ); kbase.removeRule( PACKAGE, RULE_1 ); KieSession ksession = createKnowledgeSession(kbase); int fired = ksession.fireAllRules(); ksession.dispose(); assertEquals( 1, fired ); Collection<KiePackage> rule3 = compileRule( RULE_3 ); kbase.addPackages( rule3 ); }
kbase.removeRule("org.kie", "r1");
list.clear(); kbase.removeRule("org.drools.compiler.test", "Who likes Stilton"); list.clear(); kbase.removeRule("org.drools.compiler.test", "like cheese");
assertEquals( 17, countNodeMemories(wm.getNodeMemories())); kbase1.removeRule("org.kie", "r2"); assertEquals( 12, countNodeMemories(wm.getNodeMemories()));
kbase1.removeRule("org.kie", "r2"); assertEquals( 10, countNodeMemories(wm.getNodeMemories()));
kbase1.removeRule("org.kie", "r2"); list.clear();
kbase1.removeRule("org.kie", "r2"); assertEquals( 8, countNodeMemories(wm.getNodeMemories()));
kbase1.removeRule("org.kie", "r3"); list.clear();
kbase1.removeRule("org.kie", "r1"); list.clear();