feat: add emqx_cover
This commit is contained in:
parent
93a93aee05
commit
55485f25b2
|
@ -2,12 +2,14 @@
|
||||||
%% Unless you know what you are doing, DO NOT edit manually!!
|
%% Unless you know what you are doing, DO NOT edit manually!!
|
||||||
{VSN,
|
{VSN,
|
||||||
[{"4.4.11",
|
[{"4.4.11",
|
||||||
[{load_module,emqx_relup,brutal_purge,soft_purge,[]},
|
[{add_module,emqx_cover},
|
||||||
|
{load_module,emqx_relup,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_channel,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_channel,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.4.10",
|
{"4.4.10",
|
||||||
[{add_module,emqx_ocsp_cache},
|
[{add_module,emqx_cover},
|
||||||
|
{add_module,emqx_ocsp_cache},
|
||||||
{add_module,emqx_crl_cache},
|
{add_module,emqx_crl_cache},
|
||||||
{add_module,emqx_const_v1},
|
{add_module,emqx_const_v1},
|
||||||
{load_module,emqx_listeners,brutal_purge,soft_purge,[]},
|
{load_module,emqx_listeners,brutal_purge,soft_purge,[]},
|
||||||
|
@ -23,7 +25,8 @@
|
||||||
{load_module,emqx,brutal_purge,soft_purge,[]},
|
{load_module,emqx,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.4.9",
|
{"4.4.9",
|
||||||
[{add_module,emqx_ocsp_cache},
|
[{add_module,emqx_cover},
|
||||||
|
{add_module,emqx_ocsp_cache},
|
||||||
{add_module,emqx_crl_cache},
|
{add_module,emqx_crl_cache},
|
||||||
{add_module,emqx_const_v1},
|
{add_module,emqx_const_v1},
|
||||||
{add_module,emqx_secret},
|
{add_module,emqx_secret},
|
||||||
|
@ -46,7 +49,8 @@
|
||||||
{load_module,emqx_router,brutal_purge,soft_purge,[]},
|
{load_module,emqx_router,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.4.8",
|
{"4.4.8",
|
||||||
[{add_module,emqx_ocsp_cache},
|
[{add_module,emqx_cover},
|
||||||
|
{add_module,emqx_ocsp_cache},
|
||||||
{add_module,emqx_crl_cache},
|
{add_module,emqx_crl_cache},
|
||||||
{add_module,emqx_const_v1},
|
{add_module,emqx_const_v1},
|
||||||
{add_module,emqx_secret},
|
{add_module,emqx_secret},
|
||||||
|
@ -70,7 +74,8 @@
|
||||||
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_message,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_message,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.4.7",
|
{"4.4.7",
|
||||||
[{add_module,emqx_ocsp_cache},
|
[{add_module,emqx_cover},
|
||||||
|
{add_module,emqx_ocsp_cache},
|
||||||
{add_module,emqx_crl_cache},
|
{add_module,emqx_crl_cache},
|
||||||
{add_module,emqx_const_v1},
|
{add_module,emqx_const_v1},
|
||||||
{add_module,emqx_secret},
|
{add_module,emqx_secret},
|
||||||
|
@ -94,7 +99,8 @@
|
||||||
{load_module,emqx_channel,brutal_purge,soft_purge,[]},
|
{load_module,emqx_channel,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.4.6",
|
{"4.4.6",
|
||||||
[{add_module,emqx_ocsp_cache},
|
[{add_module,emqx_cover},
|
||||||
|
{add_module,emqx_ocsp_cache},
|
||||||
{add_module,emqx_crl_cache},
|
{add_module,emqx_crl_cache},
|
||||||
{add_module,emqx_const_v1},
|
{add_module,emqx_const_v1},
|
||||||
{add_module,emqx_secret},
|
{add_module,emqx_secret},
|
||||||
|
@ -118,7 +124,8 @@
|
||||||
{load_module,emqx_channel,brutal_purge,soft_purge,[]},
|
{load_module,emqx_channel,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.4.5",
|
{"4.4.5",
|
||||||
[{add_module,emqx_ocsp_cache},
|
[{add_module,emqx_cover},
|
||||||
|
{add_module,emqx_ocsp_cache},
|
||||||
{add_module,emqx_crl_cache},
|
{add_module,emqx_crl_cache},
|
||||||
{add_module,emqx_const_v1},
|
{add_module,emqx_const_v1},
|
||||||
{add_module,emqx_secret},
|
{add_module,emqx_secret},
|
||||||
|
@ -144,7 +151,8 @@
|
||||||
{load_module,emqx_channel,brutal_purge,soft_purge,[]},
|
{load_module,emqx_channel,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_session,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_session,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.4.4",
|
{"4.4.4",
|
||||||
[{add_module,emqx_ocsp_cache},
|
[{add_module,emqx_cover},
|
||||||
|
{add_module,emqx_ocsp_cache},
|
||||||
{add_module,emqx_crl_cache},
|
{add_module,emqx_crl_cache},
|
||||||
{add_module,emqx_const_v1},
|
{add_module,emqx_const_v1},
|
||||||
{add_module,emqx_secret},
|
{add_module,emqx_secret},
|
||||||
|
@ -177,7 +185,8 @@
|
||||||
{load_module,emqx_metrics,brutal_purge,soft_purge,[]},
|
{load_module,emqx_metrics,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_session,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_session,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.4.3",
|
{"4.4.3",
|
||||||
[{add_module,emqx_ocsp_cache},
|
[{add_module,emqx_cover},
|
||||||
|
{add_module,emqx_ocsp_cache},
|
||||||
{add_module,emqx_crl_cache},
|
{add_module,emqx_crl_cache},
|
||||||
{add_module,emqx_const_v1},
|
{add_module,emqx_const_v1},
|
||||||
{add_module,emqx_secret},
|
{add_module,emqx_secret},
|
||||||
|
@ -217,7 +226,8 @@
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_relup}]},
|
{load_module,emqx_relup}]},
|
||||||
{"4.4.2",
|
{"4.4.2",
|
||||||
[{add_module,emqx_ocsp_cache},
|
[{add_module,emqx_cover},
|
||||||
|
{add_module,emqx_ocsp_cache},
|
||||||
{add_module,emqx_crl_cache},
|
{add_module,emqx_crl_cache},
|
||||||
{add_module,emqx_const_v1},
|
{add_module,emqx_const_v1},
|
||||||
{add_module,emqx_secret},
|
{add_module,emqx_secret},
|
||||||
|
@ -258,7 +268,8 @@
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_relup}]},
|
{load_module,emqx_relup}]},
|
||||||
{"4.4.1",
|
{"4.4.1",
|
||||||
[{add_module,emqx_ocsp_cache},
|
[{add_module,emqx_cover},
|
||||||
|
{add_module,emqx_ocsp_cache},
|
||||||
{add_module,emqx_crl_cache},
|
{add_module,emqx_crl_cache},
|
||||||
{add_module,emqx_const_v1},
|
{add_module,emqx_const_v1},
|
||||||
{add_module,emqx_secret},
|
{add_module,emqx_secret},
|
||||||
|
@ -304,7 +315,8 @@
|
||||||
{load_module,emqx_connection,brutal_purge,soft_purge,[]},
|
{load_module,emqx_connection,brutal_purge,soft_purge,[]},
|
||||||
{add_module,emqx_relup}]},
|
{add_module,emqx_relup}]},
|
||||||
{"4.4.0",
|
{"4.4.0",
|
||||||
[{add_module,emqx_ocsp_cache},
|
[{add_module,emqx_cover},
|
||||||
|
{add_module,emqx_ocsp_cache},
|
||||||
{add_module,emqx_crl_cache},
|
{add_module,emqx_crl_cache},
|
||||||
{add_module,emqx_const_v1},
|
{add_module,emqx_const_v1},
|
||||||
{add_module,emqx_secret},
|
{add_module,emqx_secret},
|
||||||
|
@ -356,7 +368,8 @@
|
||||||
[{load_module,emqx_relup,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_relup,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_channel,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_channel,brutal_purge,soft_purge,[]},
|
||||||
|
{delete_module,emqx_cover}]},
|
||||||
{"4.4.10",
|
{"4.4.10",
|
||||||
[{load_module,emqx_listeners,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_listeners,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_kernel_sup,brutal_purge,soft_purge,[]},
|
{load_module,emqx_kernel_sup,brutal_purge,soft_purge,[]},
|
||||||
|
@ -370,6 +383,7 @@
|
||||||
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx,brutal_purge,soft_purge,[]},
|
{load_module,emqx,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
||||||
|
{delete_module,emqx_cover},
|
||||||
{delete_module,emqx_crl_cache},
|
{delete_module,emqx_crl_cache},
|
||||||
{delete_module,emqx_ocsp_cache}]},
|
{delete_module,emqx_ocsp_cache}]},
|
||||||
{"4.4.9",
|
{"4.4.9",
|
||||||
|
@ -391,6 +405,7 @@
|
||||||
{load_module,emqx_connection,brutal_purge,soft_purge,[]},
|
{load_module,emqx_connection,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_router,brutal_purge,soft_purge,[]},
|
{load_module,emqx_router,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
||||||
|
{delete_module,emqx_cover},
|
||||||
{delete_module,emqx_crl_cache},
|
{delete_module,emqx_crl_cache},
|
||||||
{delete_module,emqx_ocsp_cache}]},
|
{delete_module,emqx_ocsp_cache}]},
|
||||||
{"4.4.8",
|
{"4.4.8",
|
||||||
|
@ -413,6 +428,7 @@
|
||||||
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
{load_module,emqx_cm,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_message,brutal_purge,soft_purge,[]},
|
{load_module,emqx_message,brutal_purge,soft_purge,[]},
|
||||||
|
{delete_module,emqx_cover},
|
||||||
{delete_module,emqx_crl_cache},
|
{delete_module,emqx_crl_cache},
|
||||||
{delete_module,emqx_ocsp_cache}]},
|
{delete_module,emqx_ocsp_cache}]},
|
||||||
{"4.4.7",
|
{"4.4.7",
|
||||||
|
@ -435,6 +451,7 @@
|
||||||
{load_module,emqx_plugins,brutal_purge,soft_purge,[]},
|
{load_module,emqx_plugins,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_channel,brutal_purge,soft_purge,[]},
|
{load_module,emqx_channel,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
||||||
|
{delete_module,emqx_cover},
|
||||||
{delete_module,emqx_crl_cache},
|
{delete_module,emqx_crl_cache},
|
||||||
{delete_module,emqx_ocsp_cache}]},
|
{delete_module,emqx_ocsp_cache}]},
|
||||||
{"4.4.6",
|
{"4.4.6",
|
||||||
|
@ -457,6 +474,7 @@
|
||||||
{load_module,emqx_plugins,brutal_purge,soft_purge,[]},
|
{load_module,emqx_plugins,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_channel,brutal_purge,soft_purge,[]},
|
{load_module,emqx_channel,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx,brutal_purge,soft_purge,[]},
|
{load_module,emqx,brutal_purge,soft_purge,[]},
|
||||||
|
{delete_module,emqx_cover},
|
||||||
{delete_module,emqx_crl_cache},
|
{delete_module,emqx_crl_cache},
|
||||||
{delete_module,emqx_ocsp_cache}]},
|
{delete_module,emqx_ocsp_cache}]},
|
||||||
{"4.4.5",
|
{"4.4.5",
|
||||||
|
@ -481,6 +499,7 @@
|
||||||
{load_module,emqx_channel,brutal_purge,soft_purge,[]},
|
{load_module,emqx_channel,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
{load_module,emqx_shared_sub,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_relup,brutal_purge,soft_purge,[]},
|
{load_module,emqx_relup,brutal_purge,soft_purge,[]},
|
||||||
|
{delete_module,emqx_cover},
|
||||||
{delete_module,emqx_crl_cache},
|
{delete_module,emqx_crl_cache},
|
||||||
{delete_module,emqx_ocsp_cache}]},
|
{delete_module,emqx_ocsp_cache}]},
|
||||||
{"4.4.4",
|
{"4.4.4",
|
||||||
|
@ -512,6 +531,7 @@
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_plugins,brutal_purge,soft_purge,[]},
|
{load_module,emqx_plugins,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_metrics,brutal_purge,soft_purge,[]},
|
{load_module,emqx_metrics,brutal_purge,soft_purge,[]},
|
||||||
|
{delete_module,emqx_cover},
|
||||||
{delete_module,emqx_crl_cache},
|
{delete_module,emqx_crl_cache},
|
||||||
{delete_module,emqx_ocsp_cache}]},
|
{delete_module,emqx_ocsp_cache}]},
|
||||||
{"4.4.3",
|
{"4.4.3",
|
||||||
|
@ -549,6 +569,7 @@
|
||||||
{load_module,emqx_access_control,brutal_purge,soft_purge,[]},
|
{load_module,emqx_access_control,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_relup},
|
{load_module,emqx_relup},
|
||||||
|
{delete_module,emqx_cover},
|
||||||
{delete_module,emqx_crl_cache},
|
{delete_module,emqx_crl_cache},
|
||||||
{delete_module,emqx_ocsp_cache}]},
|
{delete_module,emqx_ocsp_cache}]},
|
||||||
{"4.4.2",
|
{"4.4.2",
|
||||||
|
@ -587,6 +608,7 @@
|
||||||
{load_module,emqx_hooks,brutal_purge,soft_purge,[]},
|
{load_module,emqx_hooks,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_relup},
|
{load_module,emqx_relup},
|
||||||
|
{delete_module,emqx_cover},
|
||||||
{delete_module,emqx_crl_cache},
|
{delete_module,emqx_crl_cache},
|
||||||
{delete_module,emqx_ocsp_cache}]},
|
{delete_module,emqx_ocsp_cache}]},
|
||||||
{"4.4.1",
|
{"4.4.1",
|
||||||
|
@ -630,6 +652,7 @@
|
||||||
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
{load_module,emqx_misc,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_connection,brutal_purge,soft_purge,[]},
|
{load_module,emqx_connection,brutal_purge,soft_purge,[]},
|
||||||
{delete_module,emqx_relup},
|
{delete_module,emqx_relup},
|
||||||
|
{delete_module,emqx_cover},
|
||||||
{delete_module,emqx_crl_cache},
|
{delete_module,emqx_crl_cache},
|
||||||
{delete_module,emqx_ocsp_cache}]},
|
{delete_module,emqx_ocsp_cache}]},
|
||||||
{"4.4.0",
|
{"4.4.0",
|
||||||
|
@ -674,6 +697,7 @@
|
||||||
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
{load_module,emqx_app,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_limiter,brutal_purge,soft_purge,[]},
|
{load_module,emqx_limiter,brutal_purge,soft_purge,[]},
|
||||||
{delete_module,emqx_relup},
|
{delete_module,emqx_relup},
|
||||||
|
{delete_module,emqx_cover},
|
||||||
{delete_module,emqx_crl_cache},
|
{delete_module,emqx_crl_cache},
|
||||||
{delete_module,emqx_ocsp_cache}]},
|
{delete_module,emqx_ocsp_cache}]},
|
||||||
{<<".*">>,[]}]}.
|
{<<".*">>,[]}]}.
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% Copyright (c) 2022 EMQ Technologies Co., Ltd. All Rights Reserved.
|
||||||
|
%%
|
||||||
|
%% Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
%% you may not use this file except in compliance with the License.
|
||||||
|
%% You may obtain a copy of the License at
|
||||||
|
%%
|
||||||
|
%% http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
%%
|
||||||
|
%% Unless required by applicable law or agreed to in writing, software
|
||||||
|
%% distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
%% See the License for the specific language governing permissions and
|
||||||
|
%% limitations under the License.
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
|
%% @doc This module is NOT used in production.
|
||||||
|
%% It is used to collect coverage data when running blackbox test
|
||||||
|
-module(emqx_cover).
|
||||||
|
|
||||||
|
-export([start/0,
|
||||||
|
start/1,
|
||||||
|
export_and_stop/1
|
||||||
|
]).
|
||||||
|
|
||||||
|
start() ->
|
||||||
|
start(#{}).
|
||||||
|
|
||||||
|
start(Opts) ->
|
||||||
|
ok = maybe_set_secret(),
|
||||||
|
case cover:start() of
|
||||||
|
{ok, _Pid} ->
|
||||||
|
ok;
|
||||||
|
{error, {already_started, _Pid}} ->
|
||||||
|
ok;
|
||||||
|
Other ->
|
||||||
|
throw(Other)
|
||||||
|
end,
|
||||||
|
ok = cover_compile(Opts).
|
||||||
|
|
||||||
|
export_and_stop(Path) ->
|
||||||
|
ok = cover:export(Path),
|
||||||
|
_ = cover:stop(),
|
||||||
|
ok.
|
||||||
|
|
||||||
|
maybe_set_secret() ->
|
||||||
|
case os:getenv("EMQX_DEBUG_SECRET_FILE") of
|
||||||
|
false ->
|
||||||
|
ok;
|
||||||
|
"" ->
|
||||||
|
ok;
|
||||||
|
File ->
|
||||||
|
ok = emqx:set_debug_secret(File)
|
||||||
|
end.
|
||||||
|
|
||||||
|
cover_compile(_Opts) ->
|
||||||
|
%% TODO better filter based on Opts,
|
||||||
|
%% e.g. we may want to see coverage info for ehttpc
|
||||||
|
Filter = fun is_emqx_module/1,
|
||||||
|
Modules = find_modules(Filter),
|
||||||
|
Results = cover:compile_beam(Modules),
|
||||||
|
Errors = lists:filter(fun({ok, _}) -> false;
|
||||||
|
(_) -> true
|
||||||
|
end, Results),
|
||||||
|
case Errors of
|
||||||
|
[] ->
|
||||||
|
ok;
|
||||||
|
_ ->
|
||||||
|
io:format(user, "failed_to_cover_compile:~n~p~n", [Errors]),
|
||||||
|
throw(failed_to_cover_compile)
|
||||||
|
end.
|
||||||
|
|
||||||
|
find_modules(Filter) ->
|
||||||
|
All = code:all_loaded(),
|
||||||
|
F = fun({M, _BeamPath}) -> Filter(M) end,
|
||||||
|
lists:filter(F, All).
|
||||||
|
|
||||||
|
is_emqx_module(?MODULE) ->
|
||||||
|
%% do not cover-compile self
|
||||||
|
false;
|
||||||
|
is_emqx_module(Module) ->
|
||||||
|
case erlang:atom_to_binary(Module, utf8) of
|
||||||
|
<<"emqx", _/binary>> ->
|
||||||
|
true;
|
||||||
|
_ ->
|
||||||
|
false
|
||||||
|
end.
|
Loading…
Reference in New Issue