88-module (rabbit_db_binding_SUITE ).
99
1010-include_lib (" rabbit_common/include/rabbit.hrl" ).
11+ -include_lib (" common_test/include/ct.hrl" ).
1112-include_lib (" eunit/include/eunit.hrl" ).
1213
1314-export ([all /0 ,
2122
2223 create /1 , create1 /1 ,
2324 exists /1 , exists1 /1 ,
24- delete /1 , delete1 / 1 ,
25- auto_delete /1 , auto_delete1 / 1 ,
25+ delete_v1 /1 , delete_v2 / 1 , delete1 / 2 ,
26+ auto_delete_v1 /1 , auto_delete_v2 / 1 , auto_delete1 / 2 ,
2627 get_all /1 , get_all1 /1 ,
2728 get_all_by_vhost /1 , get_all_by_vhost1 /1 ,
2829 get_all_for_source /1 , get_all_for_source1 /1 ,
3334 get_all_for_source_and_destination_reverse1 /1 ,
3435 fold /1 , fold1 /1 ,
3536 match /1 , match1 /1 ,
36- match_routing_key /1 , match_routing_key1 /1
37+ match_routing_key /1 , match_routing_key1 /1 ,
38+ replaced_delete_queue_transaction /1 ,
39+ replaced_delete_queue_transaction1 /1
3740 ]).
3841
3942-define (VHOST , <<" /" >>).
@@ -47,15 +50,18 @@ all() ->
4750groups () ->
4851 [
4952 {all_tests , [], all_tests ()},
50- {feature_flags , [], [replaced_delete_queue_transaction ]}
53+ {feature_flags , [],
54+ [delete_v1 ,
55+ delete_v2 ,
56+ auto_delete_v1 ,
57+ auto_delete_v2 ,
58+ replaced_delete_queue_transaction ]}
5159 ].
5260
5361all_tests () ->
5462 [
5563 create ,
5664 exists ,
57- delete ,
58- auto_delete ,
5965 get_all ,
6066 get_all_by_vhost ,
6167 get_all_for_source ,
@@ -101,7 +107,16 @@ end_per_group(_Group, Config) ->
101107 rabbit_ct_broker_helpers :teardown_steps ()).
102108
103109init_per_testcase (Testcase , Config ) ->
104- rabbit_ct_helpers :testcase_started (Config , Testcase ).
110+ rabbit_ct_helpers :testcase_started (Config , Testcase ),
111+ case lists :member ({name , feature_flags }, ? config (tc_group_properties , Config )) of
112+ true ->
113+ ok = rabbit_ct_broker_helpers :stop_broker (Config , 0 ),
114+ ok = rabbit_ct_broker_helpers :reset_node (Config , 0 ),
115+ ok = rabbit_ct_broker_helpers :start_broker (Config , 0 );
116+ false ->
117+ ok
118+ end ,
119+ Config .
105120
106121end_per_testcase (Testcase , Config ) ->
107122 rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_db_exchange , clear , []),
@@ -150,10 +165,28 @@ exists1(_Config) ->
150165 ? assertEqual (true , rabbit_db_binding :exists (Binding )),
151166 passed .
152167
153- delete (Config ) ->
154- passed = rabbit_ct_broker_helpers :rpc (Config , 0 , ? MODULE , delete1 , [Config ]).
155-
156- delete1 (_Config ) ->
168+ delete_v1 (Config ) ->
169+ passed = rabbit_ct_broker_helpers :rpc (Config , 0 , ? MODULE , delete1 , [Config , v1 ]).
170+
171+ delete_v2 (Config ) ->
172+ Ret = rabbit_ct_broker_helpers :enable_feature_flag (
173+ Config , replaced_delete_queue_transaction ),
174+ case Ret of
175+ ok ->
176+ passed = rabbit_ct_broker_helpers :rpc (Config , 0 , ? MODULE , delete1 , [Config , v2 ]);
177+ {skip , _ } = Skip ->
178+ Skip
179+ end .
180+
181+ delete1 (_Config , Version ) ->
182+ case Version of
183+ v1 ->
184+ ? assertNot (
185+ rabbit_feature_flags :is_enabled (replaced_delete_queue_transaction ));
186+ v2 ->
187+ ? assert (
188+ rabbit_feature_flags :is_enabled (replaced_delete_queue_transaction ))
189+ end ,
157190 XName1 = rabbit_misc :r (? VHOST , exchange , <<" test-exchange1" >>),
158191 XName2 = rabbit_misc :r (? VHOST , exchange , <<" test-exchange2" >>),
159192 Exchange1 = # exchange {name = XName1 , durable = true , auto_delete = false , decorators = {[], []}},
@@ -171,10 +204,28 @@ delete1(_Config) ->
171204 ? assertEqual (false , rabbit_db_binding :exists (Binding )),
172205 passed .
173206
174- auto_delete (Config ) ->
175- passed = rabbit_ct_broker_helpers :rpc (Config , 0 , ? MODULE , auto_delete1 , [Config ]).
176-
177- auto_delete1 (_Config ) ->
207+ auto_delete_v1 (Config ) ->
208+ passed = rabbit_ct_broker_helpers :rpc (Config , 0 , ? MODULE , auto_delete1 , [Config , v1 ]).
209+
210+ auto_delete_v2 (Config ) ->
211+ Ret = rabbit_ct_broker_helpers :enable_feature_flag (
212+ Config , replaced_delete_queue_transaction ),
213+ case Ret of
214+ ok ->
215+ passed = rabbit_ct_broker_helpers :rpc (Config , 0 , ? MODULE , auto_delete1 , [Config , v2 ]);
216+ {skip , _ } = Skip ->
217+ Skip
218+ end .
219+
220+ auto_delete1 (_Config , Version ) ->
221+ case Version of
222+ v1 ->
223+ ? assertNot (
224+ rabbit_feature_flags :is_enabled (replaced_delete_queue_transaction ));
225+ v2 ->
226+ ? assert (
227+ rabbit_feature_flags :is_enabled (replaced_delete_queue_transaction ))
228+ end ,
178229 XName1 = rabbit_misc :r (? VHOST , exchange , <<" test-exchange1" >>),
179230 XName2 = rabbit_misc :r (? VHOST , exchange , <<" test-exchange2" >>),
180231 Exchange1 = # exchange {name = XName1 , durable = true , auto_delete = true , decorators = {[], []}},
0 commit comments