Search in sources :

Example 41 with Cheese

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() );
}
Also used : FactHandle(org.kie.api.runtime.rule.FactHandle) FileWriter(java.io.FileWriter) Cheese(org.drools.compiler.Cheese) KnowledgeBuilder(org.kie.internal.builder.KnowledgeBuilder) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.compiler.Person) SessionInspector(org.drools.core.util.debug.SessionInspector) InternalKnowledgeBase(org.drools.core.impl.InternalKnowledgeBase) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 42 with Cheese

use of org.drools.compiler.Cheese in project drools by kiegroup.

the class IntegrationInterfacesTest method testGlobals.

@SuppressWarnings("unchecked")
@Test
public void testGlobals() throws Exception {
    final KieBase kbase = getKnowledgeBase("globals_rule_test.drl");
    KieSession ksession = createKnowledgeSession(kbase);
    final List<Object> list = mock(List.class);
    ksession.setGlobal("list", list);
    ksession.setGlobal("string", "stilton");
    final Cheese stilton = new Cheese("stilton", 5);
    ksession.insert(stilton);
    ksession = SerializationHelper.getSerialisedStatefulKnowledgeSession(ksession, true);
    ksession.fireAllRules();
    verify(list, times(1)).add(new Integer(5));
}
Also used : KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.compiler.Cheese) Test(org.junit.Test)

Example 43 with Cheese

use of org.drools.compiler.Cheese in project drools by kiegroup.

the class ExecutionFlowControlTest method testNoLoop.

@Test
public void testNoLoop() throws Exception {
    KieBase kbase = loadKnowledgeBase("no-loop.drl");
    KieSession ksession = kbase.newKieSession();
    ;
    final List list = new ArrayList();
    ksession.setGlobal("list", list);
    final Cheese brie = new Cheese("brie", 12);
    ksession.insert(brie);
    ksession.fireAllRules();
    assertEquals("Should not loop  and thus size should be 1", 1, list.size());
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) Cheese(org.drools.compiler.Cheese) Test(org.junit.Test)

Example 44 with Cheese

use of org.drools.compiler.Cheese in project drools by kiegroup.

the class ExecutionFlowControlTest method testInsertRetractNoloop.

@Test
public void testInsertRetractNoloop() throws Exception {
    // read in the source
    KieBase kbase = loadKnowledgeBase("test_Insert_Retract_Noloop.drl");
    KieSession ksession = kbase.newKieSession();
    ksession.insert(new Cheese("stilton", 15));
    ksession.fireAllRules();
    assertEquals(0, ksession.getObjects().size());
}
Also used : KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.compiler.Cheese) Test(org.junit.Test)

Example 45 with Cheese

use of org.drools.compiler.Cheese in project drools by kiegroup.

the class ExecutionFlowControlTest method testNoLoopWithModify.

@Test
public void testNoLoopWithModify() throws Exception {
    KieBase kbase = loadKnowledgeBase("no-loop_with_modify.drl");
    KieSession ksession = kbase.newKieSession();
    final List list = new ArrayList();
    ksession.setGlobal("list", list);
    final Cheese brie = new Cheese("brie", 12);
    ksession.insert(brie);
    ksession.fireAllRules();
    assertEquals("Should not loop  and thus size should be 1", 1, list.size());
    assertEquals(50, brie.getPrice());
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) Cheese(org.drools.compiler.Cheese) Test(org.junit.Test)

Aggregations

Cheese (org.drools.compiler.Cheese)147 Test (org.junit.Test)140 KieSession (org.kie.api.runtime.KieSession)121 ArrayList (java.util.ArrayList)102 KieBase (org.kie.api.KieBase)87 List (java.util.List)73 Person (org.drools.compiler.Person)52 InternalKnowledgeBase (org.drools.core.impl.InternalKnowledgeBase)36 FactHandle (org.kie.api.runtime.rule.FactHandle)32 KiePackage (org.kie.api.definition.KiePackage)22 StatelessKieSession (org.kie.api.runtime.StatelessKieSession)20 InternalFactHandle (org.drools.core.common.InternalFactHandle)19 IteratorToList (org.drools.compiler.integrationtests.IteratorToList)14 KnowledgeBuilder (org.kie.internal.builder.KnowledgeBuilder)13 Command (org.kie.api.command.Command)10 HashMap (java.util.HashMap)9 ExecutionResults (org.kie.api.runtime.ExecutionResults)8 KnowledgeBuilderImpl (org.drools.compiler.builder.impl.KnowledgeBuilderImpl)7 PackageDescr (org.drools.compiler.lang.descr.PackageDescr)7 DefaultFactHandle (org.drools.core.common.DefaultFactHandle)7