feat(psk): manage mria tables explicitly during startup

Also switch test suite to `emqx_cth_suite` tooling.
This commit is contained in:
Andrew Mayorov 2024-01-30 20:58:35 +01:00
parent b07df487f0
commit 82a4e6ef68
No known key found for this signature in database
GPG Key ID: 2837C62ACFBFED5D
5 changed files with 25 additions and 32 deletions

View File

@ -2,7 +2,7 @@
{application, emqx_psk, [
{description, "EMQX PSK"},
% strict semver, bump manually!
{vsn, "5.0.5"},
{vsn, "5.0.6"},
{modules, []},
{registered, [emqx_psk_sup]},
{applications, [kernel, stdlib]},

View File

@ -32,6 +32,7 @@
]).
-export([
create_tables/0,
start_link/0,
stop/0
]).
@ -63,10 +64,6 @@
extra :: term()
}).
-export([mnesia/1]).
-boot_mnesia({mnesia, [boot]}).
-include("emqx_psk.hrl").
-define(CR, 13).
@ -81,8 +78,8 @@
%%------------------------------------------------------------------------------
%% @doc Create or replicate tables.
-spec mnesia(boot | copy) -> ok.
mnesia(boot) ->
-spec create_tables() -> [mria:table()].
create_tables() ->
ok = mria:create_table(?TAB, [
{rlog_shard, ?PSK_SHARD},
{type, ordered_set},
@ -90,7 +87,8 @@ mnesia(boot) ->
{record_name, psk_entry},
{attributes, record_info(fields, psk_entry)},
{storage_properties, [{ets, [{read_concurrency, true}]}]}
]).
]),
[?TAB].
%%------------------------------------------------------------------------------
%% Data backup

View File

@ -26,7 +26,7 @@
-include("emqx_psk.hrl").
start(_Type, _Args) ->
ok = mria:wait_for_tables([?TAB]),
ok = mria:wait_for_tables(emqx_psk:create_tables()),
emqx_conf:add_handler([?PSK_KEY], emqx_psk),
{ok, Sup} = emqx_psk_sup:start_link(),
{ok, Sup}.

View File

@ -34,30 +34,25 @@ groups() ->
].
init_per_suite(Config) ->
meck:new(emqx_config, [non_strict, passthrough, no_history, no_link]),
meck:expect(emqx_config, get, fun
([psk_authentication, enable]) -> true;
([psk_authentication, chunk_size]) -> 50;
(KeyPath) -> meck:passthrough([KeyPath])
end),
meck:expect(emqx_config, get, fun
([psk_authentication, init_file], _) ->
filename:join([
code:lib_dir(emqx_psk, test),
"data/init.psk"
]);
([psk_authentication, separator], _) ->
<<":">>;
(KeyPath, Default) ->
meck:passthrough([KeyPath, Default])
end),
emqx_common_test_helpers:start_apps([emqx_psk]),
Config.
Apps = emqx_cth_suite:start(
[
emqx,
{emqx_psk, #{
config => #{
psk_authentication => #{
enable => true,
init_file => filename:join(?config(data_dir, Config), "init.psk"),
separator => <<":">>
}
}
}}
],
#{work_dir => emqx_cth_suite:work_dir(Config)}
),
[{suite_apps, Apps} | Config].
end_per_suite(_) ->
meck:unload(emqx_config),
emqx_common_test_helpers:stop_apps([emqx_psk]),
ok.
end_per_suite(Config) ->
ok = emqx_cth_suite:stop(?config(suite_apps, Config)).
t_psk_lookup(_) ->
PSKIdentity1 = <<"myclient1">>,