This is an automated email from the ASF dual-hosted git repository.

lhotari pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new a2c15340d3a [improve][cli] Add proxyServiceUrl / proxyProtocol parsing 
from conf file to pulsar-client CLI (#17932)
a2c15340d3a is described below

commit a2c15340d3a73401b57574a4032ca375bde502bc
Author: Lari Hotari <[email protected]>
AuthorDate: Sat Nov 5 09:07:22 2022 +0200

    [improve][cli] Add proxyServiceUrl / proxyProtocol parsing from conf file 
to pulsar-client CLI (#17932)
---
 .../pulsar/client/cli/PulsarClientToolTest.java    | 30 +++++++++++++++++++---
 .../apache/pulsar/client/cli/PulsarClientTool.java | 12 +++++++++
 2 files changed, 39 insertions(+), 3 deletions(-)

diff --git 
a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java
 
b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java
index 83a3268593e..52edde856b7 100644
--- 
a/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java
+++ 
b/pulsar-client-tools-test/src/test/java/org/apache/pulsar/client/cli/PulsarClientToolTest.java
@@ -19,6 +19,7 @@
 package org.apache.pulsar.client.cli;
 
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNull;
 import java.time.Duration;
 import java.util.Properties;
 import java.util.UUID;
@@ -32,6 +33,7 @@ import org.apache.pulsar.broker.service.BrokerTestBase;
 import org.apache.pulsar.client.admin.PulsarAdminException;
 import org.apache.pulsar.client.api.Consumer;
 import org.apache.pulsar.client.api.Message;
+import org.apache.pulsar.client.api.ProxyProtocol;
 import org.apache.pulsar.client.impl.BatchMessageIdImpl;
 import org.apache.pulsar.common.policies.data.TenantInfoImpl;
 import org.awaitility.Awaitility;
@@ -281,8 +283,8 @@ public class PulsarClientToolTest extends BrokerTestBase {
         final String message = "test msg";
         final int numberOfMessages = 1;
         final String topicName = getTopicWithRandomSuffix("test-topic");
-        
-        String[] args = {"--url", url, 
+
+        String[] args = {"--url", url,
                 "--auth-plugin", authPlugin,
                 "--auth-params", authParams,
                 "--tlsTrustCertsFilePath", tlsTrustCertsFilePath,
@@ -293,8 +295,30 @@ public class PulsarClientToolTest extends BrokerTestBase {
         assertEquals(pulsarClientTool.rootParams.getAuthParams(), authParams);
         assertEquals(pulsarClientTool.rootParams.getAuthPluginClassName(), 
authPlugin);
         assertEquals(pulsarClientTool.rootParams.getServiceURL(), url);
+        assertNull(pulsarClientTool.rootParams.getProxyServiceURL());
+        assertNull(pulsarClientTool.rootParams.getProxyProtocol());
     }
 
+    @Test
+    public void testParsingProxyServiceUrlAndProxyProtocolFromProperties() 
throws Exception {
+        Properties properties = new Properties();
+        properties.setProperty("proxyServiceUrl", 
"pulsar+ssl://my-proxy-pulsar:4443");
+        properties.setProperty("proxyProtocol", "SNI");
+        PulsarClientTool pulsarClientTool = new PulsarClientTool(properties);
+        final String url = "pulsar+ssl://localhost:6651";
+        final String message = "test msg";
+        final int numberOfMessages = 1;
+        final String topicName = getTopicWithRandomSuffix("test-topic");
+
+        String[] args = {"--url", url,
+                "produce", "-m", message,
+                "-n", Integer.toString(numberOfMessages), topicName};
+        pulsarClientTool.jcommander.parse(args);
+        assertEquals(pulsarClientTool.rootParams.getServiceURL(), url);
+        assertEquals(pulsarClientTool.rootParams.getProxyServiceURL(), 
"pulsar+ssl://my-proxy-pulsar:4443");
+        assertEquals(pulsarClientTool.rootParams.getProxyProtocol(), 
ProxyProtocol.SNI);
+    }
+    
     @Test
     public void testSendMultipleMessage() throws Exception {
         Properties properties = new Properties();
@@ -316,7 +340,7 @@ public class PulsarClientToolTest extends BrokerTestBase {
             Assert.assertEquals(new String(msg.getData()), "msg" + i);
         }
     }
-    
+
     private static String getTopicWithRandomSuffix(String localNameBase) {
         return String.format("persistent://prop/ns-abc/test/%s-%s", 
localNameBase, UUID.randomUUID().toString());
     }
diff --git 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/client/cli/PulsarClientTool.java
 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/client/cli/PulsarClientTool.java
index 8bb672304b9..6083fbd7301 100644
--- 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/client/cli/PulsarClientTool.java
+++ 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/client/cli/PulsarClientTool.java
@@ -30,6 +30,7 @@ import java.io.FileInputStream;
 import java.util.Arrays;
 import java.util.Properties;
 import lombok.Getter;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.pulsar.PulsarVersion;
 import org.apache.pulsar.client.api.Authentication;
 import org.apache.pulsar.client.api.AuthenticationFactory;
@@ -146,6 +147,17 @@ public class PulsarClientTool {
         this.rootParams.authPluginClassName = 
properties.getProperty("authPlugin");
         this.rootParams.authParams = properties.getProperty("authParams");
         this.rootParams.tlsTrustCertsFilePath = 
properties.getProperty("tlsTrustCertsFilePath");
+        this.rootParams.proxyServiceURL = 
StringUtils.trimToNull(properties.getProperty("proxyServiceUrl"));
+        String proxyProtocolString = 
StringUtils.trimToNull(properties.getProperty("proxyProtocol"));
+        if (proxyProtocolString != null) {
+            try {
+                this.rootParams.proxyProtocol = 
ProxyProtocol.valueOf(proxyProtocolString.toUpperCase());
+            } catch (IllegalArgumentException e) {
+                System.out.println("Incorrect proxyProtocol name '" + 
proxyProtocolString + "'");
+                e.printStackTrace();
+                System.exit(-1);
+            }
+        }
     }
 
     private void updateConfig() throws UnsupportedAuthenticationException {

Reply via email to