diff --git a/apps/emqx/src/emqx_schema.erl b/apps/emqx/src/emqx_schema.erl index 0faab7c1e..bbfef19a2 100644 --- a/apps/emqx/src/emqx_schema.erl +++ b/apps/emqx/src/emqx_schema.erl @@ -61,8 +61,11 @@ structs() -> ["cluster", "node", "rpc", "log", "lager", "zones", "listeners", "broker", "plugins", "sysmon", "alarm"] - ++ includes(). + ++ ?MODULE:includes(). +-ifdef(TEST). +includes() ->[]. +-else. includes() -> [ "emqx_data_bridge" , "emqx_telemetry" @@ -75,6 +78,7 @@ includes() -> , "emqx_management" , "emqx_gateway" ]. +-endif. fields("cluster") -> [ {"name", t(atom(), "ekka.cluster_name", emqxcl)} diff --git a/apps/emqx_authz/test/emqx_authz_api_SUITE.erl b/apps/emqx_authz/test/emqx_authz_api_SUITE.erl index 3cd080ce2..810d867d3 100644 --- a/apps/emqx_authz/test/emqx_authz_api_SUITE.erl +++ b/apps/emqx_authz/test/emqx_authz_api_SUITE.erl @@ -43,6 +43,10 @@ groups() -> []. init_per_suite(Config) -> + %% important! let emqx_schema include the current app! + meck:new(emqx_schema, [non_strict, passthrough, no_history, no_link]), + meck:expect(emqx_schema, includes, fun() -> ["emqx_authz"] end ), + ok = emqx_ct_helpers:start_apps([emqx_authz, emqx_management], fun set_special_configs/1), create_default_app(), Config. @@ -50,6 +54,7 @@ init_per_suite(Config) -> end_per_suite(_Config) -> delete_default_app(), file:delete(filename:join(emqx:get_env(plugins_etc_dir), 'authz.conf')), + meck:unload(emqx_schema), emqx_ct_helpers:stop_apps([emqx_authz, emqx_management]). set_special_configs(emqx) -> diff --git a/apps/emqx_authz/test/emqx_authz_mongo_SUITE.erl b/apps/emqx_authz/test/emqx_authz_mongo_SUITE.erl index 15357d186..c2e17f433 100644 --- a/apps/emqx_authz/test/emqx_authz_mongo_SUITE.erl +++ b/apps/emqx_authz/test/emqx_authz_mongo_SUITE.erl @@ -31,6 +31,11 @@ groups() -> init_per_suite(Config) -> meck:new(emqx_resource, [non_strict, passthrough, no_history, no_link]), meck:expect(emqx_resource, create, fun(_, _, _) -> {ok, meck_data} end ), + + %% important! let emqx_schema include the current app! + meck:new(emqx_schema, [non_strict, passthrough, no_history, no_link]), + meck:expect(emqx_schema, includes, fun() -> ["emqx_authz"] end ), + ok = emqx_ct_helpers:start_apps([emqx_authz]), ct:pal("---- emqx_hooks: ~p", [ets:tab2list(emqx_hooks)]), ok = emqx_config:update_config([zones, default, acl, cache, enable], false), @@ -52,6 +57,7 @@ init_per_suite(Config) -> end_per_suite(_Config) -> file:delete(filename:join(emqx:get_env(plugins_etc_dir), 'authz.conf')), emqx_ct_helpers:stop_apps([emqx_authz, emqx_resource]), + meck:unload(emqx_schema), meck:unload(emqx_resource). -define(RULE1,[#{<<"topics">> => [<<"#">>], diff --git a/apps/emqx_authz/test/emqx_authz_mysql_SUITE.erl b/apps/emqx_authz/test/emqx_authz_mysql_SUITE.erl index e93b3dee0..a668352cd 100644 --- a/apps/emqx_authz/test/emqx_authz_mysql_SUITE.erl +++ b/apps/emqx_authz/test/emqx_authz_mysql_SUITE.erl @@ -29,6 +29,10 @@ groups() -> []. init_per_suite(Config) -> + %% important! let emqx_schema include the current app! + meck:new(emqx_schema, [non_strict, passthrough, no_history, no_link]), + meck:expect(emqx_schema, includes, fun() -> ["emqx_authz"] end ), + meck:new(emqx_resource, [non_strict, passthrough, no_history, no_link]), meck:expect(emqx_resource, create, fun(_, _, _) -> {ok, meck_data} end ), ok = emqx_ct_helpers:start_apps([emqx_authz]), @@ -52,6 +56,7 @@ init_per_suite(Config) -> end_per_suite(_Config) -> file:delete(filename:join(emqx:get_env(plugins_etc_dir), 'authz.conf')), emqx_ct_helpers:stop_apps([emqx_authz, emqx_resource]), + meck:unload(emqx_schema), meck:unload(emqx_resource). -define(COLUMNS, [ <<"ipaddress">> diff --git a/apps/emqx_authz/test/emqx_authz_pgsql_SUITE.erl b/apps/emqx_authz/test/emqx_authz_pgsql_SUITE.erl index 46313665e..4049dc531 100644 --- a/apps/emqx_authz/test/emqx_authz_pgsql_SUITE.erl +++ b/apps/emqx_authz/test/emqx_authz_pgsql_SUITE.erl @@ -29,6 +29,10 @@ groups() -> []. init_per_suite(Config) -> + %% important! let emqx_schema include the current app! + meck:new(emqx_schema, [non_strict, passthrough, no_history, no_link]), + meck:expect(emqx_schema, includes, fun() -> ["emqx_authz"] end ), + meck:new(emqx_resource, [non_strict, passthrough, no_history, no_link]), meck:expect(emqx_resource, create, fun(_, _, _) -> {ok, meck_data} end ), ok = emqx_ct_helpers:start_apps([emqx_authz]), @@ -51,6 +55,7 @@ init_per_suite(Config) -> end_per_suite(_Config) -> file:delete(filename:join(emqx:get_env(plugins_etc_dir), 'authz.conf')), emqx_ct_helpers:stop_apps([emqx_authz, emqx_resource]), + meck:unload(emqx_schema), meck:unload(emqx_resource). -define(COLUMNS, [ {column, <<"ipaddress">>, meck, meck, meck, meck, meck, meck, meck} diff --git a/apps/emqx_authz/test/emqx_authz_redis_SUITE.erl b/apps/emqx_authz/test/emqx_authz_redis_SUITE.erl index c1e4c199a..efeeaea75 100644 --- a/apps/emqx_authz/test/emqx_authz_redis_SUITE.erl +++ b/apps/emqx_authz/test/emqx_authz_redis_SUITE.erl @@ -29,6 +29,10 @@ groups() -> []. init_per_suite(Config) -> + %% important! let emqx_schema include the current app! + meck:new(emqx_schema, [non_strict, passthrough, no_history, no_link]), + meck:expect(emqx_schema, includes, fun() -> ["emqx_authz"] end ), + meck:new(emqx_resource, [non_strict, passthrough, no_history, no_link]), meck:expect(emqx_resource, create, fun(_, _, _) -> {ok, meck_data} end ), ok = emqx_ct_helpers:start_apps([emqx_authz]), @@ -50,6 +54,7 @@ init_per_suite(Config) -> end_per_suite(_Config) -> file:delete(filename:join(emqx:get_env(plugins_etc_dir), 'authz.conf')), emqx_ct_helpers:stop_apps([emqx_authz, emqx_resource]), + meck:unload(emqx_schema), meck:unload(emqx_resource). -define(RULE1, [<<"test/%u">>, <<"publish">>]).