@@ -225,6 +225,7 @@ pub mod reader;
225225mod retry_op;
226226pub mod routing_policy;
227227mod service_discovery;
228+ mod test_utils;
228229
229230#[ cfg( all(
230231 any(
@@ -248,7 +249,7 @@ mod tests {
248249
249250 use assert_matches:: assert_matches;
250251 use futures:: { future:: try_join_all, StreamExt } ;
251- use log:: { LevelFilter , Metadata , Record } ;
252+ use log:: { Metadata , Record } ;
252253 use serde_json:: Value ;
253254 #[ cfg( any(
254255 feature = "tokio-runtime" ,
@@ -263,7 +264,6 @@ mod tests {
263264 feature = "tokio-rustls-runtime-aws-lc-rs" ,
264265 feature = "tokio-rustls-runtime-ring"
265266 ) ) ]
266- use crate :: executor:: TokioExecutor ;
267267 use crate :: {
268268 client:: SerializeMessage ,
269269 consumer:: { InitialPosition , Message } ,
@@ -332,11 +332,7 @@ mod tests {
332332 feature = "tokio-rustls-runtime-ring"
333333 ) ) ]
334334 async fn round_trip ( ) {
335- let _result = log:: set_logger ( & TEST_LOGGER ) ;
336- log:: set_max_level ( LevelFilter :: Debug ) ;
337-
338- let addr = "pulsar://127.0.0.1:6650" ;
339- let pulsar: Pulsar < _ > = Pulsar :: builder ( addr, TokioExecutor ) . build ( ) . await . unwrap ( ) ;
335+ let pulsar = test_utils:: new_pulsar ( ) . await ;
340336
341337 // random topic to better allow multiple test runs while debugging
342338 let topic = format ! ( "test_{}" , rand:: random:: <u16 >( ) ) ;
@@ -401,12 +397,8 @@ mod tests {
401397 feature = "tokio-rustls-runtime-ring"
402398 ) ) ]
403399 async fn unsized_data ( ) {
404- let _result = log:: set_logger ( & TEST_LOGGER ) ;
405- log:: set_max_level ( LevelFilter :: Debug ) ;
406-
407- let addr = "pulsar://127.0.0.1:6650" ;
400+ let pulsar = test_utils:: new_pulsar ( ) . await ;
408401 let test_id: u16 = rand:: random ( ) ;
409- let pulsar: Pulsar < _ > = Pulsar :: builder ( addr, TokioExecutor ) . build ( ) . await . unwrap ( ) ;
410402
411403 // test &str
412404 {
@@ -491,13 +483,8 @@ mod tests {
491483 feature = "tokio-rustls-runtime-ring"
492484 ) ) ]
493485 async fn redelivery ( ) {
494- let _result = log:: set_logger ( & TEST_LOGGER ) ;
495- log:: set_max_level ( LevelFilter :: Debug ) ;
496-
497- let addr = "pulsar://127.0.0.1:6650" ;
486+ let pulsar = test_utils:: new_pulsar ( ) . await ;
498487 let topic = format ! ( "test_redelivery_{}" , rand:: random:: <u16 >( ) ) ;
499-
500- let pulsar: Pulsar < _ > = Pulsar :: builder ( addr, TokioExecutor ) . build ( ) . await . unwrap ( ) ;
501488 pulsar
502489 . send ( & topic, String :: from ( "data" ) )
503490 . await
@@ -545,13 +532,8 @@ mod tests {
545532 async fn batching ( ) {
546533 use assert_matches:: assert_matches;
547534
548- let _result = log:: set_logger ( & TEST_LOGGER ) ;
549- log:: set_max_level ( LevelFilter :: Debug ) ;
550-
551- let addr = "pulsar://127.0.0.1:6650" ;
535+ let pulsar = test_utils:: new_pulsar ( ) . await ;
552536 let topic = format ! ( "test_batching_{}" , rand:: random:: <u16 >( ) ) ;
553-
554- let pulsar: Pulsar < _ > = Pulsar :: builder ( addr, TokioExecutor ) . build ( ) . await . unwrap ( ) ;
555537 let mut consumer: Consumer < String , _ > =
556538 pulsar. consumer ( ) . with_topic ( & topic) . build ( ) . await . unwrap ( ) ;
557539
@@ -677,13 +659,8 @@ mod tests {
677659 feature = "tokio-rustls-runtime-ring"
678660 ) ) ]
679661 async fn flush ( ) {
680- let _result = log:: set_logger ( & TEST_LOGGER ) ;
681- log:: set_max_level ( LevelFilter :: Debug ) ;
682-
683- let addr = "pulsar://127.0.0.1:6650" ;
662+ let pulsar = test_utils:: new_pulsar ( ) . await ;
684663 let topic = format ! ( "test_flush_{}" , rand:: random:: <u16 >( ) ) ;
685-
686- let pulsar: Pulsar < _ > = Pulsar :: builder ( addr, TokioExecutor ) . build ( ) . await . unwrap ( ) ;
687664 let mut consumer: Consumer < String , _ > =
688665 pulsar. consumer ( ) . with_topic ( & topic) . build ( ) . await . unwrap ( ) ;
689666 let mut producer =
@@ -825,4 +802,33 @@ mod tests {
825802 panic ! ( "No publishers in the stats" ) ;
826803 }
827804 }
805+
806+ #[ tokio:: test]
807+ async fn flush_on_partitioned_topic ( ) {
808+ let pulsar = test_utils:: new_pulsar ( ) . await ;
809+ let topic = format ! ( "test_flush_on_part_topic_{}" , rand:: random:: <u16 >( ) ) ;
810+
811+ const NUM_PARTITIONS : u32 = 2 ;
812+ test_utils:: create_partitioned_topic ( "public" , "default" , & topic, NUM_PARTITIONS ) . await ;
813+ let mut producer =
814+ create_batched_producer ( pulsar. clone ( ) , & topic, Some ( 2 ) , None , None ) . await ;
815+ let send_future = producer. send_non_blocking ( "msg" ) . await . unwrap ( ) ;
816+ producer. send_batch ( ) . await . unwrap ( ) ;
817+
818+ let msg_id = send_future. await . unwrap ( ) . message_id . unwrap ( ) ;
819+ for i in 0 ..NUM_PARTITIONS {
820+ let mut reader = pulsar
821+ . reader ( )
822+ . with_topic ( format ! ( "{}-partition-{}" , topic, i) )
823+ . build :: < String > ( )
824+ . await
825+ . unwrap ( ) ;
826+ let last_msg_ids = reader. get_last_message_id ( ) . await . unwrap ( ) ;
827+ let last_msg_id = last_msg_ids. first ( ) . unwrap ( ) ;
828+ if last_msg_id. ledger_id != u64:: MAX && last_msg_id. entry_id != u64:: MAX {
829+ assert_eq ! ( last_msg_id. ledger_id, msg_id. ledger_id) ;
830+ assert_eq ! ( last_msg_id. entry_id, msg_id. entry_id) ;
831+ }
832+ }
833+ }
828834}
0 commit comments