ARTEMIS-2983 Fixing PrintData with AMQP
This commit is contained in:
parent
62099e86d3
commit
ead05b7a89
|
@ -251,5 +251,13 @@ public class AMQPStandardMessage extends AMQPMessage {
|
|||
buffer.release();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
// toString will only call ensureScanning on regular messages
|
||||
// as large messages might need to do extra work to parse it
|
||||
ensureScanning();
|
||||
return super.toString();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
* 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.artemis.tests.integration.amqp;
|
||||
|
||||
import javax.jms.Connection;
|
||||
import javax.jms.ConnectionFactory;
|
||||
import javax.jms.MessageProducer;
|
||||
import javax.jms.Session;
|
||||
import javax.jms.TextMessage;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.PrintStream;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import org.apache.activemq.artemis.cli.commands.tools.PrintData;
|
||||
import org.apache.activemq.artemis.core.config.FileDeploymentManager;
|
||||
import org.apache.activemq.artemis.core.config.impl.FileConfiguration;
|
||||
import org.apache.activemq.artemis.core.config.impl.SecurityConfiguration;
|
||||
import org.apache.activemq.artemis.core.server.ActiveMQServer;
|
||||
import org.apache.activemq.artemis.core.server.impl.ActiveMQServerImpl;
|
||||
import org.apache.activemq.artemis.jms.server.config.impl.FileJMSConfiguration;
|
||||
import org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
|
||||
import org.apache.activemq.artemis.spi.core.security.jaas.InVMLoginModule;
|
||||
import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
|
||||
import org.apache.activemq.artemis.tests.util.CFUtil;
|
||||
import org.apache.activemq.artemis.tests.util.RandomUtil;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class AMQPPrintDataTest extends ActiveMQTestBase {
|
||||
|
||||
@Test
|
||||
public void testPrintDataWithAMQP() throws Exception {
|
||||
String random = RandomUtil.randomString();
|
||||
ActiveMQServer server = addServer(getActiveMQServer("dataprint/etc/broker.xml"));
|
||||
try {
|
||||
server.getConfiguration().setPersistenceEnabled(true);
|
||||
server.start();
|
||||
ConnectionFactory factory = CFUtil.createConnectionFactory("AMQP", "tcp://localhost:61616");
|
||||
Connection connection = factory.createConnection();
|
||||
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
||||
MessageProducer producer = session.createProducer(session.createQueue("q1"));
|
||||
TextMessage message = session.createTextMessage("hello");
|
||||
message.setStringProperty("hello", "world:" + random);
|
||||
producer.send(message);
|
||||
connection.close();
|
||||
server.stop();
|
||||
System.setProperty("artemis.instance",
|
||||
this.getClass().getClassLoader().getResource("dataprint").getFile());
|
||||
|
||||
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||||
PrintStream printStream = new PrintStream(byteArrayOutputStream, true, StandardCharsets.UTF_8.name());
|
||||
PrintData.printData(server.getConfiguration().getBindingsLocation().getAbsoluteFile(), server.getConfiguration().getJournalLocation().getAbsoluteFile(), server.getConfiguration().getPagingLocation().getAbsoluteFile(),
|
||||
printStream, false);
|
||||
|
||||
Assert.assertTrue(byteArrayOutputStream.toString().contains(random));
|
||||
|
||||
|
||||
} finally {
|
||||
try {
|
||||
server.stop();
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected ActiveMQServer getActiveMQServer(String brokerConfig) throws Exception {
|
||||
FileConfiguration fc = new FileConfiguration();
|
||||
FileJMSConfiguration fileConfiguration = new FileJMSConfiguration();
|
||||
FileDeploymentManager deploymentManager = new FileDeploymentManager(brokerConfig);
|
||||
deploymentManager.addDeployable(fc);
|
||||
deploymentManager.addDeployable(fileConfiguration);
|
||||
deploymentManager.readConfiguration();
|
||||
|
||||
ActiveMQJAASSecurityManager sm = new ActiveMQJAASSecurityManager(InVMLoginModule.class.getName(), new SecurityConfiguration());
|
||||
|
||||
recreateDirectory(fc.getBindingsDirectory());
|
||||
recreateDirectory(fc.getJournalDirectory());
|
||||
recreateDirectory(fc.getPagingDirectory());
|
||||
recreateDirectory(fc.getLargeMessagesDirectory());
|
||||
|
||||
return addServer(new ActiveMQServerImpl(fc, sm));
|
||||
}
|
||||
|
||||
}
|
|
@ -33,6 +33,13 @@ under the License.
|
|||
|
||||
<security-enabled>false</security-enabled>
|
||||
|
||||
<!-- Acceptors -->
|
||||
<acceptors>
|
||||
<!-- Acceptor for every supported protocol -->
|
||||
<acceptor name="artemis">tcp://localhost:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;amqpMinLargeMessageSize=102400;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300;amqpDuplicateDetection=true</acceptor>
|
||||
</acceptors>
|
||||
|
||||
|
||||
<!-- this could be ASYNCIO or NIO
|
||||
-->
|
||||
<journal-type>NIO</journal-type>
|
||||
|
@ -66,6 +73,11 @@ under the License.
|
|||
<queue name="queue.C" />
|
||||
</multicast>
|
||||
</address>
|
||||
<address name="q1">
|
||||
<anycast>
|
||||
<queue name="q1"/>
|
||||
</anycast>
|
||||
</address>
|
||||
</addresses>
|
||||
|
||||
<address-settings>
|
||||
|
|
Loading…
Reference in New Issue