Skip to content

Commit 66e51eb

Browse files
author
Gimi Liang
committed
modified ReaderTest to test Reader for both persistent and non-persistent topics
1 parent b91d537 commit 66e51eb

File tree

1 file changed

+49
-42
lines changed

1 file changed

+49
-42
lines changed

tests/ReaderTest.cc

Lines changed: 49 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,25 @@ using namespace pulsar;
3737
static std::string serviceUrl = "pulsar://localhost:6650";
3838
static const std::string adminUrl = "http://localhost:8080/";
3939

40-
class ReaderTest : public ::testing::TestWithParam<bool> {
40+
class ReaderTest : public ::testing::TestWithParam<std::tuple<bool, bool>> {
4141
public:
4242
void initTopic(std::string topicName) {
4343
if (isMultiTopic_) {
4444
// call admin api to make it partitioned
45-
std::string url = adminUrl + "admin/v2/persistent/public/default/" + topicName + "/partitions";
45+
std::string url = adminUrl + "admin/v2/" + (isNonPersistentTopic ? "non-" : "") + "persistent/public/default/" + topicName + "/partitions";
4646
int res = makePutRequest(url, "5");
4747
LOG_INFO("res = " << res);
4848
ASSERT_FALSE(res != 204 && res != 409);
4949
}
5050
}
5151

5252
protected:
53-
bool isMultiTopic_ = GetParam();
53+
std::string fullTopicName(const std::string & topicName) {
54+
return (isNonPersistentTopic ? "non-" : "") + "persistent://public/default/" + topicName;
55+
}
56+
57+
bool isNonPersistentTopic = std::get<0>(GetParam());
58+
bool isMultiTopic_ = std::get<1>(GetParam());
5459
};
5560

5661
TEST_P(ReaderTest, testSimpleReader) {
@@ -62,10 +67,11 @@ TEST_P(ReaderTest, testSimpleReader) {
6267

6368
ReaderConfiguration readerConf;
6469
Reader reader;
65-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::earliest(), readerConf, reader));
70+
71+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::earliest(), readerConf, reader));
6672

6773
Producer producer;
68-
ASSERT_EQ(ResultOk, client.createProducer(topicName, producer));
74+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(topicName), producer));
6975

7076
for (int i = 0; i < 10; i++) {
7177
std::string content = "my-message-" + std::to_string(i);
@@ -95,10 +101,11 @@ TEST_P(ReaderTest, testAsyncRead) {
95101

96102
ReaderConfiguration readerConf;
97103
Reader reader;
98-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::earliest(), readerConf, reader));
104+
105+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::earliest(), readerConf, reader));
99106

100107
Producer producer;
101-
ASSERT_EQ(ResultOk, client.createProducer(topicName, producer));
108+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(topicName), producer));
102109

103110
for (int i = 0; i < 10; i++) {
104111
std::string content = "my-message-" + std::to_string(i);
@@ -140,7 +147,7 @@ TEST_P(ReaderTest, testReaderAfterMessagesWerePublished) {
140147
initTopic(topicName);
141148

142149
Producer producer;
143-
ASSERT_EQ(ResultOk, client.createProducer(topicName, producer));
150+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(topicName), producer));
144151

145152
for (int i = 0; i < 10; i++) {
146153
std::string content = "my-message-" + std::to_string(i);
@@ -150,7 +157,7 @@ TEST_P(ReaderTest, testReaderAfterMessagesWerePublished) {
150157

151158
ReaderConfiguration readerConf;
152159
Reader reader;
153-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::earliest(), readerConf, reader));
160+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::earliest(), readerConf, reader));
154161

155162
for (int i = 0; i < 10; i++) {
156163
Message msg;
@@ -174,7 +181,7 @@ TEST_P(ReaderTest, testMultipleReaders) {
174181
initTopic(topicName);
175182

176183
Producer producer;
177-
ASSERT_EQ(ResultOk, client.createProducer(topicName, producer));
184+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(topicName), producer));
178185

179186
for (int i = 0; i < 10; i++) {
180187
std::string content = "my-message-" + std::to_string(i);
@@ -184,10 +191,10 @@ TEST_P(ReaderTest, testMultipleReaders) {
184191

185192
ReaderConfiguration readerConf;
186193
Reader reader1;
187-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::earliest(), readerConf, reader1));
194+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::earliest(), readerConf, reader1));
188195

