package org.oddjob.jmx;
import junit.framework.TestCase;
import org.apache.log4j.Logger;
import org.oddjob.Oddjob;
import org.oddjob.OddjobComponentResolver;
import org.oddjob.arooa.standard.StandardArooaSession;
import org.oddjob.arooa.xml.XMLConfiguration;
import org.oddjob.jobs.EchoJob;
import org.oddjob.state.ParentState;
import org.oddjob.tools.ConsoleCapture;
import org.oddjob.tools.OddjobTestHelper;
public class PlatformMBeanServerTest extends TestCase {
private static final Logger logger = Logger.getLogger(PlatformMBeanServerTest.class);
@Override
protected void setUp() throws Exception {
logger.info("---------------------- " + getName() + " --------------------");
}
public void testClientServer() throws Exception {
Object echo = new OddjobComponentResolver().resolve(new EchoJob(), null);
JMXServerJob server = new JMXServerJob();
server.setRoot(echo);
server.setArooaSession(new StandardArooaSession());
server.start();
JMXClientJob client = new JMXClientJob();
client.setArooaSession(new StandardArooaSession());
client.run();
Object[] children = OddjobTestHelper.getChildren(client);
assertEquals(1, children.length);
client.stop();
server.stop();
}
public void testInOddjob() {
Oddjob server = new Oddjob();
server.setConfiguration(new XMLConfiguration(
"org/oddjob/jmx/PlatformMBeanServerExample.xml",
getClass().getClassLoader()));
server.run();
Oddjob client = new Oddjob();
client.setConfiguration(new XMLConfiguration(
"org/oddjob/jmx/PlatformMBeanClientExample.xml",
getClass().getClassLoader()));
ConsoleCapture console = new ConsoleCapture();
try (ConsoleCapture.Close close = console.captureConsole()) {
client.run();
}
assertEquals(ParentState.COMPLETE,
client.lastStateEvent().getState());
console.dump(logger);
String[] lines = console.getLines();
assertEquals("Hello from an Oddjob Server!", lines[0].trim());
assertEquals(1, lines.length);
client.destroy();
server.destroy();
}
}