package com.mcafee;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.junit.Assert.*;
import java.util.ArrayList;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Queue;
import javax.jms.Topic;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import org.apache.activemq.broker.BrokerService;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
*
* @author Gursev Singh Kalra @ McAfee, Inc.
*
*/
public class FuzzAMQOps {
private static Logger LOG = LoggerFactory.getLogger(FuzzAMQOps.class);
private AMQOps opsTest;
private static BrokerService broker;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
broker = new BrokerService();
broker.setPersistent(false);
broker.start();
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
broker.stop();
}
@Before
public void setUp() throws Exception {
//opsTest = new AMQOps(JmsHelper.getActiveMQInitialContextForUnitTest(), "ConnectionFactory");
opsTest = new AMQOps(JmsHelper.getActiveMQInitialContext(), "ConnectionFactory");
opsTest.init();
}
@After
public void tearDown() throws Exception {
}
// @Test
// public void brokerStatusAndSubscriptionStatusTest() throws JmsDiggerException {
// ArrayList<MapMessage> status = null;
// int expected = 1;
// status = opsTest.getBrokerStats();
// assertNotNull(status);
// assertEquals(expected, status.size());
//
// status = null;
// status = opsTest.getSubscriptionsStats();
// assertNotNull(status);
// assertEquals(expected, status.size());
//
// }
//
@Test
public void amqstatsAndamqstatstTest() throws JmsDiggerException {
JmsMessageContentGenerator gen = new JmsMessageContentGenerator();
gen.setMaxValue((int)256);
String dstName = null;
ArrayList<MapMessage>status;
Topic q;
char[] c;
for(int i = 1 ; i < 10; i+=1) {
try {
System.out.println(i);
dstName = gen.getString(100);
LOG.info("Destination Name => " + dstName);
LOG.info(JmsHelper.stringToCharArrayString(dstName));
status = opsTest.getQueueStats(dstName, false);
if(status != null && status.size() > 0)
for(MapMessage m: status)
System.out.println(JmsHelper.mapMessageToString(m));
else
System.out.println("Nothing returned for " + dstName);
} catch (JmsDiggerException ex) {
LOG.info("Error occured at i => " + i, ex);
} catch (Throwable ex) {
LOG.info("This caused error => " + dstName);
LOG.info("Error occured at i => " + i, ex);
}
}
// ArrayList<MapMessage >status = null;
// int expected = 1;
//
// dstName = "jms.amqQueueStats";
// status = opsTest.getQueueStats(dstName, true);
// assertNotNull(status);
// assertEquals(expected, status.size());
//
// status = null;
//
// dstName = "jms.amqTopicStats";
// status = opsTest.getTopicStats(dstName, true);
//
// assertNotNull(status);
// assertEquals(expected, status.size());
//
// status = null;
// expected = 0 ;
//
// dstName = "aa";
// status = opsTest.getTopicStats(dstName, true);
// assertNotNull(status);
// assertEquals(0, status.size());
}
//
// @Test
// public void amqWildCardStatsTest() throws JmsDiggerException {
// String dName = null;
// ArrayList<MapMessage> status = null;
// dName = "jms.*";
// status = opsTest.getQueueStats(dName, true);
//
// assertNotNull(status);
// assertTrue(status.size() > 1);
//
// dName = "jms.*";
// status = opsTest.getTopicStats(dName, true);
// assertNotNull(status);
// assertTrue(status.size() > 1);
// }
//@Test
public void createLongQueueNames() throws JmsDiggerException, Exception {
//tried all 65536 characters. None returned error
JmsMessageContentGenerator gen = new JmsMessageContentGenerator();
gen.setMaxValue((int)256);
String dstName = "";
Topic q;
char[] c;
for(int i = 1 ; i < 5000; i+=1) {
try {
System.out.println(i);
dstName = gen.getString(5);
dstName = "//*/" + dstName;
LOG.info("Destination Name => " + dstName);
LOG.info(JmsHelper.stringToCharArrayString(dstName));
q = opsTest.createTopic(dstName);
} catch (JmsDiggerException ex) {
LOG.info("Error occured at i => " + i, ex);
} catch (Throwable ex) {
LOG.info("This caused error => " + dstName);
LOG.info("Error occured at i => " + i, ex);
}
}
}
//@Test
public void testObjectName() throws MalformedObjectNameException, NullPointerException {
ObjectName onm = new ObjectName("aaaaaaaaaaaaa.ddddd");
System.out.println(onm.toString());
}
//@Test
public void createQueueAndDestinationTest() throws JmsDiggerException {
//tried all 65536 characters. None returned error
ArrayList<MapMessage> aList;
String dstName;
Queue q;
for(int i = 55000 ; i < 65536; i ++) {
try {
System.out.println(i);
dstName = "" + (char)i;
q = opsTest.createQueue(dstName);
} catch (JmsDiggerException ex) {
LOG.info("Error occured at i => " + i, ex);
}
}
//
// aList = opsTest.getQueueStats(dstName, true);
// assertNotNull(aList);
// assertEquals(expected, aList.size());
//
// Topic t = opsTest.createTopic(dstName);
// aList = opsTest.getTopicStats(dstName, true);
// assertNotNull(aList);
// assertEquals(expected, aList.size());
}
}