From 3ec995c66e53fedfd3b7e2664a123902b5745b7a Mon Sep 17 00:00:00 2001 From: Zixuan Liu Date: Thu, 9 Mar 2023 16:54:30 +0800 Subject: [PATCH] [fix][broker] Fix create cluster with empty url Signed-off-by: Zixuan Liu --- .../broker/admin/AdminApiClusterTest.java | 34 +++++++++++++++++++ .../pulsar/common/util/URIPreconditions.java | 2 +- .../common/util/URIPreconditionsTest.java | 2 ++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiClusterTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiClusterTest.java index c37cc234b1213..28ebe39e0aa39 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiClusterTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiClusterTest.java @@ -22,6 +22,8 @@ import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertThrows; import static org.testng.Assert.fail; +import java.util.ArrayList; +import java.util.List; import java.util.Set; import java.util.UUID; import lombok.extern.slf4j.Slf4j; @@ -107,4 +109,36 @@ public void testDeleteExistFailureDomain() throws PulsarAdminException { admin.clusters().deleteFailureDomain(CLUSTER, domainName); } + + @Test + public void testCreateCluster() throws PulsarAdminException { + List clusterDataList = new ArrayList<>(); + clusterDataList.add(ClusterData.builder() + .serviceUrl("http://pulsar.app:8080") + .serviceUrlTls("") + .brokerServiceUrl("pulsar://pulsar.app:6650") + .brokerServiceUrlTls("") + .build()); + clusterDataList.add(ClusterData.builder() + .serviceUrl("") + .serviceUrlTls("https://pulsar.app:8443") + .brokerServiceUrl("") + .brokerServiceUrlTls("pulsar+ssl://pulsar.app:6651") + .build()); + clusterDataList.add(ClusterData.builder() + .serviceUrl("") + .serviceUrlTls("") + .brokerServiceUrl("") + .brokerServiceUrlTls("") + .build()); + clusterDataList.add(ClusterData.builder() + .serviceUrl(null) + .serviceUrlTls(null) + .brokerServiceUrl(null) + .brokerServiceUrlTls(null) + .build()); + for (int i = 0; i < clusterDataList.size(); i++) { + admin.clusters().createCluster("cluster-test-" + i, clusterDataList.get(i)); + } + } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/URIPreconditions.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/URIPreconditions.java index f68ed5e41a430..ea7fae2fdf0e9 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/util/URIPreconditions.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/URIPreconditions.java @@ -67,7 +67,7 @@ public static void checkURIIfPresent(@Nullable String uri, public static void checkURIIfPresent(@Nullable String uri, @Nonnull Predicate predicate, @Nullable String errorMessage) throws IllegalArgumentException { - if (uri == null) { + if (uri == null || uri.length() == 0) { return; } checkURI(uri, predicate, errorMessage); diff --git a/pulsar-common/src/test/java/org/apache/pulsar/common/util/URIPreconditionsTest.java b/pulsar-common/src/test/java/org/apache/pulsar/common/util/URIPreconditionsTest.java index d5809e8fdd0d3..f5b9e454e081d 100644 --- a/pulsar-common/src/test/java/org/apache/pulsar/common/util/URIPreconditionsTest.java +++ b/pulsar-common/src/test/java/org/apache/pulsar/common/util/URIPreconditionsTest.java @@ -30,6 +30,7 @@ public void testCheckURI() { // normal checkURI("http://pulsar.apache.org", uri -> true); checkURI("http://pulsar.apache.org", uri -> Objects.equals(uri.getScheme(), "http")); + checkURI("", uri -> true); // illegal try { checkURI("pulsar.apache.org", uri -> Objects.equals(uri.getScheme(), "http")); @@ -48,6 +49,7 @@ public void testCheckURI() { @Test public void testCheckURIIfPresent() { checkURIIfPresent(null, uri -> false); + checkURIIfPresent("", uri -> false); checkURIIfPresent("http://pulsar.apache.org", uri -> true); try { checkURIIfPresent("http/pulsar.apache.org", uri -> uri.getScheme() != null, "Error");