mirror of https://github.com/apache/activemq.git
Adds a start of message interoperability test for OpenWire <-> Qpid JMS
This commit is contained in:
parent
1faa4afa90
commit
a95d6fd4eb
|
@ -0,0 +1,179 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright ownership.
|
||||||
|
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||||
|
* (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.apache.activemq.transport.amqp;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.jms.Connection;
|
||||||
|
import javax.jms.Destination;
|
||||||
|
import javax.jms.Message;
|
||||||
|
import javax.jms.MessageConsumer;
|
||||||
|
import javax.jms.MessageProducer;
|
||||||
|
import javax.jms.ObjectMessage;
|
||||||
|
import javax.jms.Session;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.junit.runners.Parameterized;
|
||||||
|
import org.junit.runners.Parameterized.Parameters;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests interoperability between OpenWire and AMQP
|
||||||
|
*/
|
||||||
|
@RunWith(Parameterized.class)
|
||||||
|
public class JMSInteroperabilityTest extends JMSClientTestSupport {
|
||||||
|
|
||||||
|
protected static final Logger LOG = LoggerFactory.getLogger(JMSInteroperabilityTest.class);
|
||||||
|
|
||||||
|
private final String transformer;
|
||||||
|
|
||||||
|
@Parameters(name="Transformer->{0}")
|
||||||
|
public static Collection<Object[]> data() {
|
||||||
|
return Arrays.asList(new Object[][] {
|
||||||
|
{"jms"},
|
||||||
|
{"native"},
|
||||||
|
{"raw"},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public JMSInteroperabilityTest(String transformer) {
|
||||||
|
this.transformer = transformer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean isUseOpenWireConnector() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getAmqpTransformer() {
|
||||||
|
return transformer;
|
||||||
|
}
|
||||||
|
|
||||||
|
//----- Tests for OpenWire to Qpid JMS using MapMessage ------------------//
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
@Test
|
||||||
|
public void testMapMessageSendReceive() throws Exception {
|
||||||
|
Connection openwire = createJMSConnection();
|
||||||
|
Connection amqp = createConnection();
|
||||||
|
|
||||||
|
openwire.start();
|
||||||
|
amqp.start();
|
||||||
|
|
||||||
|
Session openwireSession = openwire.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
||||||
|
Session amqpSession = amqp.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
||||||
|
|
||||||
|
Destination queue = openwireSession.createQueue(getDestinationName());
|
||||||
|
|
||||||
|
MessageProducer openwireProducer = openwireSession.createProducer(queue);
|
||||||
|
MessageConsumer amqpConsumer = amqpSession.createConsumer(queue);
|
||||||
|
|
||||||
|
// Create the Message
|
||||||
|
ObjectMessage outgoing = openwireSession.createObjectMessage();
|
||||||
|
|
||||||
|
HashMap<String, Object> outgoingMap = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
outgoingMap.put("none", null);
|
||||||
|
outgoingMap.put("string", "test");
|
||||||
|
outgoingMap.put("long", 255L);
|
||||||
|
outgoingMap.put("empty-string", "");
|
||||||
|
outgoingMap.put("negative-int", -1);
|
||||||
|
outgoingMap.put("float", 0.12f);
|
||||||
|
|
||||||
|
outgoing.setObject(outgoingMap);
|
||||||
|
|
||||||
|
openwireProducer.send(outgoing);
|
||||||
|
|
||||||
|
// Now consumer the ObjectMessage
|
||||||
|
Message received = amqpConsumer.receive(2000);
|
||||||
|
assertNotNull(received);
|
||||||
|
assertTrue(received instanceof ObjectMessage);
|
||||||
|
ObjectMessage incoming = (ObjectMessage) received;
|
||||||
|
|
||||||
|
Object incomingObject = incoming.getObject();
|
||||||
|
assertNotNull(incomingObject);
|
||||||
|
assertTrue(incomingObject instanceof Map);
|
||||||
|
Map<String, Object> incomingMap = (Map<String, Object>) incomingObject;
|
||||||
|
assertEquals(outgoingMap.size(), incomingMap.size());
|
||||||
|
|
||||||
|
amqp.close();
|
||||||
|
openwire.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
//----- Tests for OpenWire to Qpid JMS using ObjectMessage ---------------//
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
@Test
|
||||||
|
public void testObjectMessageContainingList() throws Exception {
|
||||||
|
Connection openwire = createJMSConnection();
|
||||||
|
Connection amqp = createConnection();
|
||||||
|
|
||||||
|
openwire.start();
|
||||||
|
amqp.start();
|
||||||
|
|
||||||
|
Session openwireSession = openwire.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
||||||
|
Session amqpSession = amqp.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
||||||
|
|
||||||
|
Destination queue = openwireSession.createQueue(getDestinationName());
|
||||||
|
|
||||||
|
MessageProducer openwireProducer = openwireSession.createProducer(queue);
|
||||||
|
MessageConsumer amqpConsumer = amqpSession.createConsumer(queue);
|
||||||
|
|
||||||
|
// Create the Message
|
||||||
|
ObjectMessage outgoing = openwireSession.createObjectMessage();
|
||||||
|
|
||||||
|
ArrayList<Object> outgoingList = new ArrayList<Object>();
|
||||||
|
|
||||||
|
outgoingList.add(null);
|
||||||
|
outgoingList.add("test");
|
||||||
|
outgoingList.add(255L);
|
||||||
|
outgoingList.add("");
|
||||||
|
outgoingList.add(-1);
|
||||||
|
outgoingList.add(0.12f);
|
||||||
|
|
||||||
|
outgoing.setObject(outgoingList);
|
||||||
|
|
||||||
|
openwireProducer.send(outgoing);
|
||||||
|
|
||||||
|
// Now consumer the ObjectMessage
|
||||||
|
Message received = amqpConsumer.receive(2000);
|
||||||
|
assertNotNull(received);
|
||||||
|
assertTrue(received instanceof ObjectMessage);
|
||||||
|
ObjectMessage incoming = (ObjectMessage) received;
|
||||||
|
|
||||||
|
Object incomingObject = incoming.getObject();
|
||||||
|
assertNotNull(incomingObject);
|
||||||
|
assertTrue(incomingObject instanceof List);
|
||||||
|
List<Object> incomingList = (List<Object>) incomingObject;
|
||||||
|
assertEquals(outgoingList.size(), incomingList.size());
|
||||||
|
|
||||||
|
amqp.close();
|
||||||
|
openwire.close();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue