Browse Source

Ensure that env variables are cleaned after each test.

Roberto Ostinelli 5 years ago
parent
commit
604170b89d

+ 2 - 4
Makefile

@@ -34,12 +34,10 @@ ifdef suite
 	@# 'make test suite=syn_registry_SUITE'
 	ct_run -dir $(PROJECT_DIR)/test -logdir $(PROJECT_DIR)/test/results \
 	-suite $(suite) \
-	-pa `rebar3 as test path` \
-	-event_handler syn_test_event_manager -pa $(PROJECT_DIR)/test
+	-pa `rebar3 as test path`
 else
 	ct_run -dir $(PROJECT_DIR)/test -logdir $(PROJECT_DIR)/test/results \
-	-pa `rebar3 as test path` \
-	-event_handler syn_test_event_manager -pa $(PROJECT_DIR)/test
+	-pa `rebar3 as test path`
 endif
 
 bench: compile_test

+ 2 - 2
src/syn.erl

@@ -52,9 +52,9 @@ start() ->
     {ok, _} = application:ensure_all_started(syn),
     ok.
 
--spec stop() -> ok.
+-spec stop() -> ok | {error, Reason :: any()}.
 stop() ->
-    ok = application:stop(syn).
+    application:stop(syn).
 
 %% ----- \/ registry -------------------------------------------------
 -spec register(Name :: any(), Pid :: pid()) -> ok | {error, Reason :: any()}.

+ 3 - 1
test/syn_groups_SUITE.erl

@@ -157,6 +157,7 @@ init_per_group(_GroupName, Config) ->
 end_per_group(two_nodes_groups, Config) ->
     SlaveNode = proplists:get_value(slave_node, Config),
     syn_test_suite_helper:connect_node(SlaveNode),
+    syn_test_suite_helper:clean_after_test(),
     syn_test_suite_helper:stop_slave(syn_slave),
     timer:sleep(1000);
 end_per_group(three_nodes_groups, Config) ->
@@ -164,11 +165,12 @@ end_per_group(three_nodes_groups, Config) ->
     syn_test_suite_helper:connect_node(SlaveNode1),
     SlaveNode2 = proplists:get_value(slave_node_2, Config),
     syn_test_suite_helper:connect_node(SlaveNode2),
+    syn_test_suite_helper:clean_after_test(),
     syn_test_suite_helper:stop_slave(syn_slave_1),
     syn_test_suite_helper:stop_slave(syn_slave_2),
     timer:sleep(1000);
 end_per_group(_GroupName, _Config) ->
-    ok.
+    syn_test_suite_helper:clean_after_test().
 
 %% -------------------------------------------------------------------
 %% Function: init_per_testcase(TestCase, Config0) ->

+ 4 - 1
test/syn_registry_SUITE.erl

@@ -159,6 +159,7 @@ init_per_group(_GroupName, Config) ->
 end_per_group(two_nodes_process_registration, Config) ->
     SlaveNode = proplists:get_value(slave_node, Config),
     syn_test_suite_helper:connect_node(SlaveNode),
+    syn_test_suite_helper:clean_after_test(),
     syn_test_suite_helper:stop_slave(syn_slave),
     timer:sleep(1000);
 end_per_group(three_nodes_process_registration, Config) ->
@@ -166,11 +167,13 @@ end_per_group(three_nodes_process_registration, Config) ->
     syn_test_suite_helper:connect_node(SlaveNode1),
     SlaveNode2 = proplists:get_value(slave_node_2, Config),
     syn_test_suite_helper:connect_node(SlaveNode2),
+    syn_test_suite_helper:clean_after_test(),
     syn_test_suite_helper:stop_slave(syn_slave_1),
     syn_test_suite_helper:stop_slave(syn_slave_2),
     timer:sleep(1000);
 end_per_group(_GroupName, _Config) ->
-    ok.
+    syn_test_suite_helper:clean_after_test().
+
 %% -------------------------------------------------------------------
 %% Function: init_per_testcase(TestCase, Config0) ->
 %%				Config1 | {skip,Reason} | {skip_and_save,Reason,Config1}

+ 0 - 52
test/syn_test_event_manager.erl

@@ -1,52 +0,0 @@
-%% ==========================================================================================================
-%% Syn - A global Process Registry and Process Group manager.
-%%
-%% The MIT License (MIT)
-%%
-%% Copyright (c) 2015 Roberto Ostinelli <roberto@ostinelli.net> and Neato Robotics, Inc.
-%%
-%% Permission is hereby granted, free of charge, to any person obtaining a copy
-%% of this software and associated documentation files (the "Software"), to deal
-%% in the Software without restriction, including without limitation the rights
-%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-%% copies of the Software, and to permit persons to whom the Software is
-%% furnished to do so, subject to the following conditions:
-%%
-%% The above copyright notice and this permission notice shall be included in
-%% all copies or substantial portions of the Software.
-%%
-%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-%% THE SOFTWARE.
-%% ==========================================================================================================
--module(syn_test_event_manager).
--behaviour(gen_event).
-
--export([init/1, handle_event/2, handle_call/2, handle_info/2, code_change/3,
-    terminate/2]).
-
-init([]) ->
-    {ok, []}.
-
-handle_event({event, syn_test, _, Message}, State) ->
-    ct:pal("~p", [Message]),
-    {ok, State};
-
-handle_event(_, State) ->
-    {ok, State}.
-
-handle_call(_, State) ->
-    {ok, ok, State}.
-
-handle_info(_, State) ->
-    {ok, State}.
-
-code_change(_OldVsn, State, _Extra) ->
-    {ok, State}.
-
-terminate(_Reason, _State) ->
-    ok.

+ 7 - 5
test/syn_test_suite_helper.erl

@@ -32,7 +32,7 @@
 -export([start_process/0, start_process/1, start_process/2]).
 -export([kill_process/1]).
 -export([use_custom_handler/0]).
--export([send_debug_data/1]).
+-export([send_error_logger_to_disk/0]).
 
 %% internal
 -export([process_main/0]).
@@ -59,8 +59,10 @@ clean_after_test() ->
     Nodes = [node() | nodes()],
     %% shutdown
     lists:foreach(fun(Node) ->
-        ok = rpc:call(Node, syn, stop, []),
-        ok = rpc:call(Node, application, stop, [mnesia])
+        rpc:call(Node, syn, stop, []),
+        rpc:call(Node, application, stop, [mnesia]),
+        %% clean env
+        rpc:call(Node, application, unset_env, [syn, event_handler])
     end, Nodes),
     %% clean mnesia
     mnesia:delete_schema(Nodes).
@@ -84,8 +86,8 @@ kill_process(Pid) ->
 use_custom_handler() ->
     application:set_env(syn, event_handler, syn_test_event_handler).
 
-send_debug_data(Message) ->
-    ct:notify(syn_test, Message).
+send_error_logger_to_disk() ->
+    error_logger:logfile({open, atom_to_list(node())}).
 
 %% ===================================================================
 %% Internal