@@ -275,7 +275,8 @@ TEST(ProducerTest, testChunkingMaxMessageSize) {
275275TEST (ProducerTest, testExclusiveProducer) {
276276 Client client (serviceUrl);
277277
278- std::string topicName = " persistent://public/default/testExclusiveProducer" ;
278+ std::string topicName =
279+ " persistent://public/default/testExclusiveProducer" + std::to_string (time (nullptr ));
279280
280281 Producer producer1;
281282 ProducerConfiguration producerConfiguration1;
@@ -296,6 +297,42 @@ TEST(ProducerTest, testExclusiveProducer) {
296297 ASSERT_EQ (ResultProducerBusy, client.createProducer (topicName, producerConfiguration3, producer3));
297298}
298299
300+ TEST (ProducerTest, testWaitForExclusiveProducer) {
301+ Client client (serviceUrl);
302+
303+ std::string topicName =
304+ " persistent://public/default/testWaitForExclusiveProducer" + std::to_string (time (nullptr ));
305+
306+ Producer producer1;
307+ ProducerConfiguration producerConfiguration1;
308+ producerConfiguration1.setProducerName (" p-name-1" );
309+ producerConfiguration1.setAccessMode (ProducerConfiguration::Exclusive);
310+
311+ ASSERT_EQ (ResultOk, client.createProducer (topicName, producerConfiguration1, producer1));
312+
313+ ASSERT_EQ (ResultOk, producer1.send (MessageBuilder ().setContent (" content" ).build ()));
314+
315+ Producer producer2;
316+ ProducerConfiguration producerConfiguration2;
317+ producerConfiguration2.setProducerName (" p-name-2" );
318+ producerConfiguration2.setAccessMode (ProducerConfiguration::WaitForExclusive);
319+
320+ Latch latch (1 );
321+ client.createProducerAsync (topicName, producerConfiguration2,
322+ [&latch, &producer2](Result res, Producer producer) {
323+ ASSERT_EQ (ResultOk, res);
324+ latch.countdown ();
325+ producer2 = producer;
326+ });
327+
328+ // when p1 close, p2 success created.
329+ producer1.close ();
330+ latch.wait ();
331+ ASSERT_EQ (ResultOk, producer2.send (MessageBuilder ().setContent (" content" ).build ()));
332+
333+ producer2.close ();
334+ }
335+
299336TEST_P (ProducerTest, testFlushNoBatch) {
300337 Client client (serviceUrl);
301338
0 commit comments