Explorar el Código

test: ensure emqx_metrics gen_server stopped after each test

Zaiming (Stone) Shi hace 3 años
padre
commit
1e170da9e8

+ 8 - 1
apps/emqx/src/emqx_metrics.erl

@@ -279,7 +279,14 @@ start_link() ->
     gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
 
 -spec stop() -> ok.
-stop() -> gen_server:stop(?SERVER).
+stop() ->
+    try
+        gen_server:stop(?SERVER)
+    catch
+        exit:R when R =:= noproc orelse R =:= timeout ->
+            %% pid is killed after timeout
+            ok
+    end.
 
 %% BACKW: v4.3.0
 upgrade_retained_delayed_counter_type() ->

+ 12 - 3
apps/emqx/test/emqx_metrics_SUITE.erl

@@ -166,7 +166,16 @@ t_trans(_) ->
     ).
 
 with_metrics_server(Fun) ->
-    _ = supervisor:terminate_child(emqx_kernel_sup, emqx_metrics),
+    try
+        supervisor:terminate_child(emqx_kernel_sup, emqx_metrics)
+    catch
+        exit:_ ->
+            ok
+    end,
     {ok, _} = emqx_metrics:start_link(),
-    _ = Fun(),
-    ok = emqx_metrics:stop().
+    try
+        _ = Fun(),
+        ok
+    after
+        ok = emqx_metrics:stop()
+    end.

+ 7 - 4
scripts/git-hook-pre-commit.sh

@@ -2,10 +2,13 @@
 
 set -euo pipefail
 
-files="$(git diff --cached --name-only | grep -E '.*\.erl' || true)"
-if [[ "${files}" == '' ]]; then
+OPT="${1:--c}"
+
+files_dirty="$(git diff --name-only | grep -E '.*\.erl' || true)"
+files_cached="$(git diff --cached --name-only | grep -E '.*\.erl' || true)"
+if [[ "${files_dirty}" == '' ]] && [[ "${files_cached}" == '' ]]; then
     exit 0
 fi
-files="$(echo -e "$files" | xargs)"
+files="$(echo -e "${files_dirty} \n ${files_cached}" | xargs)"
 # shellcheck disable=SC2086
-./scripts/erlfmt -c $files
+./scripts/erlfmt $OPT $files