use of org.apache.qpid.url.AMQBindingURL in project jmeter-plugins by undera.
the class JmsUtil method runTest.
@Override
public SampleResult runTest(JavaSamplerContext ctx) {
SampleResult result = new SampleResult();
result.setContentType("plain/text");
result.setDataType(SampleResult.TEXT);
result.setDataEncoding(SampleResult.DEFAULT_HTTP_ENCODING);
String connectionUrl = ctx.getParameter("connection.url");
String bindingUrl = ctx.getParameter("binding.url");
String message = ctx.getParameter("message");
if (connectionUrl == null || "".equals(connectionUrl)) {
result.setSuccessful(false);
result.setResponseMessage("Connection URL cannot be empty.");
result.setResponseCode("0xDEAD");
} else {
if (bindingUrl == null || "".equals(bindingUrl)) {
result.setSuccessful(false);
result.setResponseMessage("Binding URL cannot be empty.");
result.setResponseCode("0xDEAD");
} else {
try {
ConnectionFactory connectionFactory = new AMQConnectionFactory(connectionUrl);
AMQBindingURL burl = new AMQBindingURL(bindingUrl);
Destination destinationProducer = new AMQAnyDestination(burl);
JmsTemplate sender = new JmsTemplate();
sender.setConnectionFactory(connectionFactory);
sender.setDefaultDestination(destinationProducer);
BinaryMessageConverter bmc = new BinaryMessageConverter();
sender.setMessageConverter(bmc);
BinaryMessagepostProcessor postProcessor = new BinaryMessagepostProcessor();
sender.setDeliveryMode(2);
int rt = 30000;
try {
rt = Integer.valueOf(ctx.getParameter("receive.timeout"));
} catch (Exception e) {
}
sender.setReceiveTimeout(rt);
String direction = ctx.getParameter("direction");
if (direction == null || "".equals(direction)) {
direction = "send";
}
if (direction.toLowerCase().equals("send")) {
Map<String, String> mp = getMessageProperties(ctx.getParameter("header.properties"));
postProcessor.setMessageProperties(mp);
sender.convertAndSend((Object) message, postProcessor);
result.setSuccessful(true);
result.setResponseMessage("Message sent.");
} else {
if (direction.toLowerCase().equals("receive")) {
System.out.println("Receive");
String messageSelector = ctx.getParameter("message.selector");
System.out.println("Selector: " + messageSelector);
Object obj = null;
if (messageSelector != null && !"".equals(messageSelector)) {
obj = sender.receiveSelectedAndConvert(messageSelector);
} else {
obj = sender.receiveAndConvert();
}
if (obj != null) {
result.setSuccessful(true);
result.setResponseData(obj.toString().getBytes());
String paramName = ctx.getParameter("header.property.reference");
if (paramName != null && !"".equals(paramName))
JMeterUtils.setProperty(paramName, concatProperties(bmc.getMessageProperties()));
} else {
result.setSuccessful(false);
result.setResponseData("Conection timeout".getBytes());
}
} else {
result.setSuccessful(false);
result.setResponseMessage("Unknown direction.");
}
}
} catch (Exception e) {
e.printStackTrace();
result.setSuccessful(false);
result.setResponseMessage("Exception");
result.setResponseData(e.getMessage().getBytes());
}
}
}
return result;
}
Aggregations