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

xiangying pushed a commit to branch branch-2.10
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit 1d89e0cc5489cc73c0b451f4d6ed03f023a1d2fc
Author: fengyubiao <[email protected]>
AuthorDate: Fri Sep 16 09:32:24 2022 +0800

    [fix][broker]add test case for deleting namespace fail when has partitioned 
system topic (#17338)
    
    (cherry picked from commit bfbe3811ab1120dd602d2548422f934c7358b5b5)
---
 .../apache/pulsar/broker/admin/AdminApi2Test.java  | 47 ++++++++++++++++++++--
 1 file changed, 44 insertions(+), 3 deletions(-)

diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java
index 3cb67eada5e..e935de6b2eb 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApi2Test.java
@@ -50,7 +50,9 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 import javax.ws.rs.NotAcceptableException;
 import javax.ws.rs.core.Response.Status;
+import lombok.AllArgsConstructor;
 import lombok.Cleanup;
+import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.bookkeeper.mledger.ManagedLedger;
 import org.apache.bookkeeper.mledger.impl.ManagedCursorImpl;
@@ -1386,9 +1388,43 @@ public class AdminApi2Test extends 
MockedPulsarServiceBaseTest {
         
assertFalse(pulsar.getLocalMetadataStore().exists(bundleDataPath).join());
     }
 
-    @Test
-    public void testDeleteNamespace() throws Exception {
-        pulsar.getConfiguration().setForceDeleteNamespaceAllowed(false);
+    @Data
+    @AllArgsConstructor
+    private static class NamespaceAttr {
+        private boolean systemTopicEnabled;
+        private String autoTopicCreationType;
+        private int defaultNumPartitions;
+        private boolean forceDeleteNamespaceAllowed;
+    }
+
+    @DataProvider(name = "namespaceAttrs")
+    public Object[][] namespaceAttributes(){
+        return new Object[][]{
+                {new NamespaceAttr(false, "non-partitioned", 0, false)},
+                {new NamespaceAttr(true, "non-partitioned", 0, false)},
+                {new NamespaceAttr(true, "partitioned", 3, false)}
+        };
+    }
+
+    private NamespaceAttr markOriginalNamespaceAttr(){
+        return new NamespaceAttr(conf.isSystemTopicEnabled(), 
conf.getAllowAutoTopicCreationType(),
+                conf.getDefaultNumPartitions(), 
conf.isForceDeleteNamespaceAllowed());
+    }
+
+    private void setNamespaceAttr(NamespaceAttr namespaceAttr){
+        conf.setSystemTopicEnabled(namespaceAttr.systemTopicEnabled);
+        
conf.setAllowAutoTopicCreationType(namespaceAttr.autoTopicCreationType);
+        conf.setDefaultNumPartitions(namespaceAttr.defaultNumPartitions);
+        
conf.setForceDeleteNamespaceAllowed(namespaceAttr.forceDeleteNamespaceAllowed);
+    }
+
+    @Test(dataProvider = "namespaceAttrs")
+    public void testDeleteNamespace(NamespaceAttr namespaceAttr) throws 
Exception {
+        // Set conf.
+        internalCleanup();
+        NamespaceAttr originalNamespaceAttr = markOriginalNamespaceAttr();
+        setNamespaceAttr(namespaceAttr);
+        setup();
 
         String tenant = "test-tenant";
         assertFalse(admin.tenants().getTenants().contains(tenant));
@@ -1434,6 +1470,11 @@ public class AdminApi2Test extends 
MockedPulsarServiceBaseTest {
 
         final String bundleDataPath = "/loadbalance/bundle-data/" + namespace;
         
assertFalse(pulsar.getLocalMetadataStore().exists(bundleDataPath).join());
+
+        // Reset config
+        internalCleanup();
+        setNamespaceAttr(originalNamespaceAttr);
+        setup();
     }
 
     private void awaitChangeEventTopicAndCompactionCreateFinish(String ns, 
String topic) throws Exception {

Reply via email to