use of org.drools.mvel.compiler.Cheese in project drools by kiegroup.
the class QueryTest method testTwoQuerries.
@Test
public void testTwoQuerries() throws Exception {
// @see JBRULES-410 More than one Query definition causes an incorrect
// Rete network to be built.
KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources(getClass(), kieBaseTestConfiguration, "test_TwoQuerries.drl");
KieSession session = kbase.newKieSession();
final Cheese stilton = new Cheese("stinky", 5);
session.insert(stilton);
final Person per1 = new Person("stinker", "smelly feet", 70);
final Person per2 = new Person("skunky", "smelly armpits", 40);
session.insert(per1);
session.insert(per2);
QueryResults results = getQueryResults(session, "find stinky cheeses");
assertEquals(1, results.size());
results = getQueryResults(session, "find pensioners");
assertEquals(1, results.size());
}
use of org.drools.mvel.compiler.Cheese in project drools by kiegroup.
the class NamedConsequencesTest method executeTestWithDRL.
private List<String> executeTestWithDRL(String drl) {
KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, drl);
KieSession ksession = kbase.newKieSession();
List<String> results = new ArrayList<String>();
ksession.setGlobal("results", results);
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);
ksession.fireAllRules();
return results;
}
use of org.drools.mvel.compiler.Cheese in project drools by kiegroup.
the class NullTest method testNullHashing.
@Test
public void testNullHashing() throws Exception {
KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources(getClass(), kieBaseTestConfiguration, "test_NullHashing.drl");
KieSession ksession = kbase.newKieSession();
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.mvel.compiler.Cheese in project drools by kiegroup.
the class OutOfMemoryTest method testMemoryLeak.
@Test
@Ignore("dump_tuples.mvel no longer seems to work")
public void testMemoryLeak() {
KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources(getClass(), kieBaseTestConfiguration, "test_MemoryLeak.drl");
KieSession ksession = kbase.newKieSession();
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.mvel.compiler.Cheese in project drools by kiegroup.
the class MVELConsequenceBuilderTest method testSimpleExpression.
@Test
public void testSimpleExpression() throws Exception {
PackageDescr pkgDescr = new PackageDescr("pkg1");
KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl();
pkgBuilder.addPackage(pkgDescr);
InternalKnowledgePackage pkg = pkgBuilder.getPackageRegistry("pkg1").getPackage();
final RuleDescr ruleDescr = new RuleDescr("rule 1");
ruleDescr.setNamespace("pkg1");
ruleDescr.setConsequence("modify (cheese) {price = 5 };\nretract (cheese)");
DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry(pkg.getName()).getDialectCompiletimeRegistry();
MVELDialect mvelDialect = (MVELDialect) dialectRegistry.getDialect("mvel");
final RuleBuildContext context = new RuleBuildContext(pkgBuilder, ruleDescr, dialectRegistry, pkg, mvelDialect);
final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
final ObjectType cheeseObjeectType = new ClassObjectType(Cheese.class);
final Pattern pattern = new Pattern(0, cheeseObjeectType, "cheese");
final GroupElement subrule = new GroupElement(GroupElement.AND);
subrule.addChild(pattern);
final Map<String, Declaration> map = new HashMap<String, Declaration>();
map.put("cheese", pattern.getDeclaration());
declarationResolver.setDeclarations(map);
context.setDeclarationResolver(declarationResolver);
final MVELConsequenceBuilder builder = new MVELConsequenceBuilder();
builder.build(context, RuleImpl.DEFAULT_CONSEQUENCE_NAME);
InternalKnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase();
PropagationContextFactory pctxFactory = RuntimeComponentFactory.get().getPropagationContextFactory();
kBase.addPackage(pkg);
StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl) kBase.newKieSession();
BuildContext buildContext = new BuildContext(kBase, Collections.emptyList());
MockTupleSource source = new MockTupleSource(1, buildContext);
source.setObjectCount(1);
RuleTerminalNode rtn = new RuleTerminalNode(0, source, context.getRule(), subrule, 0, buildContext);
final Cheese cheddar = new Cheese("cheddar", 10);
final InternalFactHandle f0 = (InternalFactHandle) ksession.insert(cheddar);
final LeftTupleImpl tuple = new LeftTupleImpl(f0, rtn, true);
f0.removeLeftTuple(tuple);
final AgendaItem item = new AgendaItemImpl(0, tuple, 10, pctxFactory.createPropagationContext(1, PropagationContext.Type.DELETION, null, null, null), rtn, null);
final DefaultKnowledgeHelper kbHelper = new DefaultKnowledgeHelper(ksession);
kbHelper.setActivation(item);
((MVELConsequence) context.getRule().getConsequence()).compile((MVELDialectRuntimeData) pkgBuilder.getPackageRegistry(pkg.getName()).getDialectRuntimeRegistry().getDialectData("mvel"));
context.getRule().getConsequence().evaluate(kbHelper, ksession);
assertEquals(5, cheddar.getPrice());
}
Aggregations