//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.resources;
import static org.junit.Assert.assertEquals;
import java.util.Map;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import org.apache.uima.resource.Parameter;
import org.apache.uima.resource.impl.CustomResourceSpecifier_impl;
import org.apache.uima.resource.impl.Parameter_impl;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.Maps;
public class SharedActiveMQResourceTest {
SharedActiveMQResource samr;
private static String HOST_VALUE = "localhost";
private static String PROTOCOL_VALUE = "vm";
private static String BROKERARGS_VALUE = "broker.persistent=false";
@Before
public void beforeTest() throws Exception {
samr = new SharedActiveMQResource();
final CustomResourceSpecifier_impl samrSpecifier = new CustomResourceSpecifier_impl();
final Parameter[] configParams = new Parameter[] {
new Parameter_impl(SharedActiveMQResource.PARAM_PROTOCOL, PROTOCOL_VALUE),
new Parameter_impl(SharedActiveMQResource.PARAM_HOST, HOST_VALUE),
new Parameter_impl(SharedActiveMQResource.PARAM_BROKERARGS, BROKERARGS_VALUE) };
samrSpecifier.setParameters(configParams);
final Map<String, Object> config = Maps.newHashMap();
samr.initialize(samrSpecifier, config);
}
@Test
public void cleanInitialise() {
// as long as there are no exceptions then pass
}
@Test
public void providesValidConsumer() throws JMSException {
final String queueName = "test";
final String messageSelector = "";
final MessageConsumer consumer = samr.createConsumer(queueName, messageSelector);
// use producer to test consumer receiving messages
// get same dest as consumer
final Destination destination = samr.getSession().createQueue(queueName);
final Message msg = samr.getSession().createTextMessage("hello, world");
samr.getProducer().send(destination, msg);
final Message received = consumer.receive();
// should get back the same message that was sent
assertEquals(msg, received);
}
@After
public void afterTest() throws Exception {
if (samr != null) {
samr.destroy();
samr = null;
}
}
}