Search in sources :

Example 36 with TenantInfoImpl

use of org.apache.pulsar.common.policies.data.TenantInfoImpl in project pulsar by apache.

the class PatternTopicsConsumerImplAuthTest method testBinaryProtoToGetTopicsOfNamespace.

// verify binary proto with correct auth check
// if with invalid role, consumer for pattern topic subscription will fail
@Test(timeOut = testTimeout)
public void testBinaryProtoToGetTopicsOfNamespace() throws Exception {
    String key = "BinaryProtoToGetTopics";
    String subscriptionName = "my-ex-subscription-" + key;
    String topicName1 = "persistent://my-property/my-ns/pattern-topic-1-" + key;
    String topicName2 = "persistent://my-property/my-ns/pattern-topic-2-" + key;
    String topicName3 = "persistent://my-property/my-ns/pattern-topic-3-" + key;
    String topicName4 = "non-persistent://my-property/my-ns/pattern-topic-4-" + key;
    Pattern pattern = Pattern.compile("my-property/my-ns/pattern-topic.*");
    @Cleanup PulsarAdmin admin = buildAdminClient();
    String lookupUrl = pulsar.getBrokerServiceUrl();
    Authentication authentication = new ClientAuthentication(clientRole);
    Authentication authenticationInvalidRole = new ClientAuthentication("test-role");
    @Cleanup PulsarClient pulsarClient = PulsarClient.builder().serviceUrl(lookupUrl).authentication(authentication).operationTimeout(1000, TimeUnit.MILLISECONDS).build();
    @Cleanup PulsarClient pulsarClientInvalidRole = PulsarClient.builder().serviceUrl(lookupUrl).operationTimeout(1000, TimeUnit.MILLISECONDS).authentication(authenticationInvalidRole).build();
    // 1. create partition and grant permissions
    admin.clusters().createCluster("test", ClusterData.builder().serviceUrl(brokerUrl.toString()).build());
    admin.tenants().createTenant("my-property", new TenantInfoImpl(Sets.newHashSet("appid1", "appid2"), Sets.newHashSet("test")));
    admin.namespaces().createNamespace("my-property/my-ns", Sets.newHashSet("test"));
    admin.namespaces().grantPermissionOnNamespace("my-property/my-ns", clientRole, EnumSet.allOf(AuthAction.class));
    admin.topics().createPartitionedTopic(topicName2, 2);
    admin.topics().createPartitionedTopic(topicName3, 3);
    // 2. create producers and consumer
    String messagePredicate = "my-message-" + key + "-";
    int totalMessages = 30;
    Producer<byte[]> producer1 = pulsarClient.newProducer().topic(topicName1).enableBatching(false).messageRoutingMode(MessageRoutingMode.SinglePartition).create();
    Producer<byte[]> producer2 = pulsarClient.newProducer().topic(topicName2).enableBatching(false).messageRoutingMode(org.apache.pulsar.client.api.MessageRoutingMode.RoundRobinPartition).create();
    Producer<byte[]> producer3 = pulsarClient.newProducer().topic(topicName3).enableBatching(false).messageRoutingMode(org.apache.pulsar.client.api.MessageRoutingMode.RoundRobinPartition).create();
    Producer<byte[]> producer4 = pulsarClient.newProducer().topic(topicName4).enableBatching(false).create();
    Consumer<byte[]> consumer;
    // Invalid user auth-role will be rejected by authorization service
    try {
        consumer = pulsarClientInvalidRole.newConsumer().topicsPattern(pattern).patternAutoDiscoveryPeriod(2).subscriptionName(subscriptionName).subscriptionType(SubscriptionType.Shared).receiverQueueSize(4).subscribe();
        Assert.fail("should have failed with authorization error");
    } catch (PulsarClientException.AuthorizationException pa) {
    // Ok
    }
    // create pattern topics consumer with correct role client
    consumer = pulsarClient.newConsumer().topicsPattern(pattern).patternAutoDiscoveryPeriod(2).subscriptionName(subscriptionName).subscriptionType(SubscriptionType.Shared).receiverQueueSize(4).subscribe();
    assertTrue(consumer.getTopic().startsWith(PatternMultiTopicsConsumerImpl.DUMMY_TOPIC_NAME_PREFIX));
    // 4. verify consumer
    assertSame(pattern, ((PatternMultiTopicsConsumerImpl<?>) consumer).getPattern());
    List<String> topics = ((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitions();
    List<ConsumerImpl<byte[]>> consumers = ((PatternMultiTopicsConsumerImpl<byte[]>) consumer).getConsumers();
    assertEquals(topics.size(), 6);
    assertEquals(consumers.size(), 6);
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitionedTopics().size(), 2);
    topics.forEach(topic -> log.debug("topic: {}", topic));
    consumers.forEach(c -> log.debug("consumer: {}", c.getTopic()));
    IntStream.range(0, topics.size()).forEach(index -> assertEquals(consumers.get(index).getTopic(), topics.get(index)));
    ((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitionedTopics().forEach(topic -> log.debug("getTopics topic: {}", topic));
    // 5. produce data
    for (int i = 0; i < totalMessages / 3; i++) {
        producer1.send((messagePredicate + "producer1-" + i).getBytes());
        producer2.send((messagePredicate + "producer2-" + i).getBytes());
        producer3.send((messagePredicate + "producer3-" + i).getBytes());
        producer4.send((messagePredicate + "producer4-" + i).getBytes());
    }
    // 6. should receive all the message
    int messageSet = 0;
    Message<byte[]> message = consumer.receive();
    do {
        assertTrue(message instanceof TopicMessageImpl);
        messageSet++;
        consumer.acknowledge(message);
        log.debug("Consumer acknowledged : " + new String(message.getData()));
        message = consumer.receive(500, TimeUnit.MILLISECONDS);
    } while (message != null);
    assertEquals(messageSet, totalMessages);
    consumer.unsubscribe();
    consumer.close();
    producer1.close();
    producer2.close();
    producer3.close();
    producer4.close();
}
Also used : Pattern(java.util.regex.Pattern) PulsarAdmin(org.apache.pulsar.client.admin.PulsarAdmin) Cleanup(lombok.Cleanup) TenantInfoImpl(org.apache.pulsar.common.policies.data.TenantInfoImpl) AuthAction(org.apache.pulsar.common.policies.data.AuthAction) Authentication(org.apache.pulsar.client.api.Authentication) PulsarClientException(org.apache.pulsar.client.api.PulsarClientException) PulsarClient(org.apache.pulsar.client.api.PulsarClient) Test(org.testng.annotations.Test)

Example 37 with TenantInfoImpl

use of org.apache.pulsar.common.policies.data.TenantInfoImpl in project pulsar by apache.

the class PatternTopicsConsumerImplTest method testAutoSubscribePatternConsumer.

// simulate subscribe a pattern which has 3 topics, but then matched topic added in.
@Test(timeOut = testTimeout)
public void testAutoSubscribePatternConsumer() throws Exception {
    String key = "AutoSubscribePatternConsumer";
    String subscriptionName = "my-ex-subscription-" + key;
    String topicName1 = "persistent://my-property/my-ns/pattern-topic-1-" + key;
    String topicName2 = "persistent://my-property/my-ns/pattern-topic-2-" + key;
    String topicName3 = "persistent://my-property/my-ns/pattern-topic-3-" + key;
    Pattern pattern = Pattern.compile("persistent://my-property/my-ns/pattern-topic.*");
    // 1. create partition
    TenantInfoImpl tenantInfo = createDefaultTenantInfo();
    admin.tenants().createTenant("prop", tenantInfo);
    admin.topics().createPartitionedTopic(topicName2, 2);
    admin.topics().createPartitionedTopic(topicName3, 3);
    // 2. create producer
    String messagePredicate = "my-message-" + key + "-";
    int totalMessages = 30;
    Producer<byte[]> producer1 = pulsarClient.newProducer().topic(topicName1).enableBatching(false).messageRoutingMode(MessageRoutingMode.SinglePartition).create();
    Producer<byte[]> producer2 = pulsarClient.newProducer().topic(topicName2).enableBatching(false).messageRoutingMode(org.apache.pulsar.client.api.MessageRoutingMode.RoundRobinPartition).create();
    Producer<byte[]> producer3 = pulsarClient.newProducer().topic(topicName3).enableBatching(false).messageRoutingMode(org.apache.pulsar.client.api.MessageRoutingMode.RoundRobinPartition).create();
    Consumer<byte[]> consumer = pulsarClient.newConsumer().topicsPattern(pattern).patternAutoDiscoveryPeriod(2).subscriptionName(subscriptionName).subscriptionType(SubscriptionType.Shared).ackTimeout(ackTimeOutMillis, TimeUnit.MILLISECONDS).receiverQueueSize(4).subscribe();
    assertTrue(consumer instanceof PatternMultiTopicsConsumerImpl);
    // 4. verify consumer get methods, to get 6 number of partitions and topics: 6=1+2+3
    assertSame(pattern, ((PatternMultiTopicsConsumerImpl<?>) consumer).getPattern());
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitions().size(), 6);
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getConsumers().size(), 6);
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitionedTopics().size(), 2);
    // 5. produce data to topic 1,2,3; verify should receive all the message
    for (int i = 0; i < totalMessages / 3; i++) {
        producer1.send((messagePredicate + "producer1-" + i).getBytes());
        producer2.send((messagePredicate + "producer2-" + i).getBytes());
        producer3.send((messagePredicate + "producer3-" + i).getBytes());
    }
    int messageSet = 0;
    Message<byte[]> message = consumer.receive();
    do {
        assertTrue(message instanceof TopicMessageImpl);
        messageSet++;
        consumer.acknowledge(message);
        log.debug("Consumer acknowledged : " + new String(message.getData()));
        message = consumer.receive(500, TimeUnit.MILLISECONDS);
    } while (message != null);
    assertEquals(messageSet, totalMessages);
    // 6. create another producer with 4 partitions
    String topicName4 = "persistent://my-property/my-ns/pattern-topic-4-" + key;
    admin.topics().createPartitionedTopic(topicName4, 4);
    Producer<byte[]> producer4 = pulsarClient.newProducer().topic(topicName4).enableBatching(false).messageRoutingMode(org.apache.pulsar.client.api.MessageRoutingMode.RoundRobinPartition).create();
    // 7. call recheckTopics to subscribe each added topics above, verify topics number: 10=1+2+3+4
    log.debug("recheck topics change");
    PatternMultiTopicsConsumerImpl<byte[]> consumer1 = ((PatternMultiTopicsConsumerImpl<byte[]>) consumer);
    consumer1.run(consumer1.getRecheckPatternTimeout());
    Thread.sleep(100);
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitions().size(), 10);
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getConsumers().size(), 10);
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitionedTopics().size(), 3);
    // 8. produce data to topic3 and topic4, verify should receive all the message
    for (int i = 0; i < totalMessages / 2; i++) {
        producer3.send((messagePredicate + "round2-producer4-" + i).getBytes());
        producer4.send((messagePredicate + "round2-producer4-" + i).getBytes());
    }
    messageSet = 0;
    message = consumer.receive();
    do {
        assertTrue(message instanceof TopicMessageImpl);
        messageSet++;
        consumer.acknowledge(message);
        log.debug("Consumer acknowledged : " + new String(message.getData()));
        message = consumer.receive(500, TimeUnit.MILLISECONDS);
    } while (message != null);
    assertEquals(messageSet, totalMessages);
    consumer.unsubscribe();
    consumer.close();
    producer1.close();
    producer2.close();
    producer3.close();
    producer4.close();
}
Also used : Pattern(java.util.regex.Pattern) TenantInfoImpl(org.apache.pulsar.common.policies.data.TenantInfoImpl) Test(org.testng.annotations.Test)

