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 7305083aaea5b..b406c1e1f5eaa 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 @@ -52,7 +52,9 @@ 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; @@ -1402,9 +1404,43 @@ public void testDeleteTenant() throws Exception { } } - @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)); @@ -1450,6 +1486,11 @@ public void testDeleteNamespace() throws Exception { 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 {