summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMicael Karlberg <bmk@erlang.org>2019-11-06 18:42:06 +0100
committerMicael Karlberg <bmk@erlang.org>2019-11-12 11:01:28 +0100
commit50be3eb317c79f800bba962b4df9f84e8fe1ef94 (patch)
tree65e83ceb525ae4e98e0118ed01c8b3dca2e45218 /lib
parent965189cabfeb3906bac76e4ec2d55ce2ada630de (diff)
downloaderlang-50be3eb317c79f800bba962b4df9f84e8fe1ef94.tar.gz
[snmp|test] Made the agent sub-suite its own test suite
Moved the agent sub-suite out of the "main" test suite into its own test suite. OTP-16157
Diffstat (limited to 'lib')
-rw-r--r--lib/snmp/test/modules.mk6
-rw-r--r--lib/snmp/test/snmp_SUITE.erl8
-rw-r--r--lib/snmp/test/snmp_agent_SUITE.erl (renamed from lib/snmp/test/snmp_agent_test.erl)172
-rw-r--r--lib/snmp/test/snmp_test_lib.erl55
4 files changed, 153 insertions, 88 deletions
diff --git a/lib/snmp/test/modules.mk b/lib/snmp/test/modules.mk
index 06aa59c86f..d02bb3da9f 100644
--- a/lib/snmp/test/modules.mk
+++ b/lib/snmp/test/modules.mk
@@ -20,9 +20,7 @@
SUITE_MODULES = \
snmp_SUITE \
- snmp_agent_test \
- snmp_agent_test_get \
- snmp_agent_test_lib \
+ snmp_agent_SUITE \
snmp_agent_conf_SUITE \
snmp_agent_mibs_SUITE \
snmp_agent_nfilter_SUITE \
@@ -41,6 +39,8 @@ SUITE_MODULES = \
snmp_to_snmpnet_SUITE
TEST_UTIL_MODULES = \
+ snmp_agent_test_get \
+ snmp_agent_test_lib \
snmp_test_global_sys_monitor \
snmp_test_sys_monitor \
snmp_test_lib \
diff --git a/lib/snmp/test/snmp_SUITE.erl b/lib/snmp/test/snmp_SUITE.erl
index 8eeeae2c04..b1e6c9aed3 100644
--- a/lib/snmp/test/snmp_SUITE.erl
+++ b/lib/snmp/test/snmp_SUITE.erl
@@ -98,27 +98,19 @@ suite() ->
all() ->
[
- {group, agent},
{group, manager}
].
groups() ->
[
- {agent, [], agent_cases()},
{manager, [], manager_cases()},
- {agent_test, [], [{snmp_agent_test, all}]},
{manager_config_test, [], [{snmp_manager_config_test, all}]},
{manager_user_test, [], [{snmp_manager_user_test, all}]},
{manager_test, [], [{snmp_manager_test, all}]}
].
-agent_cases() ->
- [
- {group, agent_test}
- ].
-
manager_cases() ->
[
{group, manager_config_test},
diff --git a/lib/snmp/test/snmp_agent_test.erl b/lib/snmp/test/snmp_agent_SUITE.erl
index 1726a04513..66b6540bbe 100644
--- a/lib/snmp/test/snmp_agent_test.erl
+++ b/lib/snmp/test/snmp_agent_SUITE.erl
@@ -18,11 +18,10 @@
%% %CopyrightEnd%
%%
--module(snmp_agent_test).
+-module(snmp_agent_SUITE).
-export([
- all/0,
- groups/0,
+ suite/0, all/0, groups/0,
init_per_suite/1, end_per_suite/1,
init_per_group/2, end_per_group/2,
init_per_testcase/2, end_per_testcase/2,
@@ -501,6 +500,13 @@
Type, Ent, Gen, Spec, ExpVBs, To)).
+%%======================================================================
+%% Common Test interface functions
+%%======================================================================
+
+suite() ->
+ [{ct_hooks, [ts_install_cth]}].
+
all() ->
%% Reqs = [mnesia, distribution, {local_slave_nodes, 2}, {time, 360}],
Conf1 = [{group, all_tcs}],
@@ -509,7 +515,7 @@ all() ->
groups() ->
[
- {all_tcs, [], cases()},
+ {all_tcs, [], all_cases()},
{mib_storage, [], mib_storage_cases()},
{mib_storage_ets, [], mib_storage_ets_cases()},
{mib_storage_dets, [], mib_storage_dets_cases()},
@@ -550,54 +556,86 @@ groups() ->
].
+all_cases() ->
+ [
+ {group, misc},
+ {group, test_v1},
+ {group, test_v2},
+ {group, test_v1_v2},
+ {group, test_v3},
+ {group, test_v1_ipv6},
+ {group, test_v2_ipv6},
+ {group, test_v1_v2_ipv6},
+ {group, test_v3_ipv6},
+ {group, test_multi_threaded},
+ {group, mib_storage},
+ {group, tickets1}
+ ].
+
+%%
+%% -----
+%%
+
init_per_suite(Config0) when is_list(Config0) ->
p("init_per_suite -> entry with"
"~n Config: ~p"
"~n Nodes: ~p", [Config0, erlang:nodes()]),
- Config1 = snmp_test_lib:init_suite_top_dir(?MODULE, Config0),
- Config2 = snmp_test_lib:fix_data_dir(Config1),
+ case snmp_test_lib:init_per_suite(Config0) of
+ {skip, _} = SKIP ->
+ SKIP;
- %% Mib-dirs
- MibDir = snmp_test_lib:lookup(data_dir, Config2),
- StdMibDir = join([code:priv_dir(snmp), "mibs"]),
+ Config1 ->
+ Config2 = snmp_test_lib:init_suite_top_dir(?MODULE, Config1),
+ Config3 = snmp_test_lib:fix_data_dir(Config2),
- Config3 = [{mib_dir, MibDir}, {std_mib_dir, StdMibDir} | Config2],
+ %% Mib-dirs
+ MibDir = snmp_test_lib:lookup(data_dir, Config3),
+ StdMibDir = join([code:priv_dir(snmp), "mibs"]),
+
+ Config4 = [{mib_dir, MibDir}, {std_mib_dir, StdMibDir} | Config3],
- snmp_test_global_sys_monitor:start(),
- snmp_test_sys_monitor:start(), % We need one on this node also
- snmp_test_mgr_counter_server:start(),
+ %% We need a monitor on this node also
+ snmp_test_sys_monitor:start(),
- p("init_per_suite -> end when"
- "~n Config: ~p"
- "~n Nodes: ~p", [Config3, erlang:nodes()]),
+ snmp_test_mgr_counter_server:start(),
- Config3.
+ p("init_per_suite -> end when"
+ "~n Config: ~p"
+ "~n Nodes: ~p", [Config4, erlang:nodes()]),
+
+ Config4
+ end.
-end_per_suite(Config) when is_list(Config) ->
+end_per_suite(Config0) when is_list(Config0) ->
p("end_per_suite -> entry with"
- "~n Config: ~p"
- "~n Nodes: ~p", [Config, erlang:nodes()]),
+ "~n Config0: ~p"
+ "~n Nodes: ~p", [Config0, erlang:nodes()]),
case snmp_test_mgr_counter_server:stop() of
- {ok, _Counters} ->
+ {ok, Counters} ->
p("end_per_suite -> sucessfully stopped counter server"
- "~n Counters: ~p", [_Counters]);
+ "~n Counters: ~p", [Counters]);
{error, Reason} ->
p("end_per_suite -> failed stopping counter server"
"~n Reason: ~p", [Reason])
end,
snmp_test_sys_monitor:stop(),
- snmp_test_global_sys_monitor:stop(),
+ Config1 = snmp_test_lib:end_per_suite(Config0),
p("end_per_suite -> end when"
"~n Nodes: ~p", [erlang:nodes()]),
- Config.
+ Config1.
+
+%%
+%% -----
+%%
+
init_per_group(all_tcs = GroupName, Config) ->
init_all(snmp_test_lib:init_group_top_dir(GroupName, Config));
init_per_group(otp7157 = GroupName, Config) ->
@@ -771,7 +809,9 @@ end_per_group(_GroupName, Config) ->
-%% ---- Init Per TestCase ----
+%%
+%% ----- Init Per TestCase -----
+%%
init_per_testcase(Case, Config) when is_list(Config) ->
p("init_per_testcase -> entry with"
@@ -833,39 +873,6 @@ init_per_testcase1(_Case, Config) when is_list(Config) ->
Dog = ?WD_START(?MINS(6)),
[{watchdog, Dog}| Config ].
-
-%% ---- End Per TestCase ----
-
-end_per_testcase(Case, Config) when is_list(Config) ->
- p("end_per_testcase -> entry with"
- "~n Config: ~p"
- "~n Nodes: ~p", [Config, erlang:nodes()]),
-
- display_log(Config),
-
- p("system events during test: "
- "~n ~p", [snmp_test_global_sys_monitor:events()]),
-
- Result = end_per_testcase1(Case, Config),
-
- p("end_per_testcase -> done with"
- "~n Result: ~p"
- "~n Nodes: ~p", [Result, erlang:nodes()]),
- Result.
-
-end_per_testcase1(otp8395, Config) when is_list(Config) ->
- otp8395({fin, Config});
-end_per_testcase1(otp9884, Config) when is_list(Config) ->
- otp9884({fin, Config});
-end_per_testcase1(_Case, Config) when is_list(Config) ->
- ?DBG("end_per_testcase1 -> entry with"
- "~n Case: ~p"
- "~n Config: ~p", [_Case, Config]),
- Dog = ?config(watchdog, Config),
- ?WD_STOP(Dog),
- Config.
-
-
init_per_testcase2(Case, Config) ->
?DBG("end_per_testcase2 -> entry with"
@@ -900,25 +907,40 @@ init_per_testcase2(Case, Config) ->
{sub_agent_top_dir, SubAgentTopDir},
{manager_top_dir, ManagerTopDir} | Config].
-%% end_per_testcase2(_Case, Config) ->
-%% Config.
+
+%% ---- End Per TestCase ----
+
+end_per_testcase(Case, Config) when is_list(Config) ->
+ p("end_per_testcase -> entry with"
+ "~n Config: ~p"
+ "~n Nodes: ~p", [Config, erlang:nodes()]),
+
+ display_log(Config),
+
+ p("system events during test: "
+ "~n ~p", [snmp_test_global_sys_monitor:events()]),
+
+ Result = end_per_testcase1(Case, Config),
+
+ p("end_per_testcase -> done with"
+ "~n Result: ~p"
+ "~n Nodes: ~p", [Result, erlang:nodes()]),
+ Result.
+
+end_per_testcase1(otp8395, Config) when is_list(Config) ->
+ otp8395({fin, Config});
+end_per_testcase1(otp9884, Config) when is_list(Config) ->
+ otp9884({fin, Config});
+end_per_testcase1(_Case, Config) when is_list(Config) ->
+ ?DBG("end_per_testcase1 -> entry with"
+ "~n Case: ~p"
+ "~n Config: ~p", [_Case, Config]),
+ Dog = ?config(watchdog, Config),
+ ?WD_STOP(Dog),
+ Config.
+
-cases() ->
- [
- {group, misc},
- {group, test_v1},
- {group, test_v2},
- {group, test_v1_v2},
- {group, test_v3},
- {group, test_v1_ipv6},
- {group, test_v2_ipv6},
- {group, test_v1_v2_ipv6},
- {group, test_v3_ipv6},
- {group, test_multi_threaded},
- {group, mib_storage},
- {group, tickets1}
- ].
%%%-----------------------------------------------------------------
diff --git a/lib/snmp/test/snmp_test_lib.erl b/lib/snmp/test/snmp_test_lib.erl
index ebf587e96a..d2edd636cc 100644
--- a/lib/snmp/test/snmp_test_lib.erl
+++ b/lib/snmp/test/snmp_test_lib.erl
@@ -29,8 +29,9 @@
-export([non_pc_tc_maybe_skip/4, os_based_skip/1,
has_support_ipv6/0, has_support_ipv6/1,
is_ipv6_host/0, is_ipv6_host/1]).
--export([fix_data_dir/1,
- init_suite_top_dir/2, init_group_top_dir/2, init_testcase_top_dir/2,
+-export([init_per_suite/1, end_per_suite/1,
+ init_suite_top_dir/2, init_group_top_dir/2, init_testcase_top_dir/2,
+ fix_data_dir/1,
lookup/2,
replace_config/3, set_config/3, get_config/2, get_config/3]).
-export([fail/3, skip/3]).
@@ -448,6 +449,56 @@ is_ipv6_host(Hostname) ->
%% Test suite utility functions
%%
+%% Common suite init function
+%% This should be used by "all" suite init functions.
+
+init_per_suite(Config) ->
+
+ %% We have some crap machines that causes random test case failures
+ %% for no obvious reason. So, attempt to identify those without actually
+ %% checking for the host name...
+ %% We have two "machines" we are checking for. Both are old installations
+ %% running on really slow VMs (the host machines are old and tired).
+ LinuxVersionVerify =
+ fun(V) when (V > {3,6,11}) ->
+ false; % OK - No skip
+ (V) when (V =:= {3,6,11}) ->
+ case string:trim(os:cmd("cat /etc/issue")) of
+ "Fedora release 16 " ++ _ -> % Stone age Fedora => Skip
+ true;
+ _ ->
+ false
+ end;
+ (V) when (V > {2,6,24}) ->
+ false; % OK - No skip
+ (_) ->
+ %% We are specifically checking for
+ %% a *really* old gento...
+ case string:find(string:strip(os:cmd("uname -a")), "gentoo") of
+ nomatch ->
+ false;
+ _ -> % Stone age gentoo => Skip
+ true
+ end
+ end,
+ COND = [{unix, [{linux, LinuxVersionVerify}]}],
+ case os_based_skip(COND) of
+ true ->
+ {skip, "Unstable host and/or os (or combo thererof)"};
+ false ->
+ snmp_test_global_sys_monitor:start(),
+ Config
+ end.
+
+
+end_per_suite(Config) when is_list(Config) ->
+
+ snmp_test_global_sys_monitor:stop(),
+
+ Config.
+
+
+
fix_data_dir(Config) ->
DataDir0 = lookup(data_dir, Config),
DataDir1 = filename:split(filename:absname(DataDir0)),