/**
*
*/
package com.trendrr.oss.tests;
import java.util.Date;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import junit.framework.Assert;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
import com.trendrr.oss.messaging.channel.ChannelMethodRequestHandler;
import com.trendrr.oss.messaging.channel.MessageChannel;
import com.trendrr.oss.messaging.channel.MessageChannel;
import com.trendrr.oss.tests.messaging.EchoClass;
/**
* @author Dustin Norlander
* @created May 18, 2012
*
*/
public class MessageChannelTests {
protected static Log log = LogFactory.getLog(MessageChannelTests.class);
@Test
public void channelTest() throws Exception {
MessageChannel channel = MessageChannel.create("test", new ChannelMethodRequestHandler(new EchoClass()));
Object val = channel.request("stringLength", "1234");
Assert.assertEquals(val, 4);
List<Object> vals = (List<Object>)channel.request("inputToList", "one", "two");
Assert.assertTrue(vals.size() == 2);
channel.stop();
}
@Test
public void threadedRequesterSpeedTest() throws Exception {
final int num = 100000;
final MessageChannel channel = MessageChannel.create("test", new ChannelMethodRequestHandler(new EchoClass()));
int numThreads = 10;
final CountDownLatch latch = new CountDownLatch(numThreads);
Date start = new Date();
for (int i=0; i< numThreads; i++) {
Thread t = new Thread() {
@Override
public void run() {
for (int i=0; i < num; i++) {
try {
Object val = channel.request("stringLength", "1234 " + i);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
latch.countDown();
}
};
t.start();
}
latch.await();
System.out.println("CHANNEL COMPLETED " + (num*numThreads) + " IN " + (new Date().getTime()-start.getTime()));
}
@Test
public void speedTest() throws Exception {
EchoClass echo = new EchoClass();
ChannelMethodRequestHandler handler = new ChannelMethodRequestHandler(echo);
MessageChannel channel = MessageChannel.create("test", handler);
int num = 100000;
//warm up.
for (int i=0; i < 100; i++) {
Object val = channel.request("stringLength", "1234");
List<Object> vals = (List<Object>)channel.request("inputToList", "one", "two");
}
Date start = new Date();
for (int i=0; i < num; i++) {
Object val = channel.request("stringLength", "1234");
List<Object> vals = (List<Object>)channel.request("inputToList", "one", "two");
}
long millis = (new Date().getTime()-start.getTime());
System.out.println("MESSAGE CHANNEL2 COMPLETED " + num + " IN " + (new Date().getTime()-start.getTime()));
start = new Date();
for (int i=0; i < num; i++) {
Object val = handler.handleRequest("stringLength", "1234");
List<Object> vals = (List<Object>)handler.handleRequest("inputToList", "one", "two");
}
System.out.println("HANDLER COMPLETED " + num + " IN " + (new Date().getTime()-start.getTime()));
start = new Date();
for (int i=0; i < num; i++) {
Object val = echo.stringLength("1234");
List<Object> vals = echo.inputToList( "one", "two");
}
System.out.println("COMPLETED " + num + " IN " + (new Date().getTime()-start.getTime()));
channel.stop();
}
}