Example 38 with TenantInfoImpl

use of org.apache.pulsar.common.policies.data.TenantInfoImpl in project pulsar by apache.

the class PatternTopicsConsumerImplTest method testPatternTopicsSubscribeWithBuilderFail.

@Test(timeOut = testTimeout)
public void testPatternTopicsSubscribeWithBuilderFail() throws Exception {
    String key = "PatternTopicsSubscribeWithBuilderFail";
    final String subscriptionName = "my-ex-subscription-" + key;
    final String topicName1 = "persistent://my-property/my-ns/topic-1-" + key;
    final String topicName2 = "persistent://my-property/my-ns/topic-2-" + key;
    final String topicName3 = "persistent://my-property/my-ns/topic-3-" + key;
    final String topicName4 = "non-persistent://my-property/my-ns/topic-4-" + key;
    List<String> topicNames = Lists.newArrayList(topicName1, topicName2, topicName3, topicName4);
    final String patternString = "persistent://my-property/my-ns/pattern-topic.*";
    Pattern pattern = Pattern.compile(patternString);
    TenantInfoImpl tenantInfo = createDefaultTenantInfo();
    admin.tenants().createTenant("prop", tenantInfo);
    admin.topics().createPartitionedTopic(topicName2, 2);
    admin.topics().createPartitionedTopic(topicName3, 3);
    // test failing builder with pattern and topic should fail
    try {
        pulsarClient.newConsumer().topicsPattern(pattern).topic(topicName1).subscriptionName(subscriptionName).subscriptionType(SubscriptionType.Shared).ackTimeout(ackTimeOutMillis, TimeUnit.MILLISECONDS).subscribe();
        fail("subscribe1 with pattern and topic should fail.");
    } catch (PulsarClientException e) {
    // expected
    }
    // test failing builder with pattern and topics should fail
    try {
        pulsarClient.newConsumer().topicsPattern(pattern).topics(topicNames).subscriptionName(subscriptionName).subscriptionType(SubscriptionType.Shared).ackTimeout(ackTimeOutMillis, TimeUnit.MILLISECONDS).subscribe();
        fail("subscribe2 with pattern and topics should fail.");
    } catch (PulsarClientException e) {
    // expected
    }
    // test failing builder with pattern and patternString should fail
    try {
        pulsarClient.newConsumer().topicsPattern(pattern).topicsPattern(patternString).subscriptionName(subscriptionName).subscriptionType(SubscriptionType.Shared).ackTimeout(ackTimeOutMillis, TimeUnit.MILLISECONDS).subscribe();
        fail("subscribe3 with pattern and patternString should fail.");
    } catch (IllegalArgumentException e) {
    // expected
    }
}
Also used : Pattern(java.util.regex.Pattern) PulsarClientException(org.apache.pulsar.client.api.PulsarClientException) TenantInfoImpl(org.apache.pulsar.common.policies.data.TenantInfoImpl) Test(org.testng.annotations.Test)

