use of org.kie.api.runtime.KieSession in project drools by kiegroup.
the class ScenarioRunnerTest method testRuleFlowGroupActivation.
@Test
public void testRuleFlowGroupActivation() throws Exception {
Scenario scenario = new Scenario();
scenario.getImports().addImport(new Import("foo.bar.Coolness"));
Fixture[] given = new Fixture[] { new FactData("Coolness", "c", Arrays.<Field>asList(new FieldData("num", "42"), new FieldData("name", "mic")), false) };
scenario.getFixtures().addAll(Arrays.asList(given));
ExecutionTrace executionTrace = new ExecutionTrace();
scenario.getRules().add("rule1");
scenario.setInclusive(true);
scenario.getFixtures().add(executionTrace);
Expectation[] assertions = new Expectation[2];
assertions[0] = new VerifyFact("c", ls(new VerifyField("num", "42", "==")));
assertions[1] = new VerifyRuleFired("rule1", 1, null);
scenario.getFixtures().addAll(Arrays.asList(assertions));
KieSession ksession = getKieSession("rule_flow_actication.drl");
ClassLoader classLoader = ((KnowledgeBaseImpl) ksession.getKieBase()).getRootClassLoader();
HashSet<String> imports = new HashSet<String>();
imports.add("foo.bar.*");
TypeResolver resolver = new ClassTypeResolver(imports, classLoader);
Class<?> coolnessClass = classLoader.loadClass("foo.bar.Coolness");
assertNotNull(coolnessClass);
ClassLoader cl_ = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(classLoader);
// resolver will need to have generated beans in it - possibly using a composite classloader from the package,
// including whatever CL has the generated beans...
ScenarioRunner scenarioRunner = new ScenarioRunner(ksession);
scenarioRunner.run(scenario);
assertEquals(0, executionTrace.getNumberOfRulesFired().intValue());
assertFalse(scenario.wasSuccessful());
// Activate rule flow
scenario.getFixtures().clear();
given = new Fixture[] { new FactData("Coolness", "c", Arrays.<Field>asList(new FieldData("num", "42"), new FieldData("name", "mic")), false), new ActivateRuleFlowGroup("asdf") };
scenario.getFixtures().addAll(Arrays.asList(given));
scenario.getFixtures().add(executionTrace);
((InternalAgendaGroup) ksession.getAgenda().getRuleFlowGroup("asdf")).setAutoDeactivate(false);
scenarioRunner = new ScenarioRunner(ksession);
scenarioRunner.run(scenario);
assertTrue(scenario.wasSuccessful());
Thread.currentThread().setContextClassLoader(cl_);
}
use of org.kie.api.runtime.KieSession in project drools by kiegroup.
the class ScenarioRunnerTest method testIntegrationWithSuccess.
/**
* Do a kind of end to end test with some real rules.
*/
@Test
public void testIntegrationWithSuccess() throws Exception {
Scenario sc = new Scenario();
sc.getImports().addImport(new Import("org.drools.workbench.models.testscenarios.backend.Cheese"));
sc.getImports().addImport(new Import("org.drools.workbench.models.testscenarios.backend.Person"));
FactData[] facts = new FactData[] { new FactData("Cheese", "c1", Arrays.<Field>asList(new FieldData("type", "cheddar"), new FieldData("price", "42")), false) };
sc.getGlobals().add(new FactData("Person", "p", new ArrayList(), false));
sc.getFixtures().addAll(Arrays.asList(facts));
ExecutionTrace executionTrace = new ExecutionTrace();
sc.getRules().add("rule1");
sc.getRules().add("rule2");
sc.setInclusive(true);
sc.getFixtures().add(executionTrace);
Expectation[] assertions = new Expectation[5];
assertions[0] = new VerifyFact("c1", ls(new VerifyField("type", "cheddar", "==")));
assertions[1] = new VerifyFact("p", ls(new VerifyField("name", "rule1", "=="), new VerifyField("status", "rule2", "==")));
assertions[2] = new VerifyRuleFired("rule1", 1, null);
assertions[3] = new VerifyRuleFired("rule2", 1, null);
assertions[4] = new VerifyRuleFired("rule3", 0, null);
sc.getFixtures().addAll(Arrays.asList(assertions));
KieSession ksession = getKieSession("test_rules2.drl");
ScenarioRunner run = new ScenarioRunner(ksession);
run.run(sc);
assertEquals(2, executionTrace.getNumberOfRulesFired().intValue());
assertTrue(sc.wasSuccessful());
Thread.sleep(50);
assertTrue((new Date()).after(sc.getLastRunResult()));
assertTrue(executionTrace.getExecutionTimeResult() != null);
assertTrue(executionTrace.getRulesFired().length > 0);
}
use of org.kie.api.runtime.KieSession in project drools by kiegroup.
the class ScenarioRunnerTest method testCollection.
@Test
public void testCollection() throws Exception {
KieSession ksession = getKieSession("test_rules2.drl");
ScenarioRunner run = new ScenarioRunner(ksession);
Scenario scenario = new Scenario();
scenario.getImports().addImport(new Import("org.drools.workbench.models.testscenarios.backend.Cheese"));
scenario.getImports().addImport(new Import("org.drools.workbench.models.testscenarios.backend.Cheesery"));
run.run(scenario);
}
use of org.kie.api.runtime.KieSession in project drools by kiegroup.
the class TestingEventListenerTest method testNoFilter.
@Test
public void testNoFilter() throws Exception {
HashSet<String> set = new HashSet<String>();
KieSession session = getKieSession("test_rules.drl");
TestingEventListener ls = new TestingEventListener();
// TestingEventListener.stubOutRules(set, session.getRuleBase(), false);
session.addEventListener(ls);
session.insert(new Cheese());
List<String> list = new ArrayList<String>();
session.setGlobal("list", list);
session.fireAllRules(ls.getAgendaFilter(set, false));
assertEquals(new Integer(1), (Integer) ls.firingCounts.get("rule1"));
assertEquals(new Integer(1), (Integer) ls.firingCounts.get("rule2"));
assertEquals(new Integer(1), (Integer) ls.firingCounts.get("rule3"));
String[] summary = ls.getRulesFiredSummary();
assertEquals(3, summary.length);
assertNotNull(summary[0]);
assertFalse(summary[1].equals(""));
assertEquals(1, list.size());
}
use of org.kie.api.runtime.KieSession in project drools by kiegroup.
the class TestingEventListenerTest method testExclusive.
@Test
public void testExclusive() throws Exception {
HashSet<String> set = new HashSet<String>();
set.add("rule3");
KieSession session = getKieSession("test_rules.drl");
TestingEventListener ls = new TestingEventListener();
// TestingEventListener.stubOutRules(set, session.getRuleBase(), false);
session.addEventListener(ls);
session.insert(new Cheese());
session.fireAllRules(ls.getAgendaFilter(set, false));
// assertEquals(new Integer(1), (Integer) ls.firingCounts.get("rule1"));
// assertEquals(new Integer(1), (Integer) ls.firingCounts.get("rule2"));
assertEquals(new Integer(1), (Integer) ls.firingCounts.get("rule2"));
assertEquals(new Integer(1), (Integer) ls.firingCounts.get("rule1"));
assertFalse(ls.firingCounts.containsKey("rule3"));
assertFalse(ls.firingCounts.containsKey("rule4"));
}
Aggregations