@@ -4084,12 +4084,11 @@ void testBatchReceive(bool multiConsumer) {
40844084 Client client (lookupUrl);
40854085
40864086 std::string uniqueChunk = unique_str ();
4087- std::string topicName = " persistent://public/default/ test-batch-receive" + uniqueChunk;
4087+ std::string topicName = " test-batch-receive" + uniqueChunk + std::to_string (multiConsumer) ;
40884088
40894089 if (multiConsumer) {
40904090 // call admin api to make it partitioned
4091- std::string url =
4092- adminUrl + " admin/v2/persistent/public/default/test-batch-receive" + uniqueChunk + " /partitions" ;
4091+ std::string url = adminUrl + " admin/v2/persistent/public/default/" + topicName + " /partitions" ;
40934092 int res = makePutRequest (url, " 5" );
40944093 LOG_INFO (" res = " << res);
40954094 ASSERT_FALSE (res != 204 && res != 409 );
@@ -4107,8 +4106,9 @@ void testBatchReceive(bool multiConsumer) {
41074106 Consumer consumer;
41084107 ConsumerConfiguration consumerConfig;
41094108 // when receiver queue size > maxNumMessages, use receiver queue size.
4109+ const int batchReceiveMaxNumMessages = 10 ;
41104110 consumerConfig.setBatchReceivePolicy (BatchReceivePolicy (1000 , -1 , -1 ));
4111- consumerConfig.setReceiverQueueSize (10 );
4111+ consumerConfig.setReceiverQueueSize (batchReceiveMaxNumMessages );
41124112 consumerConfig.setProperty (" consumer-name" , " test-consumer-name" );
41134113 consumerConfig.setProperty (" consumer-id" , " test-consumer-id" );
41144114 Promise<Result, Consumer> consumerPromise;
@@ -4120,32 +4120,41 @@ void testBatchReceive(bool multiConsumer) {
41204120
41214121 // sync batch receive test
41224122 std::string prefix = " batch-receive-msg" ;
4123- int numOfMessages = 10 ;
4123+ int numOfMessages = 100 ;
41244124 for (int i = 0 ; i < numOfMessages; i++) {
41254125 std::string messageContent = prefix + std::to_string (i);
41264126 Message msg = MessageBuilder ().setContent (messageContent).build ();
4127- producer.send (msg);
4127+ producer.sendAsync (msg, NULL );
4128+ }
4129+ ASSERT_EQ (ResultOk, producer.flush ());
4130+ for (int i = 0 ; i < numOfMessages / batchReceiveMaxNumMessages; i++) {
4131+ Messages messages;
4132+ Result receive = consumer.batchReceive (messages);
4133+ ASSERT_EQ (receive, ResultOk);
4134+ ASSERT_EQ (messages.size (), batchReceiveMaxNumMessages);
4135+ for (const auto &item : messages) {
4136+ consumer.acknowledge (item);
4137+ }
41284138 }
41294139
4130- Messages messages;
4131- Result receive = consumer.batchReceive (messages);
4132- ASSERT_EQ (receive, ResultOk);
4133- ASSERT_EQ (messages.size (), numOfMessages);
4134-
41354140 // async batch receive test
4136- Latch latch (1 );
4137- BatchReceiveCallback batchReceiveCallback = [&latch, numOfMessages](Result result, Messages messages) {
4138- ASSERT_EQ (result, ResultOk);
4139- ASSERT_EQ (messages.size (), numOfMessages);
4140- latch.countdown ();
4141- };
4142- consumer.batchReceiveAsync (batchReceiveCallback);
41434141 for (int i = 0 ; i < numOfMessages; i++) {
41444142 std::string messageContent = prefix + std::to_string (i);
41454143 Message msg = MessageBuilder ().setContent (messageContent).build ();
4146- producer.send (msg);
4144+ producer.sendAsync (msg, NULL );
4145+ }
4146+ ASSERT_EQ (ResultOk, producer.flush ());
4147+ for (int i = 0 ; i < numOfMessages / batchReceiveMaxNumMessages; i++) {
4148+ Latch latch (1 );
4149+ BatchReceiveCallback batchReceiveCallback = [&latch, batchReceiveMaxNumMessages](Result result,
4150+ Messages messages) {
4151+ ASSERT_EQ (result, ResultOk);
4152+ ASSERT_EQ (messages.size (), batchReceiveMaxNumMessages);
4153+ latch.countdown ();
4154+ };
4155+ consumer.batchReceiveAsync (batchReceiveCallback);
4156+ ASSERT_TRUE (latch.wait (std::chrono::seconds (1 )));
41474157 }
4148- ASSERT_TRUE (latch.wait (std::chrono::seconds (10 )));
41494158
41504159 producer.close ();
41514160 consumer.close ();
0 commit comments