package org.jboss.test.jbossmq.stress;
import junit.framework.TestSuite;
import junit.framework.Assert;
import org.jboss.test.jbossmq.MQBase;
public class QueueTest extends MQBase
{
public QueueTest(String name)
{
super(name);
}
public void runQueueSubscriberPartOne() throws Exception
{
try
{
drainQueue();
int ic = getIterationCount();
IntRangeMessageFilter f1 = new IntRangeMessageFilter(javax.jms.Message.class,
"QUEUE_NR",
0,
ic / 2);
QueueWorker sub1 = new QueueWorker(SUBSCRIBER,
TRANS_NONE,
f1);
Thread t1 = new Thread(sub1);
t1.start();
IntRangeMessageCreator c1 = new IntRangeMessageCreator("QUEUE_NR",
0);
QueueWorker pub1 = new QueueWorker(PUBLISHER,
TRANS_NONE,
c1,
ic / 2);
pub1.connect();
pub1.publish();
Assert.assertEquals("Publisher did not publish correct number of messages " + pub1.getMessageHandled(),
ic / 2,
pub1.getMessageHandled());
log.debug("Sleeping for " + ((ic * 10) / 60000) + " minutes");
sleep(ic * 10);
Assert.assertEquals("Subscriber did not get correct number of messages " + sub1.getMessageHandled(),
ic / 2,
sub1.getMessageHandled());
sub1.close();
t1.interrupt();
pub1.publish(ic / 2);
Assert.assertEquals("Publisher did not publish correct number of messages " + pub1.getMessageHandled(), ic,
pub1.getMessageHandled());
pub1.close();
}
catch (Throwable t)
{
log.error("Error in test: " + t, t);
throw new Exception(t.getMessage());
}
}
public void runQueueSubscriberPartTwo() throws Exception
{
try
{
int ic = getIterationCount();
IntRangeMessageFilter f1 = new IntRangeMessageFilter(javax.jms.Message.class,
"QUEUE_NR",
0,
ic / 2);
QueueWorker sub1 = new QueueWorker(SUBSCRIBER,
TRANS_NONE,
f1);
Thread t2 = new Thread(sub1);
t2.start();
log.debug("Sleeping for " + ((ic * 10) / 60000) + " minutes");
sleep(ic * 10);
Assert.assertEquals("Subscriber did not get correct number of messages " + sub1.getMessageHandled(), ic / 2,
sub1.getMessageHandled());
sub1.close();
t2.interrupt();
}
catch (Throwable t)
{
log.error("Error in test: " + t, t);
throw new Exception(t.getMessage());
}
}
public void testQueueSubscriber() throws Exception
{
runQueueSubscriberPartOne();
runQueueSubscriberPartTwo();
}
public static junit.framework.Test suite() throws Exception
{
TestSuite suite = new TestSuite();
suite.addTest(new QueueSubOne("testQueueSubscriber"));
return suite;
}
public static void main(String[] args)
{
}
}