private void initPathMemories() { pathMemories = new PathMemory[3]; NamedEntryPoint ep = (NamedEntryPoint)epManipulators[8].getEntryPoiny(); InternalWorkingMemory wm = ((NamedEntryPoint)ep).getInternalWorkingMemory(); ObjectTypeNode otn = ((NamedEntryPoint)ep).getEntryPointNode().getObjectTypeNodes().values().iterator().next(); AlphaNode alpha = (AlphaNode)otn.getObjectSinkPropagator().getSinks()[0]; ObjectSink[] sinks = alpha.getObjectSinkPropagator().getSinks(); for (int i = 0; i < sinks.length; i++) { BetaNode beta = (BetaNode)sinks[i]; RuleTerminalNode rtn = (RuleTerminalNode)beta.getSinkPropagator().getSinks()[0]; pathMemories[i] = ( PathMemory ) wm.getNodeMemory(rtn); } } }
@Test public void testFromEPDontRequireLeftInput() { // DROOLS-1014 String drl = "rule R when\n" + " $s1 : String() from entry-point \"xxx\"\n" + "then\n" + "end\n"; KieBase kbase = new KieHelper().addContent( drl, ResourceType.DRL ) .build(); Rete rete = ( (KnowledgeBaseImpl) kbase ).getRete(); LeftInputAdapterNode liaNode = null; for ( ObjectTypeNode otn : rete.getObjectTypeNodes() ) { Class<?> otnType = ( (ClassObjectType) otn.getObjectType() ).getClassType(); if ( String.class == otnType ) { assertEquals( 1, otn.getObjectSinkPropagator().size() ); } else if ( InitialFact.class.isAssignableFrom( otnType ) ) { assertEquals( 0, otn.getObjectSinkPropagator().size() ); } else { fail("There shouldn't be other OTNs"); } } }
sink.getClass() ); assertEquals( 1, sink.getSinks().length ); sink.getClass() ); assertEquals( 2, sink.getSinks().length ); sink.getClass() ); assertEquals( 3, sink.getSinks().length ); sink.getClass() ); assertEquals( 2, sink.getSinks().length ); sink.getClass() ); assertEquals( 1, sink.getSinks().length ); sink ); assertEquals( 0, sink.getSinks().length );
private void checkPartitionedSinks(ObjectTypeNode otn) { if ( InitialFact.class.isAssignableFrom( ( (ClassObjectType) otn.getObjectType() ).getClassType() ) ) { return; } ObjectSinkPropagator sinkPropagator = otn.getObjectSinkPropagator(); ObjectSinkPropagator[] propagators = sinkPropagator instanceof CompositePartitionAwareObjectSinkAdapter ? ((CompositePartitionAwareObjectSinkAdapter) sinkPropagator).getPartitionedPropagators() : new ObjectSinkPropagator[] { sinkPropagator }; for (int i = 0; i < propagators.length; i++) { for (ObjectSink sink : propagators[i].getSinks()) { assertEquals( sink + " on " + sink.getPartitionId() + " is expcted to be on propagator " + i, i, sink.getPartitionId().getId() % propagators.length ); } } }
BetaNode beta1 = (BetaNode) otn.getObjectSinkPropagator().getSinks()[0]; RightInputAdapterNode rian = (RightInputAdapterNode) beta1.getSinkPropagator().getSinks()[0]; BetaNode beta2 = (BetaNode) rian.getObjectSinkPropagator().getSinks()[0]; LeftTupleSink[] sinks = beta2.getSinkPropagator().getSinks(); RuleTerminalNode rtn1 = (RuleTerminalNode) sinks[0];
@Test public void testBetaNodeWithConstraintsNoPropertySpecific() { String rule = "package org.drools.compiler.integrationtests\n" + "import " + Person.class.getCanonicalName() + "\n" + "import " + Cheese.class.getCanonicalName() + "\n" + "rule r1\n" + "when\n" + " Person()\n" + " Cheese( type == 'brie' )\n" + "then\n" + "end\n"; KieBase kbase = new KieHelper(PropertySpecificOption.ALLOWED).addContent(rule, ResourceType.DRL).build(); ObjectTypeNode otn = getObjectTypeNode(kbase, "Cheese" ); assertNotNull( otn ); AlphaNode alphaNode = ( AlphaNode ) otn.getObjectSinkPropagator().getSinks()[0]; assertEquals( AllSetBitMask.get(), alphaNode.getDeclaredMask() ); assertEquals( AllSetBitMask.get(), alphaNode.getInferredMask() ); BetaNode betaNode = ( BetaNode ) alphaNode.getObjectSinkPropagator().getSinks()[0]; assertEquals( AllSetBitMask.get(), betaNode.getRightDeclaredMask() ); assertEquals( AllSetBitMask.get(), betaNode.getRightInferredMask() ); }
@Test public void testBetaNodeNoConstraintsNoPropertySpecific() { String rule = "package org.drools.compiler.integrationtests\n" + "import " + Person.class.getCanonicalName() + "\n" + "import " + Cheese.class.getCanonicalName() + "\n" + "rule r1\n" + "when\n" + " Person()\n" + " Cheese()\n" + "then\n" + "end\n"; KieBase kbase = new KieHelper(PropertySpecificOption.ALLOWED).addContent(rule, ResourceType.DRL).build(); ObjectTypeNode otn = getObjectTypeNode(kbase, "Cheese" ); assertNotNull( otn ); BetaNode betaNode = ( BetaNode ) otn.getObjectSinkPropagator().getSinks()[0]; assertEquals( AllSetBitMask.get(), betaNode.getRightDeclaredMask() ); assertEquals( AllSetBitMask.get(), betaNode.getRightInferredMask() ); }
final LeftInputAdapterNode lian = (LeftInputAdapterNode)otn.getObjectSinkPropagator().getSinks()[0]; final ReactiveFromNode from1 = (ReactiveFromNode)lian.getSinkPropagator().getSinks()[0]; final ReactiveFromNode from2 = (ReactiveFromNode)from1.getSinkPropagator().getSinks()[0];
ObjectTypeNode otn = nep.getEntryPointNode().getObjectTypeNodes().get( new ClassObjectType( Entity.class ) ); assertNotNull( otn ); assertEquals( 1, otn.getObjectSinkPropagator().getSinks().length );
@Test public void testRTNodeWithConstraintsNoPropertySpecific() { String rule = "package org.drools.compiler.integrationtests\n" + "import " + Person.class.getCanonicalName() + "\n" + "rule r1\n" + "when\n" + " Person( name == 'bobba')\n" + "then\n" + "end\n"; KieBase kbase = new KieHelper(PropertySpecificOption.ALLOWED).addContent(rule, ResourceType.DRL).build(); ObjectTypeNode otn = getObjectTypeNode(kbase, "Person" ); assertNotNull( otn ); AlphaNode alphaNode = ( AlphaNode ) otn.getObjectSinkPropagator().getSinks()[0]; assertEquals( AllSetBitMask.get(), alphaNode.getDeclaredMask() ); assertEquals( AllSetBitMask.get(), alphaNode.getInferredMask() ); LeftInputAdapterNode liaNode = ( LeftInputAdapterNode ) alphaNode.getObjectSinkPropagator().getSinks()[0]; RuleTerminalNode rtNode = ( RuleTerminalNode ) liaNode.getSinkPropagator().getSinks()[0]; assertEquals( AllSetBitMask.get(), rtNode.getDeclaredMask() ); assertEquals( AllSetBitMask.get(), rtNode.getInferredMask() ); }
assertNotNull( otn ); AlphaNode alphaNode1 = ( AlphaNode ) otn.getObjectSinkPropagator().getSinks()[0]; assertEquals( AllSetBitMask.get(), alphaNode1.getDeclaredMask() ); assertEquals( AllSetBitMask.get(), alphaNode1.getInferredMask() ); AlphaNode alphaNode1_1 = ( AlphaNode ) alphaNode1.getObjectSinkPropagator().getSinks()[0]; assertEquals( AllSetBitMask.get(), alphaNode1_1.getDeclaredMask() ); assertEquals( AllSetBitMask.get(), alphaNode1_1.getInferredMask() ); BetaNode betaNode1 = ( BetaNode ) alphaNode1_1.getObjectSinkPropagator().getSinks()[0]; AlphaNode alphaNode1_2 = ( AlphaNode ) alphaNode1.getObjectSinkPropagator().getSinks()[1]; assertEquals( AllSetBitMask.get(), alphaNode1_2.getDeclaredMask() ); assertEquals( AllSetBitMask.get(), alphaNode1_2.getInferredMask() ); BetaNode betaNode2 = ( BetaNode ) alphaNode1_2.getObjectSinkPropagator().getSinks()[0];
wm.setGlobal( "list", list ); LeftInputAdapterNode aNode = (LeftInputAdapterNode) aotn.getObjectSinkPropagator().getSinks()[0]; NotNode bNode = ( NotNode) aNode.getSinkPropagator().getSinks()[0]; JoinNode cNode = ( JoinNode) bNode.getSinkPropagator().getSinks()[0];
LeftInputAdapterNode liaNode = (LeftInputAdapterNode) aotn.getObjectSinkPropagator().getSinks()[0];
@Test public void testRTNodeNoConstraintsNoPropertySpecific() { String rule = "package org.drools.compiler.integrationtests\n" + "import " + Person.class.getCanonicalName() + "\n" + "rule r1\n" + "when\n" + " Person()\n" + "then\n" + "end\n"; KieBase kbase = new KieHelper(PropertySpecificOption.ALLOWED).addContent(rule, ResourceType.DRL).build(); ObjectTypeNode otn = getObjectTypeNode(kbase, "Person" ); assertNotNull( otn ); LeftInputAdapterNode liaNode = ( LeftInputAdapterNode ) otn.getObjectSinkPropagator().getSinks()[0]; RuleTerminalNode rtNode = ( RuleTerminalNode ) liaNode.getSinkPropagator().getSinks()[0]; assertEquals( AllSetBitMask.get(), rtNode.getDeclaredMask() ); assertEquals( AllSetBitMask.get(), rtNode.getInferredMask() ); }
@Test public void testInitialFactBetaNodeWithRightInputAdapter() { String rule = "package org.drools.compiler.integrationtests\n" + "import " + Person.class.getCanonicalName() + "\n" + "import " + Cheese.class.getCanonicalName() + "\n" + "rule r1\n" + "when\n" + " exists(eval(1==1))\n" + "then\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString( rule ); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase.newKieSession()); ObjectTypeNode otn = getObjectTypeNode(kbase, "InitialFactImpl" ); assertNotNull( otn ); LeftInputAdapterNode liaNode = ( LeftInputAdapterNode ) otn.getObjectSinkPropagator().getSinks()[0]; BetaNode betaNode = ( BetaNode ) liaNode.getSinkPropagator().getSinks()[1]; assertEquals( AllSetBitMask.get(), betaNode.getLeftDeclaredMask() ); assertEquals( AllSetBitMask.get(), betaNode.getLeftInferredMask() ); assertEquals( AllSetBitMask.get(), betaNode.getRightDeclaredMask() ); assertEquals( AllSetBitMask.get(), betaNode.getRightInferredMask() ); }
@Test public void testRtnNoConstraintsNoWatches() { String rule1 = "A()"; KieBase kbase = getKnowledgeBase(rule1); InternalWorkingMemory wm = ((InternalWorkingMemory)kbase.newKieSession()); ObjectTypeNode otn = getObjectTypeNode(kbase, "A" ); assertNotNull( otn ); LeftInputAdapterNode liaNode = ( LeftInputAdapterNode ) otn.getObjectSinkPropagator().getSinks()[0]; RuleTerminalNode rtNode = ( RuleTerminalNode ) liaNode.getSinkPropagator().getSinks()[0]; assertEquals( EmptyBitMask.get(), rtNode.getDeclaredMask() ); assertEquals( EmptyBitMask.get(), rtNode.getInferredMask() ); }
wm.setGlobal( "list", list ); LeftInputAdapterNode aNode = (LeftInputAdapterNode) aotn.getObjectSinkPropagator().getSinks()[0]; NotNode bNode = ( NotNode) aNode.getSinkPropagator().getSinks()[0]; JoinNode cNode = ( JoinNode) bNode.getSinkPropagator().getSinks()[0];