@@ -59,6 +59,7 @@ groups() ->
59
59
vhost_deletion ,
60
60
force_delete_if_no_master ,
61
61
promote_on_shutdown ,
62
+ promote_on_failure ,
62
63
slave_recovers_after_vhost_failure ,
63
64
slave_recovers_after_vhost_down_an_up ,
64
65
master_migrates_on_vhost_down ,
@@ -287,6 +288,40 @@ force_delete_if_no_master(Config) ->
287
288
amqp_channel :call (BCh3 , # 'queue.delete' {queue = <<" ha.nopromote.test2" >>}),
288
289
ok .
289
290
291
+ promote_on_failure (Config ) ->
292
+ [A , B ] = rabbit_ct_broker_helpers :get_node_configs (Config , nodename ),
293
+ rabbit_ct_broker_helpers :set_ha_policy (Config , A , <<" ^ha.promote" >>,
294
+ <<" all" >>, [{<<" ha-promote-on-failure" >>, <<" always" >>}]),
295
+ rabbit_ct_broker_helpers :set_ha_policy (Config , A , <<" ^ha.nopromote" >>,
296
+ <<" all" >>, [{<<" ha-promote-on-failure" >>, <<" when-synced" >>}]),
297
+
298
+ ACh = rabbit_ct_client_helpers :open_channel (Config , A ),
299
+ [begin
300
+ amqp_channel :call (ACh , # 'queue.declare' {queue = Q ,
301
+ durable = true }),
302
+ rabbit_ct_client_helpers :publish (ACh , Q , 10 )
303
+ end || Q <- [<<" ha.promote.test" >>, <<" ha.nopromote.test" >>]],
304
+ ok = rabbit_ct_broker_helpers :restart_node (Config , B ),
305
+ ok = rabbit_ct_broker_helpers :kill_node (Config , A ),
306
+ BCh = rabbit_ct_client_helpers :open_channel (Config , B ),
307
+ # 'queue.declare_ok' {message_count = 0 } =
308
+ amqp_channel :call (
309
+ BCh , # 'queue.declare' {queue = <<" ha.promote.test" >>,
310
+ durable = true }),
311
+ ? assertExit (
312
+ {{shutdown , {server_initiated_close , 404 , _ }}, _ },
313
+ amqp_channel :call (
314
+ BCh , # 'queue.declare' {queue = <<" ha.nopromote.test" >>,
315
+ durable = true })),
316
+ ok = rabbit_ct_broker_helpers :start_node (Config , A ),
317
+ ACh2 = rabbit_ct_client_helpers :open_channel (Config , A ),
318
+ # 'queue.declare_ok' {message_count = 10 } =
319
+ amqp_channel :call (
320
+ ACh2 , # 'queue.declare' {queue = <<" ha.nopromote.test" >>,
321
+ durable = true }),
322
+ ok .
323
+
324
+
290
325
promote_on_shutdown (Config ) ->
291
326
[A , B ] = rabbit_ct_broker_helpers :get_node_configs (Config , nodename ),
292
327
rabbit_ct_broker_helpers :set_ha_policy (Config , A , <<" ^ha.promote" >>,
0 commit comments