189196
Reader reader2;
190-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::earliest(), readerConf, reader2));
197+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::earliest(), readerConf, reader2));
191198

192199
for (int i = 0; i < 10; i++) {
193200
Message msg;
@@ -221,7 +228,7 @@ TEST_P(ReaderTest, testReaderOnLastMessage) {
221228
initTopic(topicName);
222229

223230
Producer producer;
224-
ASSERT_EQ(ResultOk, client.createProducer(topicName, producer));
231+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(topicName), producer));
225232

226233
for (int i = 0; i < 10; i++) {
227234
std::string content = "my-message-" + std::to_string(i);
@@ -231,7 +238,7 @@ TEST_P(ReaderTest, testReaderOnLastMessage) {
231238

232239
ReaderConfiguration readerConf;
233240
Reader reader;
234-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::latest(), readerConf, reader));
241+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::latest(), readerConf, reader));
235242

236243
for (int i = 10; i < 20; i++) {
237244
std::string content = "my-message-" + std::to_string(i);
@@ -261,7 +268,7 @@ TEST_P(ReaderTest, testReaderOnSpecificMessage) {
261268
initTopic(topicName);
262269

263270
Producer producer;
264-
ASSERT_EQ(ResultOk, client.createProducer(topicName, producer));
271+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(topicName), producer));
265272

266273
for (int i = 0; i < 10; i++) {
267274
std::string content = "my-message-" + std::to_string(i);
@@ -271,7 +278,7 @@ TEST_P(ReaderTest, testReaderOnSpecificMessage) {
271278

272279
ReaderConfiguration readerConf;
273280
Reader reader;
274-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::earliest(), readerConf, reader));
281+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::earliest(), readerConf, reader));
275282

276283
MessageId lastMessageId;
277284

@@ -287,7 +294,7 @@ TEST_P(ReaderTest, testReaderOnSpecificMessage) {
287294
}
288295

289296
// Create another reader starting on msgid4
290-
ASSERT_EQ(ResultOk, client.createReader(topicName, lastMessageId, readerConf, reader));
297+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), lastMessageId, readerConf, reader));
291298

292299
for (int i = 5; i < 10; i++) {
293300
Message msg;
@@ -319,7 +326,7 @@ TEST_P(ReaderTest, testReaderOnSpecificMessageWithBatches) {
319326
ProducerConfiguration producerConf;
320327
producerConf.setBatchingEnabled(true);
321328
producerConf.setBatchingMaxPublishDelayMs(1000);
322-
ASSERT_EQ(ResultOk, client.createProducer(topicName, producerConf, producer));
329+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(topicName), producerConf, producer));
323330

324331
for (int i = 0; i < 10; i++) {
325332
std::string content = "my-message-" + std::to_string(i);
@@ -334,7 +341,7 @@ TEST_P(ReaderTest, testReaderOnSpecificMessageWithBatches) {
334341

335342
ReaderConfiguration readerConf;
336343
Reader reader;
337-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::earliest(), readerConf, reader));
344+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::earliest(), readerConf, reader));
338345

339346
std::string lastMessageId;
340347

@@ -352,7 +359,7 @@ TEST_P(ReaderTest, testReaderOnSpecificMessageWithBatches) {
352359
// Create another reader starting on msgid4
353360
auto msgId4 = MessageId::deserialize(lastMessageId);
354361
Reader reader2;
355-
ASSERT_EQ(ResultOk, client.createReader(topicName, msgId4, readerConf, reader2));
362+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), msgId4, readerConf, reader2));
356363

357364
for (int i = 5; i < 11; i++) {
358365
Message msg;
@@ -382,12 +389,12 @@ TEST_P(ReaderTest, testReaderReachEndOfTopic) {
382389
ProducerConfiguration producerConf;
383390
producerConf.setBatchingEnabled(true);
384391
producerConf.setBatchingMaxPublishDelayMs(1000);
385-
ASSERT_EQ(ResultOk, client.createProducer(topicName, producerConf, producer));
392+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(topicName), producerConf, producer));
386393

387394
// 2. create reader, and expect hasMessageAvailable return false since no message produced.
388395
ReaderConfiguration readerConf;
389396
Reader reader;
390-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::latest(), readerConf, reader));
397+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::latest(), readerConf, reader));
391398

