package org.oddjob.jmx; import java.util.Properties; import junit.framework.TestCase; import org.apache.log4j.Logger; import org.oddjob.FailedToStopException; import org.oddjob.Oddjob; import org.oddjob.OddjobLookup; import org.oddjob.arooa.convert.ArooaConversionException; import org.oddjob.arooa.reflect.ArooaPropertyException; import org.oddjob.arooa.standard.StandardArooaSession; import org.oddjob.arooa.xml.XMLConfiguration; import org.oddjob.jobs.tasks.BasicTask; import org.oddjob.jobs.tasks.TaskException; import org.oddjob.jobs.tasks.TaskExecutor; import org.oddjob.jobs.tasks.TaskState; import org.oddjob.jobs.tasks.TaskView; import org.oddjob.state.ParentState; import org.oddjob.tools.ConsoleCapture; public class TaskExecutorTest extends TestCase { private static final Logger logger = Logger.getLogger(TaskExecutorTest.class); @Override protected void setUp() throws Exception { super.setUp(); logger.info("------------------- " + getName() + " ------------------------"); } public void testTaskViewProxyPropergateStateAndTaskResonse() throws ArooaPropertyException, ArooaConversionException, TaskException, FailedToStopException { Oddjob server = new Oddjob(); server.setConfiguration(new XMLConfiguration( "org/oddjob/jmx/TaskExecutorServer.xml", getClass().getClassLoader())); server.run(); assertEquals(ParentState.STARTED, server.lastStateEvent().getState()); JMXClientJob client = new JMXClientJob(); client.setArooaSession(new StandardArooaSession()); client.run(); OddjobLookup lookup = new OddjobLookup(client); TaskExecutor taskExecutor = lookup.lookup("task-executor", TaskExecutor.class); Properties properties = new Properties(); properties.setProperty("name", "Jane"); TaskView taskView = taskExecutor.execute(new BasicTask(properties)); assertEquals(TaskState.COMPLETE, taskView.lastStateEvent().getState()); assertEquals("Hello Jane", taskView.getTaskResponse()); client.stop(); server.destroy(); } public void testClientExecutesTaskThatCompletesOK() { Oddjob server = new Oddjob(); server.setConfiguration(new XMLConfiguration( "org/oddjob/jmx/TaskExecutorServer.xml", getClass().getClassLoader())); server.run(); assertEquals(ParentState.STARTED, server.lastStateEvent().getState()); Oddjob client = new Oddjob(); client.setConfiguration(new XMLConfiguration( "org/oddjob/jmx/TaskExecutorClient.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 Jane", lines[0].trim()); assertEquals("Hello Jane", lines[1].trim()); assertEquals(2, lines.length); client.destroy(); server.destroy(); } }