use of org.drools.core.impl.InternalKieContainer in project drools by kiegroup.
the class KieContainerTest method testMemoryFileSystemFolderUniqueness.
@Test
public void testMemoryFileSystemFolderUniqueness() {
KieServices kieServices = KieServices.Factory.get();
String drl = "package org.drools.test\n" + "rule R1 when\n" + " $m : Object()\n" + "then\n" + "end\n";
Resource resource = kieServices.getResources().newReaderResource(new StringReader(drl), "UTF-8");
resource.setTargetPath("org/drools/test/rules.drl");
String kmodule = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<kmodule xmlns=\"http://www.drools.org/xsd/kmodule\">\n" + " <kbase name=\"testKbase\" packages=\"org.drools.test\">\n" + " <ksession name=\"testKsession\"/>\n" + " </kbase>\n" + "</kmodule>";
// Create an in-memory jar for version 1.0.0
ReleaseId releaseId = kieServices.newReleaseId("org.kie", "test-delete", "1.0.0");
createAndDeployJar(kieServices, kmodule, releaseId, resource);
KieContainer kieContainer = kieServices.newKieContainer(releaseId);
KieModule kieModule = ((InternalKieContainer) kieContainer).getMainKieModule();
MemoryFileSystem memoryFileSystem = ((MemoryKieModule) kieModule).getMemoryFileSystem();
Folder rootFolder = memoryFileSystem.getFolder("");
Object[] members = rootFolder.getMembers().toArray();
assertEquals(2, members.length);
Folder firstFolder = (Folder) members[0];
Folder secondFolder = (Folder) members[1];
assertEquals(firstFolder.getParent(), secondFolder.getParent());
}
use of org.drools.core.impl.InternalKieContainer in project drools by kiegroup.
the class MBeansMonitoringTest method testContainerMBeans.
@Test
public void testContainerMBeans() throws Exception {
String drl = "package org.drools.compiler.test\n" + "import org.drools.compiler.StockTick\n" + "declare StockTick\n" + " @role(event)\n" + " @expires(10s)\n" + "end\n" + "rule X\n" + "when\n" + " StockTick()\n" + "then\n" + "end";
KieServices ks = KieServices.Factory.get();
KieModuleModel kproj = ks.newKieModuleModel();
KieBaseModel kieBaseModel1 = kproj.newKieBaseModel(KBASE1).setDefault(true).setEventProcessingMode(EventProcessingOption.STREAM);
KieSessionModel ksessionModel1 = kieBaseModel1.newKieSessionModel(KSESSION1).setDefault(true).setType(KieSessionModel.KieSessionType.STATEFUL).setClockType(ClockTypeOption.get(ClockType.PSEUDO_CLOCK.getId()));
ReleaseId releaseId1 = ks.newReleaseId("org.kie.test", "mbeans", "1.0.0");
createKJar(ks, kproj, releaseId1, null, drl);
KieContainer kc = ks.newKieContainer(releaseId1);
KieBase kiebase = kc.getKieBase(KBASE1);
kc.newKieSession(KSESSION1);
kiebase.newKieSession();
String kc1ID = ((InternalKieContainer) kc).getContainerId();
MBeanServer mbserver = ManagementFactory.getPlatformMBeanServer();
LOG.debug("{}", mbserver.queryNames(new ObjectName("org.kie:kcontainerId=" + ObjectName.quote(kc1ID) + ",*"), null));
ReleaseId verRelease = ks.newReleaseId("org.kie.test", "mbeans", "RELEASE");
KieContainer kc2 = ks.newKieContainer("Matteo", verRelease);
kc2.newKieSession(KSESSION1);
KieContainerMonitorMXBean c1Monitor = JMX.newMXBeanProxy(mbserver, DroolsManagementAgent.createObjectNameBy(kc1ID), KieContainerMonitorMXBean.class);
assertEquals(releaseId1.toExternalForm(), c1Monitor.getConfiguredReleaseIdStr());
assertEquals(releaseId1.toExternalForm(), c1Monitor.getResolvedReleaseIdStr());
assertTrue(c1Monitor.getConfiguredReleaseId().sameGAVof(releaseId1));
assertTrue(c1Monitor.getResolvedReleaseId().sameGAVof(releaseId1));
assertEquals(releaseId1.getVersion(), c1Monitor.getConfiguredReleaseId().getVersion());
assertEquals(releaseId1.getVersion(), c1Monitor.getResolvedReleaseId().getVersion());
KieContainerMonitorMXBean c2Monitor = JMX.newMXBeanProxy(mbserver, DroolsManagementAgent.createObjectNameBy("Matteo"), KieContainerMonitorMXBean.class);
assertEquals(verRelease.toExternalForm(), c2Monitor.getConfiguredReleaseIdStr());
assertEquals(releaseId1.toExternalForm(), c2Monitor.getResolvedReleaseIdStr());
assertTrue(c2Monitor.getConfiguredReleaseId().sameGAVof(verRelease));
assertTrue(c2Monitor.getResolvedReleaseId().sameGAVof(releaseId1));
assertEquals(verRelease.getVersion(), c2Monitor.getConfiguredReleaseId().getVersion());
assertEquals(releaseId1.getVersion(), c2Monitor.getResolvedReleaseId().getVersion());
// MBean are supported only via KieContainer public API.
assertEquals(3, mbserver.queryNames(new ObjectName("org.kie:kcontainerId=" + ObjectName.quote(kc1ID) + ",*"), null).size());
kc.dispose();
assertEquals(0, mbserver.queryNames(new ObjectName("org.kie:kcontainerId=" + ObjectName.quote(kc1ID) + ",*"), null).size());
assertEquals(3, mbserver.queryNames(new ObjectName("org.kie:kcontainerId=" + ObjectName.quote("Matteo") + ",*"), null).size());
}
use of org.drools.core.impl.InternalKieContainer in project drools by kiegroup.
the class KieContainerDefaultsTest method testTwoKieSessionsOneStatelessDefault.
/**
* This test checks if default KieSessions behave as expected even if one of them is Stateless.
*/
@Test
public void testTwoKieSessionsOneStatelessDefault() {
final KieModuleModel kieModule = kieServices.newKieModuleModel();
kieModule.newKieBaseModel("firstKBase").setDefault(true).newKieSessionModel("firstKSession").setType(KieSessionModel.KieSessionType.STATELESS).setDefault(true);
kieModule.newKieBaseModel("secondKBase").setDefault(true).newKieSessionModel("secondKSession").setDefault(false);
buildKieModule(kieModule);
final KieContainer kieContainer = kieServices.newKieContainer(RELEASE_ID);
final StatelessKieSession firstKSession = kieContainer.newStatelessKieSession("firstKSession");
final KieSession secondKSession = kieContainer.newKieSession("secondKSession");
try {
Assertions.assertThat(firstKSession).isEqualTo(((InternalKieContainer) kieContainer).getStatelessKieSession());
Assertions.assertThat(secondKSession).isNotEqualTo(((InternalKieContainer) kieContainer).getStatelessKieSession());
} finally {
secondKSession.dispose();
}
}
Aggregations