From a7f5f308ccc3e4f8cf736aa3eac4e405d82d460f Mon Sep 17 00:00:00 2001 From: Zixuan Liu Date: Fri, 29 Jul 2022 15:09:26 +0800 Subject: [PATCH 1/2] [fix][proxy] Fix client service url (#16834) (cherry picked from commit eedee403da4ee531546b6440d82ed4bf14fa333a) --- .../pulsar/proxy/server/ProxyConnection.java | 4 +++- .../proxy/server/ProxyConnectionTest.java | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConnection.java b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConnection.java index 3c73284e7ed4a..6ae0e52f961d9 100644 --- a/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConnection.java +++ b/pulsar-proxy/src/main/java/org/apache/pulsar/proxy/server/ProxyConnection.java @@ -529,8 +529,10 @@ protected void handleLookup(CommandLookupTopic lookup) { ClientConfigurationData createClientConfiguration() throws PulsarClientException.UnsupportedAuthenticationException { ClientConfigurationData initialConf = new ClientConfigurationData(); - initialConf.setServiceUrl(service.getServiceUrl()); ProxyConfiguration proxyConfig = service.getConfiguration(); + initialConf.setServiceUrl( + proxyConfig.isTlsEnabledWithBroker() ? service.getServiceUrlTls() : service.getServiceUrl()); + // Apply all arbitrary configuration. This must be called before setting any fields annotated as // @Secret on the ClientConfigurationData object because of the way they are serialized. // See https://github.com/apache/pulsar/issues/8509 for more information. diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyConnectionTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyConnectionTest.java index 5f533e37d3594..8c07e4b42d797 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyConnectionTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyConnectionTest.java @@ -18,8 +18,12 @@ */ package org.apache.pulsar.proxy.server; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; +import org.apache.pulsar.client.impl.conf.ClientConfigurationData; import org.testng.annotations.Test; public class ProxyConnectionTest { @@ -35,4 +39,24 @@ public void testMatchesHostAndPort() { assertFalse(ProxyConnection .matchesHostAndPort("pulsar://", "pulsar://1.2.3.4:12345", "1.2.3.4:1234")); } + @Test + public void testCreateClientConfiguration() { + ProxyConfiguration proxyConfiguration = new ProxyConfiguration(); + proxyConfiguration.setTlsEnabledWithBroker(true); + String proxyUrlTls = "pulsar+ssl://proxy:6651"; + String proxyUrl = "pulsar://proxy:6650"; + + ProxyService proxyService = mock(ProxyService.class); + doReturn(proxyConfiguration).when(proxyService).getConfiguration(); + doReturn(proxyUrlTls).when(proxyService).getServiceUrlTls(); + doReturn(proxyUrl).when(proxyService).getServiceUrl(); + + ProxyConnection proxyConnection = new ProxyConnection(proxyService, null); + ClientConfigurationData clientConfiguration = proxyConnection.createClientConfiguration(); + assertEquals(clientConfiguration.getServiceUrl(), proxyUrlTls); + + proxyConfiguration.setTlsEnabledWithBroker(false); + clientConfiguration = proxyConnection.createClientConfiguration(); + assertEquals(clientConfiguration.getServiceUrl(), proxyUrl); + } } From ec2097bc004ff62bd977641507ddb891c1c8a8cd Mon Sep 17 00:00:00 2001 From: JiangHaiting Date: Mon, 1 Aug 2022 11:36:39 +0800 Subject: [PATCH 2/2] fix compile error --- .../org/apache/pulsar/proxy/server/ProxyConnectionTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyConnectionTest.java b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyConnectionTest.java index 8c07e4b42d797..0dccb4942d2e7 100644 --- a/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyConnectionTest.java +++ b/pulsar-proxy/src/test/java/org/apache/pulsar/proxy/server/ProxyConnectionTest.java @@ -23,6 +23,7 @@ import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; +import org.apache.pulsar.client.api.PulsarClientException; import org.apache.pulsar.client.impl.conf.ClientConfigurationData; import org.testng.annotations.Test; @@ -40,7 +41,7 @@ public void testMatchesHostAndPort() { .matchesHostAndPort("pulsar://", "pulsar://1.2.3.4:12345", "1.2.3.4:1234")); } @Test - public void testCreateClientConfiguration() { + public void testCreateClientConfiguration() throws PulsarClientException.UnsupportedAuthenticationException { ProxyConfiguration proxyConfiguration = new ProxyConfiguration(); proxyConfiguration.setTlsEnabledWithBroker(true); String proxyUrlTls = "pulsar+ssl://proxy:6651";