public static void compare(KieBase kbase1, KieBase kbase2) { compare( (InternalKnowledgeBase) kbase1, (InternalKnowledgeBase) kbase2 ); }
private static void compareNodes(BaseNode node1, BaseNode node2) { if (!node1.equals( node2 )) { throw new RuntimeException( node1 + " and " + node2 + " are not equal as expected" ); } Sink[] sinks1 = node1.getSinks(); Sink[] sinks2 = node2.getSinks(); if (sinks1 == null) { if (sinks2 == null) { return; } else { throw new RuntimeException( node1 + " has no sinks while " + node2 + " has " + sinks2.length + " sinks" ); } } else if (sinks2 == null) { throw new RuntimeException( node1 + " has " + sinks1.length + " sinks while " + node2 + " has 0 sinks" ); } if (sinks1.length != sinks2.length) { throw new RuntimeException( node1 + " has " + sinks1.length + " sinks while " + node2 + " has no sinks" ); } Arrays.sort(sinks1, NODE_SORTER); Arrays.sort(sinks2, NODE_SORTER); for (int i = 0; i < sinks1.length; i++) { if (sinks1[i] instanceof BaseNode) { compareNodes( (BaseNode) sinks1[i], (BaseNode) sinks2[i] ); } } }
assertTrue( ReteComparator.areEqual( kb1, kb2 ) );
@Test public void testKieBaseSerialization() throws Exception { // DROOLS-944 String drl = "import " + Container.class.getCanonicalName() + ";" + "rule R1 when\n" + " Container($offer : objects[\"1-CZ26IQW\"] != null)\n" + "then\n" + "end\n" + "\n" + "rule R2 when\n" + " Container($offer : objects[\"1-CZ26IR8\"] != null)\n" + "then\n" + "end\n"; KieBase kbase1 = new KieHelper().addContent( drl, ResourceType.DRL ).build(); KieBase kbase2 = SerializationHelper.serializeObject( kbase1, ( (InternalKnowledgeBase) kbase1 ).getRootClassLoader() ); assertTrue( ReteComparator.areEqual( kbase1, kbase2 ) ); }
public static boolean areEqual(KieBase kbase1, KieBase kbase2) { try { compare( kbase1, kbase2 ); return true; } catch (Exception e) { System.out.println(e.getMessage()); return false; } }
@Test public void testClassNotFoundAfterDeserialization() throws Exception { // JBRULES-3670 String drl = "package completely.other.deal;\n" + "\n" + "declare Person\n" + " firstName : String\n" + " lastName : String\n" + "end\n" + "\n" + "rule \"now use it B\"\n" + " when\n" + " Person( $christianName, $surname; )\n" + " then\n" + " insert( new Person( $christianName, null ) );\n" + "end"; KieBase kbase1 = new KieHelper().addContent( drl, ResourceType.DRL ).build(); KieBase kbase2 = SerializationHelper.serializeObject( kbase1, ( (InternalKnowledgeBase) kbase1 ).getRootClassLoader() ); assertTrue( ReteComparator.areEqual( kbase1, kbase2 ) ); }
public static void compare(Rete rete1, Rete rete2) { for (EntryPointNode epn1 : rete1.getEntryPointNodes().values()) { EntryPointNode epn2 = rete2.getEntryPointNode( epn1.getEntryPoint() ); compareNodes( epn1, epn2 ); } }
public static void compare( KieRuntime session1, KieRuntime session2 ) { compare( (InternalKnowledgeBase) session1.getKieBase(), (InternalKnowledgeBase) session2.getKieBase() ); }
public static void compare(KieSession session1, KieSession session2) { compare( (InternalKnowledgeBase) session1.getKieBase(), (InternalKnowledgeBase) session2.getKieBase() ); }
public static void compare(InternalKnowledgeBase kBase1, InternalKnowledgeBase kBase2) { compare( kBase1.getRete(), kBase2.getRete() ); }
@Test public void testClassNotFoundAfterDeserialization() throws Exception { // JBRULES-3670 String drl = "package completely.other.deal;\n" + "\n" + "declare Person\n" + " firstName : String\n" + " lastName : String\n" + "end\n" + "\n" + "rule \"now use it B\"\n" + " when\n" + " Person( $christianName, $surname; )\n" + " then\n" + " insert( new Person( $christianName, null ) );\n" + "end"; KieBase kbase1 = new KieHelper().addContent( drl, ResourceType.DRL ).build(); KieBase kbase2 = SerializationHelper.serializeObject( kbase1, ( (InternalKnowledgeBase) kbase1 ).getRootClassLoader() ); ReteComparator.compare( kbase1, kbase2 ); }