@@ -45,7 +45,9 @@ all_tests() ->
4545 flow ,
4646 test_queries ,
4747 duplicate_delivery ,
48- usage
48+ usage ,
49+
50+ missing_messages_order
4951 ].
5052
5153groups () ->
@@ -296,6 +298,48 @@ usage(Config) ->
296298 ? assert (Use > 0.0 ),
297299 ok .
298300
301+ missing_messages_order (Config ) ->
302+ ClusterName = ? config (cluster_name , Config ),
303+ ServerId = ? config (node_id , Config ),
304+ UId = ? config (uid , Config ),
305+ Tag = UId ,
306+ ok = start_cluster (ClusterName , [ServerId ]),
307+ F1 = rabbit_fifo_client :init ([ServerId ]),
308+ {empty , F3 } = rabbit_fifo_client :dequeue (ClusterName , Tag , settled , F1 ),
309+
310+ {ok , F4 , []} = rabbit_fifo_client :enqueue (ClusterName , msg1 , F3 ),
311+ {_ , _ , F5 } = process_ra_events (receive_ra_events (1 , 0 ), ClusterName , F4 ),
312+
313+ {ok , F6 , []} = rabbit_fifo_client :enqueue (ClusterName , msg2 , F5 ),
314+ {_ , _ , F7 } = process_ra_events (receive_ra_events (1 , 0 ), ClusterName , F6 ),
315+
316+ {ok , F8 , []} = rabbit_fifo_client :enqueue (ClusterName , msg3 , F7 ),
317+ {_ , _ , F9 } = process_ra_events (receive_ra_events (1 , 0 ), ClusterName , F8 ),
318+
319+ FC = rabbit_fifo_client :init ([ServerId ]),
320+ {ok , _ , FC3 } = rabbit_fifo_client :checkout (Tag , {simple_prefetch , 10 }, #{}, FC ),
321+
322+ {ok , F10 , []} = rabbit_fifo_client :enqueue (ClusterName , msg4 , F9 ),
323+ {_ , E , F11 }= process_ra_events (receive_ra_events (1 , 0 ), ClusterName , F10 ),
324+
325+ receive
326+ {ra_event , Qname , Evt1 } = Msg ->
327+ {ok , FC3b , Actions1 } =
328+ rabbit_fifo_client :handle_ra_event (Qname , Qname , Evt1 , FC3 ),
329+ [{deliver , _ , true ,
330+ [{_ ,
331+ missing_messages_order ,0 ,false ,msg1 },
332+ {_ ,
333+ missing_messages_order ,1 ,false ,msg2 },
334+ {_ ,
335+ missing_messages_order ,2 ,false ,msg3 },
336+ {_ ,
337+ missing_messages_order ,3 ,false ,msg4 }]}] = Actions1
338+ after ? TIMEOUT ->
339+ flush (),
340+ exit (await_delivery_timeout )
341+ end .
342+
299343resends_lost_command (Config ) ->
300344 ClusterName = ? config (cluster_name , Config ),
301345 ServerId = ? config (node_id , Config ),
0 commit comments