/* * 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.capabilities.handler.Handler; import com.almende.eve.transport.LocalTransportConfig; import com.almende.eve.transport.Receiver; import com.almende.eve.transport.Transport; import com.almende.eve.transport.TransportBuilder; import com.almende.eve.transport.amqp.AmqpTransportConfig; import com.almende.eve.transport.pubnub.PubNubTransportConfig; import com.almende.eve.transport.ws.WebsocketTransportConfig; import com.almende.eve.transport.ws.WsClientTransport; import com.almende.eve.transport.ws.WsClientTransportBuilder; import com.almende.eve.transport.xmpp.XmppTransportBuilder; import com.almende.eve.transport.xmpp.XmppTransportConfig; import com.almende.eve.transport.zmq.ZmqTransportConfig; import com.almende.util.URIUtil; import com.almende.util.callback.AsyncCallback; import com.almende.util.jackson.JOM; import com.fasterxml.jackson.databind.node.ObjectNode; /** * The Class TestTransports. */ public class TestTransports extends TestCase { private static final Logger LOG = Logger.getLogger(TestTransports.class .getName()); /** * Test Xmpp. * * @throws IOException * Signals that an I/O exception has occurred. */ @Test public void testXmpp() throws IOException { final XmppTransportConfig params = XmppTransportConfig.create(); params.setAddress("xmpp://alex@openid.almende.org/test"); params.setPassword("alex"); final Transport transport = new XmppTransportBuilder() .withConfig(params).withHandle(new MyReceiver()).build(); transport.connect(); transport.send(URIUtil.create("xmpp:gloria@openid.almende.org"), "Hello World", null, null); try { Thread.sleep(10000); } catch (final InterruptedException e) {} } /** * Test Zmq. * * @throws IOException * Signals that an I/O exception has occurred. */ @Test public void testZmq() throws IOException { final ZmqTransportConfig config = ZmqTransportConfig.create(); config.setAddress("zmq://tcp://127.0.0.1:5678"); final Transport transport = new TransportBuilder().withConfig(config) .withHandle(new MyReceiver()).build(); transport.connect(); transport.send(URIUtil.create("zmq://tcp://127.0.0.1:5678"), "Hello World", null, null); } /** * Test local transport. * * @throws IOException * Signals that an I/O exception has occurred. */ @Test public void testLocal() throws IOException { final LocalTransportConfig config = LocalTransportConfig.create(); config.setId("testMe"); final Transport transport = new TransportBuilder().withConfig(config) .withHandle(new MyReceiver()).build(); transport.send(URI.create("local:testMe"), "Hello World", null, null); } /** * Test pub nub. * * @throws IOException * Signals that an I/O exception has occurred. */ @Test public void testPubNub() throws IOException { final PubNubTransportConfig config = PubNubTransportConfig.create(); config.setAddress("pubnub:testMe"); // My test account: config.setPublishKey("pub-c-fe1f34ab-67e4-4673-9f51-61ebb0fa1a34"); config.setSubscribeKey("sub-c-1da70282-b33c-11e3-aab4-02ee2ddab7fe"); config.setDoShortcut(false); config.setUseSSL(false); final Transport transport = new TransportBuilder().withConfig(config) .withHandle(new MyReceiver()).build(); transport.connect(); transport.send(URI.create("pubnub:testMe"), "Hello World", null, null); try { Thread.sleep(1000); } catch (InterruptedException e) {} } /** * Test AMQP * * @throws IOException * Signals that an I/O exception has occurred. */ @Test public void testAmqp() throws IOException { final AmqpTransportConfig config = AmqpTransportConfig.create(); config.setId("testMe"); config.setHostUri("amqp://localhost"); config.setDoShortcut(false); final Transport transport = new TransportBuilder().withConfig(config) .withHandle(new MyReceiver()).build(); transport.connect(); try { Thread.sleep(2000); } catch (InterruptedException e) {} transport.send(URI.create("amqp:testMe"), "Hello World", null, new AsyncCallback<Void>() { @Override public void onSuccess(Void result) { LOG.warning("Success!"); } @Override public void onFailure(Exception e) { LOG.log(Level.WARNING, "Failed to send amqp message", e); } }); try { Thread.sleep(20000); } catch (InterruptedException e) {} } /** * Test Websocket transport. * * @throws IOException * Signals that an I/O exception has occurred. */ @Test public void testWs() throws IOException { final WebsocketTransportConfig serverConfig = WebsocketTransportConfig .create(); serverConfig.setAddress("ws://localhost:8082/ws/testServer"); serverConfig.setServer(true); serverConfig.setServletLauncher("JettyLauncher"); final ObjectNode jettyParms = JOM.createObjectNode(); jettyParms.put("port", 8082); serverConfig.set("jetty", jettyParms); final Transport server = new TransportBuilder() .withConfig(serverConfig).withHandle(new MyReceiver()).build(); final WebsocketTransportConfig clientConfig = WebsocketTransportConfig .create(); clientConfig.setId("testClient"); clientConfig.setServerUrl("ws://localhost:8082/ws/testServer"); final WsClientTransport client = new WsClientTransportBuilder() .withConfig(clientConfig).withHandle(new MyReceiver()).build(); client.connect(); server.send(URIUtil.create("wsclient:testClient"), "Hi there!", null, null); client.send(URIUtil.create("ws://localhost:8082/ws/testServer"), "Good day to you!", null, null); } /** * The Class myReceiver. */ public class MyReceiver implements Receiver, Handler<Receiver> { /* * (non-Javadoc) * @see com.almende.eve.transport.Receiver#receive(java.lang.Object, * java.net.URI, java.lang.String) */ @Override public void receive(final Object msg, final URI senderUrl, final String tag) { LOG.warning("Received msg:'" + msg + "' from: " + senderUrl.toASCIIString()); } /* * (non-Javadoc) * @see com.almende.eve.capabilities.handler.Handler#get() */ @Override public Receiver get() { return this; } /* * (non-Javadoc) * @see * com.almende.eve.capabilities.handler.Handler#update(com.almende.eve * .capabilities.handler.Handler) */ @Override public void update(final Handler<Receiver> newHandler) { // Not used, data should be the same. } /* * (non-Javadoc) * @see com.almende.eve.capabilities.handler.Handler#getKey() */ @Override public String getKey() { // Not used, data should be the same. return null; } @Override public Receiver getNoWait() { return this; } } }