You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2019/07/17 15:35:51 UTC
[activemq-artemis] 02/03: ARTEMIS-2409 Adding Compatibility test
for hornetQ selector client
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
commit 0585db74214ccbc4b838f8498ab55b2ba2a4f5b1
Author: Clebert Suconic <cl...@apache.org>
AuthorDate: Wed Jul 17 11:32:10 2019 -0400
ARTEMIS-2409 Adding Compatibility test for hornetQ selector client
---
.../main/resources/hqselector/sendMessages.groovy | 64 ++++++++++++++++
.../tests/compatibility/HQSelectorTest.java | 89 ++++++++++++++++++++++
2 files changed, 153 insertions(+)
diff --git a/tests/compatibility-tests/src/main/resources/hqselector/sendMessages.groovy b/tests/compatibility-tests/src/main/resources/hqselector/sendMessages.groovy
new file mode 100644
index 0000000..ba06f45
--- /dev/null
+++ b/tests/compatibility-tests/src/main/resources/hqselector/sendMessages.groovy
@@ -0,0 +1,64 @@
+package hqselector
+
+import org.apache.activemq.artemis.tests.compatibility.GroovyRun
+
+import javax.jms.*
+
+/*
+ * 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.
+ */
+
+try {
+ legacyOption = legacy;
+} catch (Throwable e) {
+ legacyOption = false;
+}
+
+
+if (legacyOption) {
+ queueName = "jms.queue.queue"
+ topicName = "jms.topic.topic"
+} else {
+ queueName = "queue";
+ topicName = "topic";
+}
+
+// Can't depend directly on hornetq, otherwise it wouldn't compile in artemis
+GroovyRun.evaluate("clients/hornetqClient.groovy", "serverArg");
+
+Connection connection = cf.createConnection();
+Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+Queue queue = session.createQueue(queueName)
+MessageProducer messageProducer = session.createProducer(queue);
+Message message = session.createMessage();
+messageProducer.setPriority(5);
+messageProducer.send(message);
+message = session.createMessage();
+messageProducer.setPriority(1)
+messageProducer.send(message);
+
+connection.start();
+
+MessageConsumer consumer = session.createConsumer(queue, "HQPriority>=5");
+
+message = consumer.receive(5000);
+GroovyRun.assertNotNull(message);
+GroovyRun.assertEquals(5, message.getJMSPriority());
+
+message = consumer.receiveNoWait();
+GroovyRun.assertNull(message);
+
+connection.close();
diff --git a/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQSelectorTest.java b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQSelectorTest.java
new file mode 100644
index 0000000..c12b04c
--- /dev/null
+++ b/tests/compatibility-tests/src/test/java/org/apache/activemq/artemis/tests/compatibility/HQSelectorTest.java
@@ -0,0 +1,89 @@
+/*
+ * 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 HQSelectorTest 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_235});
+ return combinations;
+ }
+
+ public HQSelectorTest(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 {
+ evaluate(senderClassloader, "hqselector/sendMessages.groovy");
+ } finally {
+ stopServer(serverClassloader);
+ }
+ }
+
+}
+