Example 39 with TenantInfoImpl

use of org.apache.pulsar.common.policies.data.TenantInfoImpl in project pulsar by apache.

the class PatternTopicsConsumerImplTest method testStartEmptyPatternConsumer.

// simulate subscribe a pattern which has no topics, but then matched topics added in.
@Test(timeOut = testTimeout)
public void testStartEmptyPatternConsumer() throws Exception {
    String key = "StartEmptyPatternConsumerTest";
    String subscriptionName = "my-ex-subscription-" + key;
    String topicName1 = "persistent://my-property/my-ns/pattern-topic-1-" + key;
    String topicName2 = "persistent://my-property/my-ns/pattern-topic-2-" + key;
    String topicName3 = "persistent://my-property/my-ns/pattern-topic-3-" + key;
    Pattern pattern = Pattern.compile("persistent://my-property/my-ns/pattern-topic.*");
    // 1. create partition
    TenantInfoImpl tenantInfo = createDefaultTenantInfo();
    admin.tenants().createTenant("prop", tenantInfo);
    admin.topics().createPartitionedTopic(topicName2, 2);
    admin.topics().createPartitionedTopic(topicName3, 3);
    // 2. Create consumer, this should success, but with empty sub-consumser internal
    Consumer<byte[]> consumer = pulsarClient.newConsumer().topicsPattern(pattern).patternAutoDiscoveryPeriod(2).subscriptionName(subscriptionName).subscriptionType(SubscriptionType.Shared).ackTimeout(ackTimeOutMillis, TimeUnit.MILLISECONDS).receiverQueueSize(4).subscribe();
    // 3. verify consumer get methods, to get 5 number of partitions and topics.
    assertSame(pattern, ((PatternMultiTopicsConsumerImpl<?>) consumer).getPattern());
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitions().size(), 5);
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getConsumers().size(), 5);
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitionedTopics().size(), 2);
    // 4. create producer
    String messagePredicate = "my-message-" + key + "-";
    int totalMessages = 30;
    Producer<byte[]> producer1 = pulsarClient.newProducer().topic(topicName1).enableBatching(false).messageRoutingMode(MessageRoutingMode.SinglePartition).create();
    Producer<byte[]> producer2 = pulsarClient.newProducer().topic(topicName2).enableBatching(false).messageRoutingMode(org.apache.pulsar.client.api.MessageRoutingMode.RoundRobinPartition).create();
    Producer<byte[]> producer3 = pulsarClient.newProducer().topic(topicName3).enableBatching(false).messageRoutingMode(org.apache.pulsar.client.api.MessageRoutingMode.RoundRobinPartition).create();
    // 5. call recheckTopics to subscribe each added topics above
    log.debug("recheck topics change");
    PatternMultiTopicsConsumerImpl<byte[]> consumer1 = ((PatternMultiTopicsConsumerImpl<byte[]>) consumer);
    consumer1.run(consumer1.getRecheckPatternTimeout());
    Thread.sleep(100);
    // 6. verify consumer get methods, to get number of partitions and topics, value 6=1+2+3.
    assertSame(pattern, ((PatternMultiTopicsConsumerImpl<?>) consumer).getPattern());
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitions().size(), 6);
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getConsumers().size(), 6);
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitionedTopics().size(), 2);
    // 7. produce data
    for (int i = 0; i < totalMessages / 3; i++) {
        producer1.send((messagePredicate + "producer1-" + i).getBytes());
        producer2.send((messagePredicate + "producer2-" + i).getBytes());
        producer3.send((messagePredicate + "producer3-" + i).getBytes());
    }
    // 8. should receive all the message
    int messageSet = 0;
    Message<byte[]> message = consumer.receive();
    do {
        assertTrue(message instanceof TopicMessageImpl);
        messageSet++;
        consumer.acknowledge(message);
        log.debug("Consumer acknowledged : " + new String(message.getData()));
        message = consumer.receive(500, TimeUnit.MILLISECONDS);
    } while (message != null);
    assertEquals(messageSet, totalMessages);
    consumer.unsubscribe();
    consumer.close();
    producer1.close();
    producer2.close();
    producer3.close();
}
Also used : Pattern(java.util.regex.Pattern) TenantInfoImpl(org.apache.pulsar.common.policies.data.TenantInfoImpl) Test(org.testng.annotations.Test)

