This is an automated email from the ASF dual-hosted git repository.

clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git


The following commit(s) were added to refs/heads/master by this push:
     new 34fcac0  NO-JIRA Adding Compatibility tests on Large Message for 
HornetQ
     new 1b0b80a  This closes #2608
34fcac0 is described below

commit 34fcac0b50aea178c1e36728b25803bab223ce53
Author: Clebert Suconic <clebertsuco...@apache.org>
AuthorDate: Wed Apr 3 17:01:27 2019 -0400

    NO-JIRA Adding Compatibility tests on Large Message for HornetQ
---
 .../resources/meshTest/sendLargeMessages.groovy    | 85 ++++++++++++++++++++
 .../tests/compatibility/HQLargeMeshTest.java       | 93 ++++++++++++++++++++++
 2 files changed, 178 insertions(+)

diff --git 
a/tests/compatibility-tests/src/main/resources/meshTest/sendLargeMessages.groovy
 
b/tests/compatibility-tests/src/main/resources/meshTest/sendLargeMessages.groovy
new file mode 100644
index 0000000..9d704e7
--- /dev/null
+++ 
b/tests/compatibility-tests/src/main/resources/meshTest/sendLargeMessages.groovy
@@ -0,0 +1,85 @@
+package meshTest
+
+/*
+ * 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.
+ */
+
+import org.hornetq.api.core.TransportConfiguration;
+import org.hornetq.api.core.client.ClientConsumer;
+import org.hornetq.api.core.client.ClientMessage;
+import org.hornetq.api.core.client.ClientProducer;
+import org.hornetq.api.core.client.ClientSession;
+import org.hornetq.api.core.client.ClientSessionFactory;
+import org.hornetq.api.core.client.HornetQClient;
+import org.hornetq.api.core.client.ServerLocator;
+import org.hornetq.core.remoting.impl.netty.NettyConnectorFactory;
+
+String operation = arg[2];
+
+queueName = "jms.queue.queue"
+
+Map<String, Object> connectionParams = new HashMap<String, Object>();
+connectionParams.put(org.hornetq.core.remoting.impl.netty.TransportConstants.HOST_PROP_NAME,
 "127.0.0.1");
+connectionParams.put(org.hornetq.core.remoting.impl.netty.TransportConstants.PORT_PROP_NAME,
 61616);
+
+
+ServerLocator serverLocator = HornetQClient.createServerLocatorWithoutHA(new 
TransportConfiguration(NettyConnectorFactory.class.getName(), 
connectionParams));
+ClientSessionFactory sf = serverLocator.createSessionFactory();
+
+ClientSession session = null;
+session = sf.createSession(true, true);
+session.start();
+
+if (operation.equals("sendMessages")) {
+    ClientProducer producer = session.createProducer(queueName);
+
+    ClientMessage bm = session.createMessage(false);
+    byte[] body = new byte[40000];
+    new Random().nextBytes(body);
+    bm.getBodyBuffer().writeBytes(body);
+
+    producer.send(bm);
+    ClientConsumer messageConsumer = session.createConsumer(queueName);
+
+    ClientMessage messageReceived = null;
+
+    messageReceived = messageConsumer.receive();
+    ByteArrayOutputStream bao = new ByteArrayOutputStream();
+    messageReceived.saveToOutputStream(bao);
+
+    messageReceived.acknowledge();
+    messageConsumer.close();
+
+    body = new byte[40000];
+    new Random().nextBytes(body);
+    bm.getBodyBuffer().writeBytes(body);
+    producer.send(bm);
+} else {
+
+    ClientConsumer messageConsumer = session.createConsumer(queueName);
+    ClientMessage messageReceived = messageConsumer.receive();
+    ByteArrayOutputStream bao = new ByteArrayOutputStream();
+    messageReceived.saveToOutputStream(bao);
+
+    messageReceived.acknowledge();
+
+}
+
+session.close();
+sf.close();
+serverLocator.close();
+
+
diff --git 
a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQLargeMeshTest.java
 
b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQLargeMeshTest.java
new file mode 100644
index 0000000..0b65c50
--- /dev/null
+++ 
b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQLargeMeshTest.java
@@ -0,0 +1,93 @@
+/*
+ * 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.compatibility;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.activemq.artemis.tests.compatibility.base.VersionedBase;
+import org.apache.activemq.artemis.utils.FileUtil;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import static 
org.apache.activemq.artemis.tests.compatibility.GroovyRun.HORNETQ_235;
+import static 
org.apache.activemq.artemis.tests.compatibility.GroovyRun.HORNETQ_247;
+import static 
org.apache.activemq.artemis.tests.compatibility.GroovyRun.SNAPSHOT;
+
+/**
+ * To run this test on the IDE and debug it, run the compatibility-tests 
through a command line once:
+ *
+ * cd /compatibility-tests
+ * mvn install -Ptests | tee output.log
+ *
+ * on the output.log you will see the output generated by {@link 
#getClasspath(String)}
+ *
+ * On your IDE, edit the Run Configuration to your test and add those -D as 
parameters to your test.
+ * On Idea you would do the following:
+ *
+ * Run->Edit Configuration->Add ArtemisMeshTest and add your properties.
+ */
+@RunWith(Parameterized.class)
+public class HQLargeMeshTest extends VersionedBase {
+
+   // this will ensure that all tests in this class are run twice,
+   // once with "true" passed to the class' constructor and once with "false"
+   @Parameterized.Parameters(name = "server={0}, producer={1}, consumer={2}")
+   public static Collection getParameters() {
+      // we don't need every single version ever released..
+      // if we keep testing current one against 2.4 and 1.4.. we are sure the 
wire and API won't change over time
+      List<Object[]> combinations = new ArrayList<>();
+
+      /*
+      // during development sometimes is useful to comment out the combinations
+      // and add the ones you are interested.. example:
+       */
+      //      combinations.add(new Object[]{SNAPSHOT, ONE_FIVE, ONE_FIVE});
+      //      combinations.add(new Object[]{ONE_FIVE, ONE_FIVE, ONE_FIVE});
+
+      combinations.add(new Object[]{SNAPSHOT, HORNETQ_247, HORNETQ_247});
+      combinations.add(new Object[]{SNAPSHOT, HORNETQ_235, HORNETQ_247});
+      combinations.add(new Object[]{SNAPSHOT, HORNETQ_247, HORNETQ_235});
+      combinations.add(new Object[]{SNAPSHOT, HORNETQ_235, HORNETQ_235});
+      return combinations;
+   }
+
+   public HQLargeMeshTest(String server, String sender, String receiver) 
throws Exception {
+      super(server, sender, receiver);
+   }
+
+   @Test
+   public void testSendReceive() throws Throwable {
+
+      FileUtil.deleteDirectory(serverFolder.getRoot());
+      setVariable(serverClassloader, "persistent", Boolean.TRUE);
+      startServer(serverFolder.getRoot(), serverClassloader, "live");
+
+      try {
+         boolean value = true;
+         evaluate(senderClassloader, "meshTest/sendLargeMessages.groovy", 
server, sender, "sendMessages");
+         evaluate(receiverClassloader, "meshTest/sendLargeMessages.groovy", 
server, receiver, "receiveMessages");
+      } finally {
+         stopServer(serverClassloader);
+      }
+   }
+
+}
+

Reply via email to