package com.enioka.jqm.tools; import java.lang.management.ManagementFactory; import javax.management.InstanceNotFoundException; import javax.management.MBeanServer; import javax.management.ObjectName; import org.junit.Assert; import org.junit.Test; import com.enioka.jqm.api.JqmClientFactory; import com.enioka.jqm.test.helpers.TestHelpers; public class ClLeakTest extends JqmBaseTest { @Test public void testJmxLeak() throws Exception { int i = JqmSimpleTest.create(cnx, "pyl.EngineJmxLeak").addWaitTime(10000).expectOk(0).run(this); MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); ObjectName name = new ObjectName("com.test:type=Node,name=test"); mbs.getAttribute(name, "One"); // Stop the job. Its MBean(s) should be cleaned up by the engine. JqmClientFactory.getClient().killJob(i); TestHelpers.waitFor(1, 3000, cnx); // Check the bean is really dead try { mbs.getAttribute(name, "One"); Assert.fail(); } catch (InstanceNotFoundException e) { // It's OK! } } }