Skip to content

Commit 10f1ea1

Browse files
committed
Don't use Mnesia in rabbitmq_mqtt/test/processor_SUITE
Soon Mnesia will be gone from RabbitMQ, so better make the test suite metadata store agnostic.
1 parent 6acc2b1 commit 10f1ea1

File tree

1 file changed

+42
-49
lines changed

1 file changed

+42
-49
lines changed

deps/rabbitmq_mqtt/test/processor_SUITE.erl

Lines changed: 42 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -31,30 +31,15 @@ suite() ->
3131

3232
init_per_suite(Config) ->
3333
ok = application:load(rabbitmq_mqtt),
34+
meck:new(rabbit_runtime_parameters, [passthrough, no_link]),
3435
Config.
3536
end_per_suite(Config) ->
3637
ok = application:unload(rabbitmq_mqtt),
38+
meck:unload(rabbit_runtime_parameters),
3739
Config.
3840
init_per_group(_, Config) -> Config.
3941
end_per_group(_, Config) -> Config.
40-
init_per_testcase(get_vhost, Config) ->
41-
mnesia:start(),
42-
mnesia:create_table(rabbit_runtime_parameters, [
43-
{attributes, record_info(fields, runtime_parameters)},
44-
{record_name, runtime_parameters}]),
45-
meck:new(rabbit_feature_flags, [passthrough, no_link]),
46-
meck:expect(
47-
rabbit_feature_flags, is_enabled,
48-
fun
49-
(khepri_db, _) -> false;
50-
(FeatureNames, _) -> meck:passthrough([FeatureNames])
51-
end),
52-
Config;
5342
init_per_testcase(_, Config) -> Config.
54-
end_per_testcase(get_vhost, Config) ->
55-
meck:unload(rabbit_feature_flags),
56-
mnesia:stop(),
57-
Config;
5843
end_per_testcase(_, Config) -> Config.
5944

6045
ignore_colons(B) -> application:set_env(rabbitmq_mqtt, ignore_colons_in_username, B).
@@ -150,26 +135,32 @@ get_vhost(_Config) ->
150135

151136
%% certificate user, port/vhost parameter but no mapping, cert/vhost mapping
152137
%% should use cert/vhost mapping
153-
set_global_parameter(mqtt_default_vhosts, [
154-
{<<"O=client,CN=dummy">>, <<"somevhost">>},
155-
{<<"O=client,CN=otheruser">>, <<"othervhost">>}
156-
]),
157-
set_global_parameter(mqtt_port_to_vhost_mapping, [
158-
{<<"1884">>, <<"othervhost">>}
159-
]),
138+
set_global_parameters(
139+
[{mqtt_default_vhosts,
140+
[
141+
{<<"O=client,CN=dummy">>, <<"somevhost">>},
142+
{<<"O=client,CN=otheruser">>, <<"othervhost">>}
143+
]},
144+
{mqtt_port_to_vhost_mapping,
145+
[
146+
{<<"1884">>, <<"othervhost">>}
147+
]}]),
160148
{_, {<<"somevhost">>, <<"guest">>}} = rabbit_mqtt_processor:get_vhost(<<"guest">>, <<"O=client,CN=dummy">>, 1883),
161149
clear_vhost_global_parameters(),
162150

163151
%% certificate user, port/vhost parameter, cert/vhost parameter
164152
%% cert/vhost parameter takes precedence
165-
set_global_parameter(mqtt_default_vhosts, [
166-
{<<"O=client,CN=dummy">>, <<"cert-somevhost">>},
167-
{<<"O=client,CN=otheruser">>, <<"othervhost">>}
168-
]),
169-
set_global_parameter(mqtt_port_to_vhost_mapping, [
170-
{<<"1883">>, <<"port-vhost">>},
171-
{<<"1884">>, <<"othervhost">>}
172-
]),
153+
set_global_parameters(
154+
[{mqtt_default_vhosts,
155+
[
156+
{<<"O=client,CN=dummy">>, <<"cert-somevhost">>},
157+
{<<"O=client,CN=otheruser">>, <<"othervhost">>}
158+
]},
159+
{mqtt_port_to_vhost_mapping,
160+
[
161+
{<<"1883">>, <<"port-vhost">>},
162+
{<<"1884">>, <<"othervhost">>}
163+
]}]),
173164
{_, {<<"cert-somevhost">>, <<"guest">>}} = rabbit_mqtt_processor:get_vhost(<<"guest">>, <<"O=client,CN=dummy">>, 1883),
174165
clear_vhost_global_parameters(),
175166

@@ -179,28 +170,30 @@ get_vhost(_Config) ->
179170

180171
%% not a certificate user, port/vhost parameter, cert/vhost parameter
181172
%% port/vhost mapping is used, as cert/vhost should not be used
182-
set_global_parameter(mqtt_default_vhosts, [
183-
{<<"O=cert">>, <<"cert-somevhost">>},
184-
{<<"O=client,CN=otheruser">>, <<"othervhost">>}
185-
]),
186-
set_global_parameter(mqtt_port_to_vhost_mapping, [
187-
{<<"1883">>, <<"port-vhost">>},
188-
{<<"1884">>, <<"othervhost">>}
189-
]),
173+
set_global_parameters(
174+
[{mqtt_default_vhosts,
175+
[
176+
{<<"O=cert">>, <<"cert-somevhost">>},
177+
{<<"O=client,CN=otheruser">>, <<"othervhost">>}
178+
]},
179+
{mqtt_port_to_vhost_mapping,
180+
[
181+
{<<"1883">>, <<"port-vhost">>},
182+
{<<"1884">>, <<"othervhost">>}
183+
]}]),
190184
{_, {<<"port-vhost">>, <<"guest">>}} = rabbit_mqtt_processor:get_vhost(<<"guest">>, none, 1883),
191185
clear_vhost_global_parameters(),
192186
ok.
193187

194188
set_global_parameter(Key, Term) ->
195-
InsertParameterFun = fun () ->
196-
mnesia:write(rabbit_runtime_parameters, #runtime_parameters{key = Key, value = Term}, write)
197-
end,
189+
set_global_parameters([{Key, Term}]).
198190

199-
{atomic, ok} = mnesia:transaction(InsertParameterFun).
191+
set_global_parameters(KVList) ->
192+
meck:expect(
193+
rabbit_runtime_parameters, value_global,
194+
fun(Key) -> proplists:get_value(Key, KVList, not_found) end).
200195

201196
clear_vhost_global_parameters() ->
202-
DeleteParameterFun = fun () ->
203-
ok = mnesia:delete(rabbit_runtime_parameters, mqtt_default_vhosts, write),
204-
ok = mnesia:delete(rabbit_runtime_parameters, mqtt_port_to_vhost_mapping, write)
205-
end,
206-
{atomic, ok} = mnesia:transaction(DeleteParameterFun).
197+
meck:expect(
198+
rabbit_runtime_parameters, value_global,
199+
fun(_) -> not_found end).

0 commit comments

Comments
 (0)