private void createKnowledgeSessionStartProcessEtc(KieBase kbase) { logger.info("session count=" + kbase.getKieSessions().size()); logger.info("session count=" + kbase.getKieSessions().size());
@After public void cleanup() { if (this.kieBase != null) { // copying the KieSession collection is also workaround for ConcurrentModificationException in the test Collection<KieSession> kieSessions = new ArrayList<KieSession>(); kieSessions.addAll(this.kieBase.getKieSessions()); for (KieSession kieSession : kieSessions) { kieSession.dispose(); } } }
/** * Tests that disposing KieSessions does not throw ConcurrentModificationException when iterating through the list of KieBase's KieSessions * (related to BZ 1326329). */ @Test public void testDisposingSeveralKieSessions() throws Exception { for (KieSession kieSession : this.kieBase.getKieSessions()) { kieSession.dispose(); } assertTrue("All KieSessions of the KieBase should have been disposed.", this.kieBase.getKieSessions().isEmpty()); }
@Override public Collection<? extends KieSession> getKieSessions() { return kieBase.getKieSessions(); }
@Override public Collection<? extends KieSession> getKieSessions() { return kieBase.getKieSessions(); }
@Test public void testGetStatefulKnowledgeSessions() throws Exception { final KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("../empty.drl")); final KieSession ksession_1 = createKnowledgeSession(kbase); final String expected_1 = "expected_1"; final String expected_2 = "expected_2"; final FactHandle handle_1 = ksession_1.insert(expected_1); final FactHandle handle_2 = ksession_1.insert(expected_2); ksession_1.fireAllRules(); final Collection<? extends KieSession> coll_1 = kbase.getKieSessions(); assertTrue(coll_1.size() == 1); final KieSession ksession_2 = coll_1.iterator().next(); final Object actual_1 = ksession_2.getObject(handle_1); final Object actual_2 = ksession_2.getObject(handle_2); assertEquals(expected_1, actual_1); assertEquals(expected_2, actual_2); ksession_1.dispose(); final Collection<? extends KieSession> coll_2 = kbase.getKieSessions(); assertTrue(coll_2.size() == 0); // here to make sure it's safe to call dispose() twice ksession_1.dispose(); final Collection<? extends KieSession> coll_3 = kbase.getKieSessions(); assertTrue(coll_3.size() == 0); }
@Override public Collection<? extends KieSession> getKieSessions() { return getKieBase().getKieSessions(); }
@Override public Collection<? extends KieSession> getKieSessions() { return getKieBase().getKieSessions(); }
private void createKnowledgeSessionStartProcessEtc(KieBase kbase) { logger.info("session count=" + kbase.getKieSessions().size()); logger.info("session count=" + kbase.getKieSessions().size());