392399
bool hasMessageAvailable;
393400
ASSERT_EQ(ResultOk, reader.hasMessageAvailable(hasMessageAvailable));
@@ -457,12 +464,12 @@ TEST_P(ReaderTest, testReaderReachEndOfTopicMessageWithoutBatches) {
457464
Producer producer;
458465
ProducerConfiguration producerConf;
459466
producerConf.setBatchingEnabled(false);
460-
ASSERT_EQ(ResultOk, client.createProducer(topicName, producerConf, producer));
467+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(topicName), producerConf, producer));
461468

462469
// 2. create reader, and expect hasMessageAvailable return false since no message produced.
463470
ReaderConfiguration readerConf;
464471
Reader reader;
465-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::latest(), readerConf, reader));
472+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::latest(), readerConf, reader));
466473

467474
bool hasMessageAvailable;
468475
ASSERT_EQ(ResultOk, reader.hasMessageAvailable(hasMessageAvailable));
@@ -511,7 +518,7 @@ TEST(ReaderTest, testPartitionIndex) {
511518
"ReaderTestPartitionIndex-par-topic-" + std::to_string(time(nullptr));
512519

513520
int res = makePutRequest(
514-
adminUrl + "admin/v2/persistent/public/default/" + partitionedTopic + "/partitions", "2");
521+
adminUrl + "admin/v2/" + (isNonPersistentTopic ? "non-" : "") + "persistent/public/default/" + partitionedTopic + "/partitions", "2");
515522
ASSERT_TRUE(res == 204 || res == 409) << "res: " << res;
516523

517524
const std::string partition0 = partitionedTopic + "-partition-0";
@@ -520,14 +527,14 @@ TEST(ReaderTest, testPartitionIndex) {
520527
ReaderConfiguration readerConf;
521528
Reader readers[3];
522529
ASSERT_EQ(ResultOk,
523-
client.createReader(nonPartitionedTopic, MessageId::earliest(), readerConf, readers[0]));
524-
ASSERT_EQ(ResultOk, client.createReader(partition0, MessageId::earliest(), readerConf, readers[1]));
525-
ASSERT_EQ(ResultOk, client.createReader(partition1, MessageId::earliest(), readerConf, readers[2]));
530+
client.createReader(fullTopicName(nonPartitionedTopic), MessageId::earliest(), readerConf, readers[0]));
531+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(partition0), MessageId::earliest(), readerConf, readers[1]));
532+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(partition1), MessageId::earliest(), readerConf, readers[2]));
526533

527534
Producer producers[3];
528-
ASSERT_EQ(ResultOk, client.createProducer(nonPartitionedTopic, producers[0]));
529-
ASSERT_EQ(ResultOk, client.createProducer(partition0, producers[1]));
530-
ASSERT_EQ(ResultOk, client.createProducer(partition1, producers[2]));
535+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(nonPartitionedTopic), producers[0]));
536+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(partition0), producers[1]));
537+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(partition1), producers[2]));
531538

532539
for (auto& producer : producers) {
533540
ASSERT_EQ(ResultOk, producer.send(MessageBuilder().setContent("hello").build()));
@@ -555,7 +562,7 @@ TEST_P(ReaderTest, testSubscriptionNameSetting) {
555562
ReaderConfiguration readerConf;
556563
readerConf.setInternalSubscriptionName(subName);
557564
Reader reader;
558-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::earliest(), readerConf, reader));
565+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::earliest(), readerConf, reader));
559566

560567
ASSERT_EQ(subName, PulsarFriend::getConsumer(reader)->getSubscriptionName());
561568

@@ -575,7 +582,7 @@ TEST_P(ReaderTest, testSetSubscriptionNameAndPrefix) {
575582
readerConf.setInternalSubscriptionName(subName);
576583
readerConf.setSubscriptionRolePrefix("my-prefix");
577584
Reader reader;
578-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::earliest(), readerConf, reader));
585+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::earliest(), readerConf, reader));
579586

580587
ASSERT_EQ(subName, PulsarFriend::getConsumer(reader)->getSubscriptionName());
581588

