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 2ac2b5c Add a integration test for create subscription CLI command (#1613) 2ac2b5c is described below commit 2ac2b5c751fb2e102fc1b9b9cdd9bf20f850a478 Author: Sijie Guo <guosi...@gmail.com> AuthorDate: Mon Apr 23 11:36:33 2018 -0700 Add a integration test for create subscription CLI command (#1613) * Add a integration test for create subscription CLI command * - Pulsar Admin exception casting issue - Handle redirects * - print more details about response * Dump location * return the original response --- .../apache/pulsar/broker/web/RestException.java | 3 +- .../pulsar/client/admin/internal/BaseResource.java | 42 +++++++++++----------- .../java/org/apache/pulsar/admin/cli/CmdBase.java | 15 ++++++-- .../apache/pulsar/tests/integration/TestCLI.java | 22 ++++++++++++ 4 files changed, 57 insertions(+), 25 deletions(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/RestException.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/RestException.java index 06b1e97..9305b53 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/RestException.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/web/RestException.java @@ -66,8 +66,7 @@ public class RestException extends WebApplicationException { if (t instanceof RestException || t instanceof WebApplicationException) { WebApplicationException e = (WebApplicationException) t; - return Response.status(e.getResponse().getStatus()).entity(e.getResponse().getEntity()) - .type(e.getResponse().getMediaType()).build(); + return e.getResponse(); } else { return Response .status(Status.INTERNAL_SERVER_ERROR) diff --git a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java index 3ad4059..a0f747c 100644 --- a/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java +++ b/pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/BaseResource.java @@ -160,26 +160,28 @@ public abstract class BaseResource { if (e instanceof ServerErrorException) { ServerErrorException see = (ServerErrorException) e; return new ServerSideErrorException(see); - } - - // Handle 4xx exceptions - ClientErrorException cee = (ClientErrorException) e; - int statusCode = cee.getResponse().getStatus(); - switch (statusCode) { - case 401: - case 403: - return new NotAuthorizedException(cee); - case 404: - return new NotFoundException(cee); - case 405: - return new NotAllowedException(cee); - case 409: - return new ConflictException(cee); - case 412: - return new PreconditionFailedException(cee); - - default: - return new PulsarAdminException(cee); + } else if (e instanceof ClientErrorException) { + // Handle 4xx exceptions + ClientErrorException cee = (ClientErrorException) e; + int statusCode = cee.getResponse().getStatus(); + switch (statusCode) { + case 401: + case 403: + return new NotAuthorizedException(cee); + case 404: + return new NotFoundException(cee); + case 405: + return new NotAllowedException(cee); + case 409: + return new ConflictException(cee); + case 412: + return new PreconditionFailedException(cee); + + default: + return new PulsarAdminException(cee); + } + } else { + return new PulsarAdminException(e); } } else { return new PulsarAdminException(e); diff --git a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBase.java b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBase.java index f20cb2e..4601c89 100644 --- a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBase.java +++ b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdBase.java @@ -18,6 +18,7 @@ */ package org.apache.pulsar.admin.cli; +import javax.ws.rs.WebApplicationException; import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdminException; import org.apache.pulsar.client.admin.PulsarAdminException.ConnectException; @@ -71,9 +72,17 @@ public abstract class CmdBase { System.err.println("Error connecting to: " + admin.getServiceUrl()); return false; } catch (PulsarAdminException e) { - System.err.println(e.getHttpError()); - System.err.println(); - System.err.println("Reason: " + e.getMessage()); + if (e.getCause() instanceof WebApplicationException) { + WebApplicationException wae = (WebApplicationException) e.getCause(); + System.err.println("Code: " + wae.getResponse().getStatus()); + System.err.println("Header: " + wae.getResponse().getHeaders()); + System.err.println("Location: " + wae.getResponse().getLocation()); + System.err.println("Reason: " + wae.getResponse().getEntity()); + } else { + System.err.println(e.getHttpError()); + System.err.println(); + System.err.println("Reason: " + e.getMessage()); + } return false; } catch (Exception e) { System.err.println("Got exception: " + e.getMessage()); diff --git a/tests/integration/cli/src/test/java/org/apache/pulsar/tests/integration/TestCLI.java b/tests/integration/cli/src/test/java/org/apache/pulsar/tests/integration/TestCLI.java index 30b05a1..35698e5 100644 --- a/tests/integration/cli/src/test/java/org/apache/pulsar/tests/integration/TestCLI.java +++ b/tests/integration/cli/src/test/java/org/apache/pulsar/tests/integration/TestCLI.java @@ -62,6 +62,28 @@ public class TestCLI extends Arquillian { } @Test + public void testCreateSubscriptionCommand() throws Exception { + String topic = "testCreateSubscriptionCommmand"; + + String subscriptionPrefix = "subscription-"; + + int i = 0; + for (String b : PulsarClusterUtils.brokerSet(docker, clusterName)) { + Assert.assertTrue( + DockerUtils.runCommand(docker, b, + "/pulsar/bin/pulsar-admin", + "persistent", + "create-subscription", + "persistent://public/default/" + topic, + "--subscription", + subscriptionPrefix + i + ).isEmpty() + ); + i++; + } + } + + @Test public void testTopicTerminationOnTopicsWithoutConnectedConsumers() throws Exception { String broker = PulsarClusterUtils.brokerSet(docker, clusterName).stream().findAny().get(); -- To stop receiving notification emails like this one, please contact mme...@apache.org.