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 mme...@apache.org.