You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2018/04/06 14:21:07 UTC
[incubator-pulsar] branch master updated: Integration smoke test
for pulsar (#1399)
This is an automated email from the ASF dual-hosted git repository.
mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 013ea05 Integration smoke test for pulsar (#1399)
013ea05 is described below
commit 013ea058a74675764d477d4918bce5bd0a433fb9
Author: Ivan Kelly <iv...@apache.org>
AuthorDate: Fri Apr 6 16:21:02 2018 +0200
Integration smoke test for pulsar (#1399)
* Integration smoke test for pulsar
Boots a cluster, sends and receives some messages, shuts down the
cluster.
If anything fails, then something is very broken.
* license fix
* Disable AnnotationListener for integration tests
The annotation listener adds timeouts to all tests, which changes the
threading model, which breaks arquillian.
I've created an issue[1] on arquillian for this, but until that is fixed,
timeouts cannot be used with arquillian.
[1] https://github.com/arquillian/arquillian-core/issues/168
---
tests/{ => integration}/pom.xml | 25 ++----
tests/{ => integration/smoke}/pom.xml | 46 +++++-----
.../apache/pulsar/tests/integration/TestSmoke.java | 98 ++++++++++++++++++++++
.../smoke/src/test/resources/arquillian.xml | 32 +++++++
tests/pom.xml | 1 +
5 files changed, 158 insertions(+), 44 deletions(-)
diff --git a/tests/pom.xml b/tests/integration/pom.xml
similarity index 68%
copy from tests/pom.xml
copy to tests/integration/pom.xml
index d4d3137..a2e36d4 100644
--- a/tests/pom.xml
+++ b/tests/integration/pom.xml
@@ -24,28 +24,15 @@
<packaging>pom</packaging>
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>org.apache.pulsar</groupId>
- <artifactId>pulsar</artifactId>
+ <groupId>org.apache.pulsar.tests</groupId>
+ <artifactId>tests-parent</artifactId>
<version>2.0.0-incubating-SNAPSHOT</version>
</parent>
+
<groupId>org.apache.pulsar.tests</groupId>
- <artifactId>tests-parent</artifactId>
- <name>Apache Pulsar :: Tests</name>
+ <artifactId>integration</artifactId>
+ <name>Apache Pulsar :: Tests :: Integration</name>
<modules>
- <module>docker-images</module>
- <module>integration-tests-utils</module>
- <module>integration-tests-topologies</module>
- <module>integration-tests-base</module>
+ <module>smoke</module>
</modules>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-deploy-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- </plugins>
- </build>
</project>
diff --git a/tests/pom.xml b/tests/integration/smoke/pom.xml
similarity index 52%
copy from tests/pom.xml
copy to tests/integration/smoke/pom.xml
index d4d3137..eb3d499 100644
--- a/tests/pom.xml
+++ b/tests/integration/smoke/pom.xml
@@ -19,33 +19,29 @@
under the License.
-->
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <packaging>pom</packaging>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>org.apache.pulsar</groupId>
- <artifactId>pulsar</artifactId>
+ <groupId>org.apache.pulsar.tests</groupId>
+ <artifactId>integration-tests-base</artifactId>
<version>2.0.0-incubating-SNAPSHOT</version>
+ <relativePath>../../integration-tests-base</relativePath>
</parent>
- <groupId>org.apache.pulsar.tests</groupId>
- <artifactId>tests-parent</artifactId>
- <name>Apache Pulsar :: Tests</name>
- <modules>
- <module>docker-images</module>
- <module>integration-tests-utils</module>
- <module>integration-tests-topologies</module>
- <module>integration-tests-base</module>
- </modules>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-deploy-plugin</artifactId>
- <configuration>
- <skip>true</skip>
- </configuration>
- </plugin>
- </plugins>
- </build>
+
+ <groupId>org.apache.pulsar.tests.integration</groupId>
+ <artifactId>smoke</artifactId>
+ <packaging>jar</packaging>
+ <name>Apache Pulsar :: Tests :: Integration Tests :: Smoke test</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.pulsar</groupId>
+ <artifactId>pulsar-client</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
</project>
diff --git a/tests/integration/smoke/src/test/java/org/apache/pulsar/tests/integration/TestSmoke.java b/tests/integration/smoke/src/test/java/org/apache/pulsar/tests/integration/TestSmoke.java
new file mode 100644
index 0000000..6ecd053
--- /dev/null
+++ b/tests/integration/smoke/src/test/java/org/apache/pulsar/tests/integration/TestSmoke.java
@@ -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.
+ */
+/*
+* 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.pulsar.tests.integration;
+
+import com.github.dockerjava.api.DockerClient;
+
+import org.apache.pulsar.client.api.Consumer;
+import org.apache.pulsar.client.api.Message;
+import org.apache.pulsar.client.api.Producer;
+import org.apache.pulsar.client.api.PulsarClient;
+import org.apache.pulsar.tests.DockerUtils;
+import org.apache.pulsar.tests.PulsarClusterUtils;
+
+import org.jboss.arquillian.testng.Arquillian;
+import org.jboss.arquillian.test.api.ArquillianResource;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TestSmoke extends Arquillian {
+ private static final Logger LOG = LoggerFactory.getLogger(TestSmoke.class);
+ private static byte[] PASSWD = "foobar".getBytes();
+ private static String clusterName = "test";
+
+ @ArquillianResource
+ DockerClient docker;
+
+ @Test
+ public void testPublishAndConsume() throws Exception {
+ Assert.assertTrue(PulsarClusterUtils.startAllBrokers(docker, clusterName));
+ Assert.assertTrue(PulsarClusterUtils.startAllProxies(docker, clusterName));
+
+ // create property and namespace
+ PulsarClusterUtils.runOnAnyBroker(docker, clusterName,
+ "/pulsar/bin/pulsar-admin", "properties",
+ "create", "smoke-test", "--allowed-clusters", clusterName,
+ "--admin-roles", "smoke-admin");
+ PulsarClusterUtils.runOnAnyBroker(docker, clusterName,
+ "/pulsar/bin/pulsar-admin", "namespaces",
+ "create", "smoke-test/test/ns1");
+
+ String brokerIp = DockerUtils.getContainerIP(
+ docker, PulsarClusterUtils.proxySet(docker, clusterName).stream().findAny().get());
+ String serviceUrl = "pulsar://" + brokerIp + ":6650";
+ String topic = "persistent://smoke-test/test/ns1/topic1";
+
+ try(PulsarClient client = PulsarClient.create(serviceUrl);
+ Consumer consumer = client.subscribe(topic, "my-sub");
+ Producer producer = client.createProducer(topic)) {
+ for (int i = 0; i < 10; i++) {
+ producer.send(("smoke-message"+i).getBytes());
+ }
+ for (int i = 0; i < 10; i++) {
+ Message m = consumer.receive();
+ Assert.assertEquals("smoke-message"+i, new String(m.getData()));
+ }
+ }
+
+ PulsarClusterUtils.stopAllProxies(docker, clusterName);
+ Assert.assertTrue(PulsarClusterUtils.stopAllBrokers(docker, clusterName));
+ }
+}
diff --git a/tests/integration/smoke/src/test/resources/arquillian.xml b/tests/integration/smoke/src/test/resources/arquillian.xml
new file mode 100644
index 0000000..ced9de1
--- /dev/null
+++ b/tests/integration/smoke/src/test/resources/arquillian.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+
+ 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.
+
+-->
+<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://jboss.org/schema/arquillian"
+ xsi:schemaLocation="http://jboss.org/schema/arquillian
+ http://jboss.org/schema/arquillian/arquillian_1_0.xsd">
+
+ <extension qualifier="docker">
+ <property name="definitionFormat">CUBE</property>
+ <property name="dockerContainersResource">cube-definitions/single-cluster-3-bookie-2-broker-unstarted.yaml</property>
+ </extension>
+
+</arquillian>
diff --git a/tests/pom.xml b/tests/pom.xml
index d4d3137..a35a0f0 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -36,6 +36,7 @@
<module>integration-tests-utils</module>
<module>integration-tests-topologies</module>
<module>integration-tests-base</module>
+ <module>integration</module>
</modules>
<build>
<plugins>
--
To stop receiving notification emails like this one, please contact
mmerli@apache.org.