|
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; |
| 28 | +import static org.testng.Assert.fail; |
27 | 29 | import io.netty.buffer.ByteBuf; |
28 | 30 | import io.netty.channel.EventLoopGroup; |
29 | 31 | import io.netty.util.concurrent.DefaultThreadFactory; |
|
52 | 54 | import org.apache.pulsar.client.api.MessageRoutingMode; |
53 | 55 | import org.apache.pulsar.client.api.Producer; |
54 | 56 | import org.apache.pulsar.client.api.PulsarClient; |
| 57 | +import org.apache.pulsar.client.api.PulsarClientException; |
55 | 58 | import org.apache.pulsar.client.api.Schema; |
56 | 59 | import org.apache.pulsar.client.api.SubscriptionInitialPosition; |
57 | 60 | import org.apache.pulsar.client.api.SubscriptionType; |
|
67 | 70 | import org.apache.pulsar.common.api.proto.ProtocolVersion; |
68 | 71 | import org.apache.pulsar.common.configuration.PulsarConfigurationLoader; |
69 | 72 | import org.apache.pulsar.common.naming.TopicName; |
| 73 | +import org.apache.pulsar.common.partition.PartitionedTopicMetadata; |
70 | 74 | import org.apache.pulsar.common.policies.data.ClusterData; |
71 | 75 | import org.apache.pulsar.common.policies.data.RetentionPolicies; |
72 | 76 | import org.apache.pulsar.common.policies.data.TenantInfo; |
73 | 77 | import org.apache.pulsar.common.policies.data.TenantInfoImpl; |
74 | 78 | import org.apache.pulsar.common.policies.data.TopicType; |
75 | 79 | import org.apache.pulsar.common.protocol.Commands; |
76 | 80 | import org.apache.pulsar.common.schema.SchemaInfo; |
| 81 | +import org.apache.pulsar.common.util.FutureUtil; |
77 | 82 | import org.apache.pulsar.common.util.netty.EventLoopUtil; |
78 | 83 | import org.apache.pulsar.metadata.impl.ZKMetadataStore; |
79 | 84 | import org.mockito.Mockito; |
@@ -139,6 +144,13 @@ protected void initializeProxyConfig() throws Exception { |
139 | 144 | proxyClientAuthentication.start(); |
140 | 145 | } |
141 | 146 |
|
| 147 | + @Override |
| 148 | + protected void doInitConf() throws Exception { |
| 149 | + super.doInitConf(); |
| 150 | + conf.setAllowAutoTopicCreationType(TopicType.PARTITIONED); |
| 151 | + conf.setDefaultNumPartitions(1); |
| 152 | + } |
| 153 | + |
142 | 154 | @Override |
143 | 155 | @AfterClass(alwaysRun = true) |
144 | 156 | protected void cleanup() throws Exception { |
@@ -414,6 +426,36 @@ public void testProtocolVersionAdvertisement() throws Exception { |
414 | 426 | } |
415 | 427 | } |
416 | 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 | + fail("expected a TopicDoesNotExistException"); |
| 450 | + } catch (Exception ex) { |
| 451 | + assertTrue(FutureUtil.unwrapCompletionException(ex) |
| 452 | + instanceof PulsarClientException.TopicDoesNotExistException); |
| 453 | + } |
| 454 | + // cleanup. |
| 455 | + proxyClient.close(); |
| 456 | + admin.topics().deletePartitionedTopic(topic); |
| 457 | + } |
| 458 | + |
417 | 459 | @Test |
418 | 460 | public void testGetClientVersion() throws Exception { |
419 | 461 | @Cleanup |
|
0 commit comments