use of org.drools.compiler.Cheese in project drools by kiegroup.
the class DescrBuilderTest method testNamedConsequence.
@Test
public void testNamedConsequence() {
PackageDescr pkg = DescrFactory.newPackage().name("org.drools.compiler").newRule().name("test").lhs().pattern("Cheese").constraint("type == \"stilton\"").end().namedConsequence().name("c1").end().pattern("Cheese").constraint("type == \"cheddar\"").end().end().rhs("// do something").namedRhs("c1", "// do something else").end().getDescr();
assertEquals(1, pkg.getRules().size());
KiePackage kpkg = compilePkgDescr(pkg);
assertEquals("org.drools.compiler", kpkg.getName());
InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addPackages(Collections.singletonList(kpkg));
KieSession ksession = createKnowledgeSession(kbase);
Cheese stilton = new Cheese("stilton", 5);
Cheese cheddar = new Cheese("cheddar", 7);
Cheese brie = new Cheese("brie", 5);
ksession.insert(stilton);
ksession.insert(cheddar);
ksession.insert(brie);
int rules = ksession.fireAllRules();
assertEquals(2, rules);
}
use of org.drools.compiler.Cheese in project drools by kiegroup.
the class NullTest method testNullHashing.
@Test
public void testNullHashing() throws Exception {
final KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_NullHashing.drl"));
final KieSession ksession = createKnowledgeSession(kbase);
final List results = new ArrayList();
ksession.setGlobal("results", results);
ksession.insert(new Cheese("stilton", 15));
ksession.insert(new Cheese("", 10));
ksession.insert(new Cheese(null, 8));
ksession.fireAllRules();
assertEquals(3, results.size());
}
use of org.drools.compiler.Cheese in project drools by kiegroup.
the class OutOfMemoryTest method testAgendaLoop.
@Test
@Ignore
public void testAgendaLoop() throws Exception {
KieBase kbase = loadKnowledgeBase("test_OutOfMemory.drl");
KieSession ksession = kbase.newKieSession();
ksession.insert(new Cheese("stilton", 1));
ksession.fireAllRules(3000000);
// just for profiling
// Thread.currentThread().wait();
}
use of org.drools.compiler.Cheese in project drools by kiegroup.
the class OutOfMemoryTest method testMemoryLeak.
@Test
@Ignore
public void testMemoryLeak() {
final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("test_MemoryLeak.drl", OutOfMemoryTest.class), ResourceType.DRL);
assertFalse(kbuilder.getErrors().toString(), kbuilder.hasErrors());
final InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addPackages(kbuilder.getKnowledgePackages());
final KieSession ksession = createKnowledgeSession(kbase);
final int pcount = 5;
Person[] persons = new Person[pcount];
FactHandle[] pHandles = new FactHandle[pcount];
for (int i = 0; i < persons.length; i++) {
persons[i] = new Person("person-0-" + i);
pHandles[i] = ksession.insert(persons[i]);
}
Cheese[] cheeses = new Cheese[pcount];
FactHandle[] cHandles = new FactHandle[pcount];
for (int i = 0; i < cheeses.length; i++) {
cheeses[i] = new Cheese("cheese-0-" + i);
cHandles[i] = ksession.insert(cheeses[i]);
}
ksession.fireAllRules();
for (int j = 1; j <= 5; j++) {
for (int i = 0; i < pcount; i++) {
cheeses[i].setType("cheese-" + j + "-" + i);
ksession.update(cHandles[i], cheeses[i]);
persons[i].setName("person-" + j + "-" + i);
ksession.update(pHandles[i], persons[i]);
}
ksession.fireAllRules();
logger.info("DONE");
}
SessionInspector inspector = new SessionInspector(ksession);
SessionReporter.addNamedTemplate("dump_tuples", getClass().getResourceAsStream("/org/drools/core/util/debug/dump_tuples.mvel"));
String report = SessionReporter.generateReport("dump_tuples", inspector.getSessionInfo(), new HashMap<String, Object>());
try {
FileWriter out = new FileWriter("tupleDump.txt");
out.write(report);
out.close();
logger.info(report);
} catch (Exception e) {
e.printStackTrace();
}
// logicals = getLogicallyInserted( ksession );
// assertEquals( pcount, logicals.size() );
}
use of org.drools.compiler.Cheese in project drools by kiegroup.
the class IndexingTest method testRange.
@Test(timeout = 10000)
public void testRange() {
String str = "import org.drools.compiler.*;\n" + "rule R1 salience 10 when\n" + " Person( $age : age, $doubleAge : doubleAge )\n" + " not Cheese( this.price > $age && < $doubleAge )\n" + "then\n" + " System.out.println( $age );\n" + "end\n" + "rule R3 salience 5 when\n" + " $c : Cheese( price == 15 )\n" + "then\n" + " System.out.println( \"modify\" );\n" + " modify($c) { setPrice(8); }\n" + "end\n";
KieBase kbase = loadKnowledgeBaseFromString(str);
KieSession ksession = kbase.newKieSession();
ksession.insert(new Person("A", 10));
ksession.insert(new Cheese("C1", 30));
ksession.insert(new Cheese("C2", 15));
assertEquals(2, ksession.fireAllRules());
ksession.dispose();
}
Aggregations