|
24 | 24 | import static org.mockito.Mockito.doReturn;
|
25 | 25 | import static org.testng.Assert.assertEquals;
|
26 | 26 | import static org.testng.Assert.assertNotNull;
|
| 27 | +import static org.testng.Assert.assertTrue; |
27 | 28 | import io.netty.buffer.ByteBuf;
|
28 | 29 | import io.netty.channel.EventLoopGroup;
|
29 | 30 | import io.netty.util.concurrent.DefaultThreadFactory;
|
|
52 | 53 | import org.apache.pulsar.client.api.MessageRoutingMode;
|
53 | 54 | import org.apache.pulsar.client.api.Producer;
|
54 | 55 | import org.apache.pulsar.client.api.PulsarClient;
|
| 56 | +import org.apache.pulsar.client.api.PulsarClientException; |
55 | 57 | import org.apache.pulsar.client.api.Schema;
|
56 | 58 | import org.apache.pulsar.client.api.SubscriptionInitialPosition;
|
57 | 59 | import org.apache.pulsar.client.api.SubscriptionType;
|
|
68 | 70 | import org.apache.pulsar.common.api.proto.ProtocolVersion;
|
69 | 71 | import org.apache.pulsar.common.configuration.PulsarConfigurationLoader;
|
70 | 72 | import org.apache.pulsar.common.naming.TopicName;
|
| 73 | +import org.apache.pulsar.common.partition.PartitionedTopicMetadata; |
71 | 74 | import org.apache.pulsar.common.policies.data.ClusterData;
|
72 | 75 | import org.apache.pulsar.common.policies.data.RetentionPolicies;
|
73 | 76 | import org.apache.pulsar.common.policies.data.TenantInfo;
|
74 | 77 | import org.apache.pulsar.common.policies.data.TenantInfoImpl;
|
75 | 78 | import org.apache.pulsar.common.policies.data.TopicType;
|
76 | 79 | import org.apache.pulsar.common.protocol.Commands;
|
77 | 80 | import org.apache.pulsar.common.schema.SchemaInfo;
|
| 81 | +import org.apache.pulsar.common.util.FutureUtil; |
78 | 82 | import org.apache.pulsar.common.util.netty.EventLoopUtil;
|
79 | 83 | import org.apache.pulsar.metadata.impl.ZKMetadataStore;
|
80 | 84 | import org.mockito.Mockito;
|
@@ -140,6 +144,13 @@ protected void initializeProxyConfig() throws Exception {
|
140 | 144 | proxyClientAuthentication.start();
|
141 | 145 | }
|
142 | 146 |
|
| 147 | + @Override |
| 148 | + protected void doInitConf() throws Exception { |
| 149 | + super.doInitConf(); |
| 150 | + conf.setAllowAutoTopicCreationType(TopicType.PARTITIONED); |
| 151 | + conf.setDefaultNumPartitions(1); |
| 152 | + } |
| 153 | + |
143 | 154 | @Override
|
144 | 155 | @AfterClass(alwaysRun = true)
|
145 | 156 | protected void cleanup() throws Exception {
|
@@ -415,6 +426,35 @@ public void testProtocolVersionAdvertisement() throws Exception {
|
415 | 426 | }
|
416 | 427 | }
|
417 | 428 |
|
| 429 | + @Test |
| 430 | + public void testGetPartitionedMetadataErrorCode() throws Exception { |
| 431 | + final String topic = BrokerTestUtil.newUniqueName("persistent://public/default/tp"); |
| 432 | + // Trigger partitioned metadata creation. |
| 433 | + PulsarClientImpl brokerClient = (PulsarClientImpl) pulsarClient; |
| 434 | + PartitionedTopicMetadata brokerMetadata = |
| 435 | + brokerClient.getPartitionedTopicMetadata(topic, true, true).get(); |
| 436 | + assertEquals(brokerMetadata.partitions, 1); |
| 437 | + assertEquals(pulsar.getPulsarResources().getNamespaceResources().getPartitionedTopicResources() |
| 438 | + .getPartitionedTopicMetadataAsync(TopicName.get(topic)).get().get().partitions, 1); |
| 439 | + // Verify: Proxy never rewrite error code. |
| 440 | + ClientConfigurationData proxyClientConf = new ClientConfigurationData(); |
| 441 | + proxyClientConf.setServiceUrl(proxyService.getServiceUrl()); |
| 442 | + PulsarClientImpl proxyClient = |
| 443 | + (PulsarClientImpl) getClientActiveConsumerChangeNotSupported(proxyClientConf); |
| 444 | + PartitionedTopicMetadata proxyMetadata = |
| 445 | + proxyClient.getPartitionedTopicMetadata(topic, false, false).get(); |
| 446 | + assertEquals(proxyMetadata.partitions, 1); |
| 447 | + try { |
| 448 | + proxyClient.getPartitionedTopicMetadata(topic + "-partition-0", false, false).get(); |
| 449 | + } catch (Exception ex) { |
| 450 | + assertTrue(FutureUtil.unwrapCompletionException(ex) |
| 451 | + instanceof PulsarClientException.TopicDoesNotExistException); |
| 452 | + } |
| 453 | + // cleanup. |
| 454 | + proxyClient.close(); |
| 455 | + admin.topics().deletePartitionedTopic(topic); |
| 456 | + } |
| 457 | + |
418 | 458 | @Test
|
419 | 459 | public void testGetClientVersion() throws Exception {
|
420 | 460 | @Cleanup
|
|
0 commit comments