/* * Copyright: Almende B.V. (2014), Rotterdam, The Netherlands * License: The Apache Software License, Version 2.0 */ package com.almende.eve.test; import java.io.IOException; import java.net.URI; import java.util.logging.Level; import java.util.logging.Logger; import junit.framework.TestCase; import org.junit.Test; import com.almende.eve.agent.AgentConfig; import com.almende.eve.agent.ExampleAgent; import com.almende.eve.instantiation.InstantiationServiceConfig; import com.almende.eve.protocol.jsonrpc.formats.Params; import com.almende.eve.state.file.FileStateConfig; import com.almende.eve.transport.http.HttpTransportConfig; import com.almende.util.TypeUtil; import com.almende.util.callback.AsyncCallback; import com.almende.util.jackson.JOM; import com.fasterxml.jackson.databind.node.ObjectNode; /** * The Class TestAgents. */ public class TestAgents extends TestCase { private static final Logger LOG = Logger.getLogger(TestAgents.class .getName()); /** * Test agents. * * @throws IOException * Signals that an I/O exception has occurred. * @throws InterruptedException * the interrupted exception */ @Test public void testAgent() throws IOException, InterruptedException { final InstantiationServiceConfig isconfig = InstantiationServiceConfig.create(); final FileStateConfig state = FileStateConfig.create(); state.setPath(".wakeservices"); state.setId("testAgents"); isconfig.setState(state); final HttpTransportConfig transportConfig = HttpTransportConfig.create(); transportConfig.setServletUrl("http://localhost:8080/agents/"); transportConfig.setServletLauncher("JettyLauncher"); final ObjectNode jettyParms = JOM.createObjectNode(); jettyParms.put("port", 8080); transportConfig.set("jetty", jettyParms); final AgentConfig config = AgentConfig.create("example"); config.addTransport(transportConfig); config.setInstantiationService(isconfig); ExampleAgent agent = new ExampleAgent(); agent.setConfig(config); final Params callParams = new Params(); callParams.add("message", "Hello world!"); agent.pubSend(URI.create("http://localhost:8080/agents/example"), "helloWorld", callParams, new AsyncCallback<String>() { @Override public void onSuccess(final String result) { LOG.warning("Received:'" + result + "'"); } @Override public void onFailure(final Exception exception) { LOG.log(Level.SEVERE, "", exception); fail(); } }); LOG.warning("Sync received:'" + agent.pubSendSync( URI.create("http://localhost:8080/agents/example"), "helloWorld", callParams, new TypeUtil<String>() {}) + "'"); // Try to get rid of the agent instance from memory agent = null; System.gc(); System.gc(); final AgentConfig ac = AgentConfig.create("tester"); ac.addTransport(transportConfig); final ExampleAgent tester = new ExampleAgent() {}; tester.setConfig(ac); LOG.warning("Sync received:'" + tester.pubSendSync( URI.create("http://localhost:8080/agents/example"), "helloWorld", callParams.deepCopy().put("message", "Hello world after sleep!"), new TypeUtil<String>() {}) + "'"); tester.runComplexTypeTest(URI .create("http://localhost:8080/agents/example")); } }