@Test public void testTimerOnUnmarshalledSession() throws Exception { String process = Marshaller marshaller = MarshallerFactory.newMarshaller( session.getKieBase() ); ByteArrayOutputStream baos = new ByteArrayOutputStream(); marshaller.marshall( baos, session ); assertEquals(1, session.getProcessInstances().size()); assertEquals(0, session2.getProcessInstances().size());
@Test(timeout=10000) public void testMixin() { String source = "org/drools/compiler/factmodel/traits/testTraitMixin.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List info = new ArrayList(); ks.setGlobal( "list", info ); ks.fireAllRules(); assertTrue( info.contains( "27" ) ); }
@Test(timeout = 5000) @Ignore("The checkReachability method is not totally reliable and can fall in an endless loop." + "We need to find a better way to check this.") public void testLeakAfterSessionDispose() { // DROOLS-1655 String drl = "import " + Person.class.getCanonicalName() + "\n" + "rule R when\n" + " $p : Person()\n" + "then\n" + "end\n"; KieContainer kContainer = new KieHelper().addContent( drl, ResourceType.DRL ).getKieContainer(); KieSession ksession = kContainer.newKieSession(); KieBase kBase = ksession.getKieBase(); ksession.insert( new Person("Mario", 40) ); ksession.fireAllRules(); checkReachability( ksession, Person.class::isInstance, true ); checkReachability( kBase, ksession::equals, true ); checkReachability( kContainer, ksession::equals, true ); ksession.dispose(); checkReachability( kContainer, Person.class::isInstance, false ); checkReachability( kBase, ksession::equals, false ); checkReachability( kContainer, ksession::equals, false ); }
@Test(timeout=10000) public void traitMethodsWithObjects() { String source = "org/drools/compiler/factmodel/traits/testTraitWrapping.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List errors = new ArrayList(); ks.setGlobal( "list", errors ); ks.fireAllRules(); if (!errors.isEmpty()) { System.err.println( errors.toString() ); } assertTrue( errors.isEmpty() ); }
@Test (timeout=10000) public void testRemovePackage() throws Exception { Collection<KiePackage> kpkgs = SerializationHelper.serializeObject(loadKnowledgePackages("test_RemovePackage.drl")); final String packageName = kpkgs.iterator().next().getName(); InternalKnowledgeBase kbase = (InternalKnowledgeBase) loadKnowledgeBase( ); kbase.addPackages( kpkgs ); kbase = SerializationHelper.serializeObject( kbase ); KieSession session = createKnowledgeSession( kbase ); session.insert( new Precondition( "genericcode", "genericvalue" ) ); session.fireAllRules(); InternalKnowledgeBase ruleBaseWM = (InternalKnowledgeBase) session.getKieBase(); ruleBaseWM.removeKiePackage( packageName ); kpkgs = SerializationHelper.serializeObject( loadKnowledgePackages( "test_RemovePackage.drl" ) ); ruleBaseWM.addPackages( kpkgs ); ruleBaseWM = SerializationHelper.serializeObject( ruleBaseWM ); session = SerializationHelper.getSerialisedStatefulKnowledgeSession( session, true ); session.fireAllRules(); ruleBaseWM.removeKiePackage(packageName); ruleBaseWM.addPackages( SerializationHelper.serializeObject( kpkgs ) ); ruleBaseWM.removeKiePackage( packageName ); ruleBaseWM.addPackages(SerializationHelper.serializeObject(kpkgs)); }
@Test(timeout=10000) public void traitMethodsWithPrimitives() { String source = "org/drools/compiler/factmodel/traits/testTraitWrappingPrimitives.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List errors = new ArrayList(); ks.setGlobal( "list", errors ); ks.fireAllRules(); if (!errors.isEmpty()) { System.err.println( errors ); } assertTrue( errors.isEmpty() ); }
@Test(timeout=10000) public void traitWithEquality() { String source = "org/drools/compiler/factmodel/traits/testTraitWithEquality.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List info = new ArrayList(); ks.setGlobal( "list", info ); ks.fireAllRules(); assertTrue( info.contains( "DON" ) ); assertTrue( info.contains( "EQUAL" ) ); }
@Test(timeout=10000) public void isAWithBackChaining() { String source = "org/drools/compiler/factmodel/traits/testTraitIsAWithBC.drl"; KieSession ksession = getSession( source ); TraitFactory.setMode( mode, ksession.getKieBase() ); List list = new ArrayList(); ksession.setGlobal( "list", list ); ksession.fireAllRules(); ksession.insert( "Como" ); ksession.fireAllRules(); assertTrue( list.contains( "Italy" ) ); }
@Test(timeout=10000) public void testIsA() { String source = "org/drools/compiler/factmodel/traits/testTraitIsA.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List info = new ArrayList(); ks.setGlobal( "list", info ); ks.fireAllRules(); int num = 10; System.out.println( info ); assertEquals( num, info.size() ); for (int j = 0; j < num; j++) { assertTrue( info.contains( "" + j ) ); } }
@Test(timeout=10000) public void testOverrideType() { String source = "org/drools/compiler/factmodel/traits/testTraitOverride.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List info = new ArrayList(); ks.setGlobal( "list", info ); try { ks.fireAllRules(); fail( "An exception was expected since a trait can't override the type of a core class field with these settings " ); } catch ( Throwable rde ) { assertTrue( rde.getCause() instanceof UnsupportedOperationException ); } }
@Test public void testDeepExt() throws Exception { KieSession ksession = genSession("test_Extends.drl"); FactType LTstudent = ksession.getKieBase().getFactType("defaultpkg","LongTermStudent"); Constructor constructor = LTstudent.getFactClass().getConstructor(String.class,int.class,String.class,String.class,int.class); assertNotNull(constructor); Object ls1 = constructor.newInstance("John",18,"Skool","C1245",4); Object ls2 = constructor.newInstance("John",33,"Skool","C1421",4); assertEquals(ls1,ls2); ksession.dispose(); }
@Test(timeout=10000) public void testTraitCollections() { String source = "org/drools/compiler/factmodel/traits/testTraitCollections.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List info = new ArrayList(); ks.setGlobal( "list", info ); ks.fireAllRules(); System.err.println( " -------------- " + ks.getObjects().size() + " ---------------- " ); for (Object o : ks.getObjects()) { System.err.println( "\t\t" + o ); } System.err.println( " -------------- ---------------- " ); System.err.println( info ); System.err.println( " -------------- ---------------- " ); assertEquals( 1, info.size() ); assertTrue( info.contains( "OK" ) ); }
@Test() public void testTraitCore() { String source = "org/drools/compiler/factmodel/traits/testTraitLegacyCore.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List info = new ArrayList(); ks.setGlobal( "list", info ); ks.fireAllRules(); System.err.println( " -------------- " + ks.getObjects().size() + " ---------------- " ); for (Object o : ks.getObjects()) { System.err.println( "\t\t" + o ); } System.err.println( " -------------- ---------------- " ); System.err.println( info ); System.err.println( " -------------- ---------------- " ); assertTrue( info.contains( "OK" ) ); assertTrue( info.contains( "OK2" ) ); assertEquals( 2, info.size() ); }
@Test(timeout=10000) public void testTraitDon() { String source = "org/drools/compiler/factmodel/traits/testTraitDon.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List info = new ArrayList(); ks.setGlobal( "list", info ); ks.fireAllRules(); Collection<? extends Object> wm = ks.getObjects(); ks.insert( "go" ); ks.fireAllRules(); assertTrue( info.contains( "DON" ) ); assertTrue( info.contains( "SHED" ) ); Iterator it = wm.iterator(); Object x = it.next(); if ( x instanceof String ) { x = it.next(); } System.out.println( x.getClass() ); System.out.println( x.getClass().getSuperclass() ); System.out.println( Arrays.asList( x.getClass().getInterfaces() )); }
@Test(timeout=10000) public void testIsAOptimization( ) { String source = "package t.x \n" + TraitFactory.setMode( mode, ks.getKieBase() ); ks.setGlobal( "list", list ); ks.fireAllRules(); assertEquals( 3, list.size() );
TraitFactory.setMode( mode, ks.getKieBase() ); ks.setGlobal( "list", list ); ks.fireAllRules(); assertEquals( "Y", list.get(0) ); assertEquals( "Z", list.get(1) ); assertEquals( first, list.get(2) );
@Test(timeout=10000) public void testUnTraitedBean() { String source = "package t.x \n" + TraitFactory.setMode( mode, ks.getKieBase() ); ks.setGlobal( "list", list ); ks.fireAllRules();
@Test public void testRetract( ) { String drl = "package org.drools.compiler.trait.test; \n" + "import org.drools.core.factmodel.traits.Traitable; \n" + "" + "declare Foo @Traitable end\n" + "declare trait Bar end \n" + "" + "rule Init when then\n" + " Foo foo = new Foo(); \n" + " don( foo, Bar.class ); \n" + "end\n" + "rule Retract \n" + "when\n" + " $bar : Bar()\n" + "then\n" + " delete( $bar ); \n" + "end\n"; KieSession ks = getSessionFromString( drl ); TraitFactory.setMode(mode, ks.getKieBase()); assertEquals(2, ks.fireAllRules()); for(Object o : ks.getObjects()) { System.out.println(o); } assertEquals(0, ks.getObjects().size()); }
@Test(timeout=10000) public void traitDeclared() { List<Integer> trueTraits = new ArrayList<Integer>(); List<Integer> untrueTraits = new ArrayList<Integer>(); KieSession ks = getSession( "org/drools/compiler/factmodel/traits/testDeclaredFactTrait.drl" ); TraitFactory.setMode( mode, ks.getKieBase() ); ks.setGlobal( "trueTraits", trueTraits ); ks.setGlobal( "untrueTraits", untrueTraits ); ks.fireAllRules(); ks.dispose(); assertTrue( trueTraits.contains( 1 ) ); assertFalse( trueTraits.contains( 2 ) ); assertTrue( untrueTraits.contains( 2 ) ); assertFalse( untrueTraits.contains( 1 ) ); }
@Test(timeout=10000) public void traitPojo() { List<Integer> trueTraits = new ArrayList<Integer>(); List<Integer> untrueTraits = new ArrayList<Integer>(); KieSession session = getSession( "org/drools/compiler/factmodel/traits/testPojoFactTrait.drl" ); TraitFactory.setMode( mode, session.getKieBase() ); session.setGlobal( "trueTraits", trueTraits ); session.setGlobal( "untrueTraits", untrueTraits ); session.fireAllRules(); session.dispose(); assertTrue( trueTraits.contains( 1 ) ); assertFalse( trueTraits.contains( 2 ) ); assertTrue( untrueTraits.contains( 2 ) ); assertFalse( untrueTraits.contains( 1 ) ); }