diff options
author | Micael Karlberg <bmk@erlang.org> | 2019-11-06 18:42:06 +0100 |
---|---|---|
committer | Micael Karlberg <bmk@erlang.org> | 2019-11-12 11:01:28 +0100 |
commit | 50be3eb317c79f800bba962b4df9f84e8fe1ef94 (patch) | |
tree | 65e83ceb525ae4e98e0118ed01c8b3dca2e45218 /lib | |
parent | 965189cabfeb3906bac76e4ec2d55ce2ada630de (diff) | |
download | erlang-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.mk | 6 | ||||
-rw-r--r-- | lib/snmp/test/snmp_SUITE.erl | 8 | ||||
-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.erl | 55 |
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)), |