@@ -594,13 +601,13 @@ TEST_P(ReaderTest, testMultiSameSubscriptionNameReaderShouldFail) {
594601
ReaderConfiguration readerConf1;
595602
readerConf1.setInternalSubscriptionName(subscriptionName);
596603
Reader reader1;
597-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::earliest(), readerConf1, reader1));
604+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::earliest(), readerConf1, reader1));
598605

599606
ReaderConfiguration readerConf2;
600607
readerConf2.setInternalSubscriptionName(subscriptionName);
601608
Reader reader2;
602609
ASSERT_EQ(ResultConsumerBusy,
603-
client.createReader(topicName, MessageId::earliest(), readerConf2, reader2));
610+
client.createReader(fullTopicName(topicName), MessageId::earliest(), readerConf2, reader2));
604611

605612
reader1.close();
606613
reader2.close();
@@ -616,7 +623,7 @@ TEST_P(ReaderTest, testIsConnected) {
616623
Reader reader;
617624
ASSERT_FALSE(reader.isConnected());
618625

619-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::earliest(), {}, reader));
626+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::earliest(), {}, reader));
620627
ASSERT_TRUE(reader.isConnected());
621628

622629
ASSERT_EQ(ResultOk, reader.close());
@@ -633,7 +640,7 @@ TEST_P(ReaderTest, testHasMessageAvailableWhenCreated) {
633640
ProducerConfiguration producerConf;
634641
producerConf.setBatchingMaxMessages(3);
635642
Producer producer;
636-
ASSERT_EQ(ResultOk, client.createProducer(topicName, producerConf, producer));
643+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(topicName), producerConf, producer));
637644

638645
std::vector<MessageId> messageIds;
639646
constexpr int numMessages = 7;
@@ -657,14 +664,14 @@ TEST_P(ReaderTest, testHasMessageAvailableWhenCreated) {
657664
bool hasMessageAvailable;
658665

659666
for (size_t i = 0; i < messageIds.size() - 1; i++) {
660-
ASSERT_EQ(ResultOk, client.createReader(topicName, messageIds[i], {}, reader));
667+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), messageIds[i], {}, reader));
661668
ASSERT_EQ(ResultOk, reader.hasMessageAvailable(hasMessageAvailable));
662669
EXPECT_TRUE(hasMessageAvailable);
663670
}
664671

665672
// The start message ID is exclusive by default, so when we start at the last message, there should be no
666673
// message available.
667-
ASSERT_EQ(ResultOk, client.createReader(topicName, messageIds.back(), {}, reader));
674+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), messageIds.back(), {}, reader));
668675
ASSERT_EQ(ResultOk, reader.hasMessageAvailable(hasMessageAvailable));
669676
EXPECT_FALSE(hasMessageAvailable);
670677
client.close();
@@ -678,7 +685,7 @@ TEST_P(ReaderTest, testReceiveAfterSeek) {
678685
initTopic(topicName);
679686

680687
Producer producer;
681-
ASSERT_EQ(ResultOk, client.createProducer(topicName, producer));
688+
ASSERT_EQ(ResultOk, client.createProducer(fullTopicName(topicName), producer));
682689

683690
MessageId seekMessageId;
684691
for (int i = 0; i < 5; i++) {
@@ -690,7 +697,7 @@ TEST_P(ReaderTest, testReceiveAfterSeek) {
690697
}
691698

692699
Reader reader;
693-
ASSERT_EQ(ResultOk, client.createReader(topicName, MessageId::latest(), {}, reader));
700+
ASSERT_EQ(ResultOk, client.createReader(fullTopicName(topicName), MessageId::latest(), {}, reader));
694701

695702
reader.seek(seekMessageId);
696703

@@ -888,5 +895,5 @@ TEST_P(ReaderSeekTest, testHasMessageAvailableAfterSeekTimestamp) {
888895
}
889896
}
890897

891-
INSTANTIATE_TEST_SUITE_P(Pulsar, ReaderTest, ::testing::Values(true, false));
898+
INSTANTIATE_TEST_SUITE_P(Pulsar, ReaderTest, ::testing::Combine(::testing::Values(true, false), ::testing::Values(true, false)));
892899
INSTANTIATE_TEST_SUITE_P(Pulsar, ReaderSeekTest, ::testing::Values(true, false));

0 commit comments

Comments
 (0)