Example 40 with TenantInfoImpl

use of org.apache.pulsar.common.policies.data.TenantInfoImpl in project pulsar by apache.

the class PatternTopicsConsumerImplTest method testBinaryProtoToGetTopicsOfNamespaceAll.

// verify consumer create success, and works well.
@Test(timeOut = testTimeout)
public void testBinaryProtoToGetTopicsOfNamespaceAll() throws Exception {
    String key = "BinaryProtoToGetTopics";
    String subscriptionName = "my-ex-subscription-" + key;
    String topicName1 = "persistent://my-property/my-ns/pattern-topic-1-" + key;
    String topicName2 = "persistent://my-property/my-ns/pattern-topic-2-" + key;
    String topicName3 = "persistent://my-property/my-ns/pattern-topic-3-" + key;
    String topicName4 = "non-persistent://my-property/my-ns/pattern-topic-4-" + key;
    Pattern pattern = Pattern.compile("my-property/my-ns/pattern-topic.*");
    // 1. create partition
    TenantInfoImpl tenantInfo = createDefaultTenantInfo();
    admin.tenants().createTenant("prop", tenantInfo);
    admin.topics().createPartitionedTopic(topicName2, 2);
    admin.topics().createPartitionedTopic(topicName3, 3);
    // 2. create producer
    String messagePredicate = "my-message-" + key + "-";
    int totalMessages = 40;
    Producer<byte[]> producer1 = pulsarClient.newProducer().topic(topicName1).enableBatching(false).messageRoutingMode(MessageRoutingMode.SinglePartition).create();
    Producer<byte[]> producer2 = pulsarClient.newProducer().topic(topicName2).enableBatching(false).messageRoutingMode(org.apache.pulsar.client.api.MessageRoutingMode.RoundRobinPartition).create();
    Producer<byte[]> producer3 = pulsarClient.newProducer().topic(topicName3).enableBatching(false).messageRoutingMode(org.apache.pulsar.client.api.MessageRoutingMode.RoundRobinPartition).create();
    Producer<byte[]> producer4 = pulsarClient.newProducer().topic(topicName4).enableBatching(false).create();
    Consumer<byte[]> consumer = pulsarClient.newConsumer().topicsPattern(pattern).patternAutoDiscoveryPeriod(2).subscriptionName(subscriptionName).subscriptionType(SubscriptionType.Shared).subscriptionTopicsMode(RegexSubscriptionMode.AllTopics).ackTimeout(ackTimeOutMillis, TimeUnit.MILLISECONDS).subscribe();
    // 4. verify consumer get methods, to get right number of partitions and topics.
    assertSame(pattern, ((PatternMultiTopicsConsumerImpl<?>) consumer).getPattern());
    List<String> topics = ((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitions();
    List<ConsumerImpl<byte[]>> consumers = ((PatternMultiTopicsConsumerImpl<byte[]>) consumer).getConsumers();
    assertEquals(topics.size(), 7);
    assertEquals(consumers.size(), 7);
    assertEquals(((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitionedTopics().size(), 2);
    topics.forEach(topic -> log.debug("topic: {}", topic));
    consumers.forEach(c -> log.debug("consumer: {}", c.getTopic()));
    IntStream.range(0, topics.size()).forEach(index -> assertEquals(consumers.get(index).getTopic(), topics.get(index)));
    ((PatternMultiTopicsConsumerImpl<?>) consumer).getPartitionedTopics().forEach(topic -> log.debug("getTopics topic: {}", topic));
    // 5. produce data
    for (int i = 0; i < totalMessages / 4; i++) {
        producer1.send((messagePredicate + "producer1-" + i).getBytes());
        producer2.send((messagePredicate + "producer2-" + i).getBytes());
        producer3.send((messagePredicate + "producer3-" + i).getBytes());
        producer4.send((messagePredicate + "producer4-" + i).getBytes());
    }
    // 6. should receive all the message
    int messageSet = 0;
    Message<byte[]> message = consumer.receive();
    do {
        assertTrue(message instanceof TopicMessageImpl);
        messageSet++;
        consumer.acknowledge(message);
        log.debug("Consumer acknowledged : " + new String(message.getData()));
        message = consumer.receive(500, TimeUnit.MILLISECONDS);
    } while (message != null);
    assertEquals(messageSet, totalMessages);
    consumer.unsubscribe();
    consumer.close();
    producer1.close();
    producer2.close();
    producer3.close();
    producer4.close();
}
Also used : Pattern(java.util.regex.Pattern) TenantInfoImpl(org.apache.pulsar.common.policies.data.TenantInfoImpl) Test(org.testng.annotations.Test)

Aggregations

TenantInfoImpl (org.apache.pulsar.common.policies.data.TenantInfoImpl)690 Test (org.testng.annotations.Test)458 MockedPulsarServiceBaseTest (org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest)211 PulsarAdmin (org.apache.pulsar.client.admin.PulsarAdmin)146 BeforeMethod (org.testng.annotations.BeforeMethod)144 Cleanup (lombok.Cleanup)139 PulsarAdminException (org.apache.pulsar.client.admin.PulsarAdminException)136 PulsarClient (org.apache.pulsar.client.api.PulsarClient)91 PulsarClientException (org.apache.pulsar.client.api.PulsarClientException)72 HashSet (java.util.HashSet)55 HashMap (java.util.HashMap)49 ServiceConfiguration (org.apache.pulsar.broker.ServiceConfiguration)48 CompletableFuture (java.util.concurrent.CompletableFuture)41 List (java.util.List)38 PulsarService (org.apache.pulsar.broker.PulsarService)37 AuthAction (org.apache.pulsar.common.policies.data.AuthAction)36 ArrayList (java.util.ArrayList)33 WebTarget (javax.ws.rs.client.WebTarget)33 Policies (org.apache.pulsar.common.policies.data.Policies)33 ClusterData (org.apache.pulsar.common.policies.data.ClusterData)31