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.

Reply via email to