snmp_agent_test.erl

来自「OTP是开放电信平台的简称」· ERL 代码 · 共 2,194 行 · 第 1/5 页

ERL
2,194
字号
    ?line snmpa:verbosity(local_db,trace),    %% First send some traps that will arive att the original manager    ?LOG("change_target_addr_config -> send trap",[]),    try_test(ma_trap1, [MA]),    ?LOG("change_target_addr_config -> set silence verbosity for local_db",[]),    ?line snmpa:verbosity(local_db,silence),    %% Start new dummy listener    ?LOG("change_target_addr_config -> start dummy manager",[]),    ?line {ok,Pid,NewPort} = dummy_manager_start(MA),        %% Reconfigure    ?LOG("change_target_addr_config -> reconfigure",[]),    AgentDir = ?config(agent_dir, Config),    ?line rewrite_target_addr_conf(AgentDir, NewPort),    ?line snmp_target_mib:reconfigure(AgentDir),    %% Send the trap again    ?LOG("change_target_addr_config -> send trap again",[]),    catch dummy_manager_send_trap2(Pid),    ?LOG("change_target_addr_config -> await trap ack",[]),    catch dummy_manager_await_trap2_ack(),    ?LOG("change_target_addr_config -> stop dummy manager",[]),    ?line ok = dummy_manager_stop(Pid),    ?LOG("change_target_addr_config -> reset target address config",[]),    ?line reset_target_addr_conf(AgentDir),    ?LOG("change_target_addr_config -> unload TestTrap",[]),    ?line unload_master("TestTrap").dummy_manager_start(MA) ->    ?DBG("dummy_manager_start -> entry",[]),    Pid = spawn(get(mgr_node), ?MODULE,dummy_manager_init,[self(),MA]),    ?DBG("dummy_manager_start -> Pid: ~p",[Pid]),    await_dummy_manager_started(Pid).await_dummy_manager_started(Pid) ->    receive	{dummy_manager_started,Pid,Port} ->	    ?DBG("dummy_manager_start -> acknowledge received with"		"~n   Port: ~p",[Port]),	    {ok,Pid,Port};	{'EXIT', Pid, Reason} ->	    {error, Pid, Reason};	O ->	    ?LOG("dummy_manager_start -> received unknown message:"		 "~n   ~p",[O]),	    await_dummy_manager_started(Pid)    end.dummy_manager_stop(Pid) ->    ?DBG("dummy_manager_stop -> entry with Pid: ~p",[Pid]),    Pid ! stop,    receive	{dummy_manager_stopping, Pid} -> 	    ?DBG("dummy_manager_stop -> acknowledge received",[]),	    ok    after 10000 ->	    ?ERR("dummy_manager_stop -> timeout",[]),	    timeout    end.dummy_manager_send_trap2(Pid) ->    ?DBG("dummy_manager_send_trap2 -> entry",[]),    Pid ! {send_trap,testTrap2}.dummy_manager_await_trap2_ack() ->    ?DBG("dummy_manager_await_trap2 -> entry",[]),    receive	{received_trap,Trap} ->	    ?LOG("dummy_manager_await_trap2 -> received trap: ~p",[Trap]),	    %% Note: 	    %% Without this sleep the v2_inform_i testcase failes! There	    %% is no relation between these two test cases as far as I	    %% able to figure out...	    ?SLEEP(60000),	    ok;	O ->	    ?ERR("dummy_manager_await_trap2 -> unexpected message: ~p",[O]),	    ok    after 10000 ->	    ?ERR("dummy_manager_await_trap2 -> timeout",[]),	    timeout    end.dummy_manager_init(Parent,MA) ->    ?DBG("dummy_manager_init -> entry with"	   "~n   Parent: ~p"	   "~n   MA:     ~p",[Parent,MA]),    {ok,S} = gen_udp:open(0,[{recbuf,65535}]),    ?DBG("dummy_manager_init -> S: ~p",[S]),    {ok,Port} = inet:port(S),    ?DBG("dummy_manager_init -> Port: ~p",[Port]),    Parent ! {dummy_manager_started,self(),Port},    dummy_manager_loop(Parent,S,MA).dummy_manager_loop(P,S,MA) ->    ?LOG("dummy_manager_loop -> ready for receive",[]),    receive	{send_trap,Trap} ->	    ?LOG("dummy_manager_loop -> received trap send request"		 "~n   Trap: ~p",[Trap]),	    snmpa:send_trap(MA, Trap, "standard trap"),	    dummy_manager_loop(P,S,MA);	{udp, _UdpId, Ip, UdpPort, Bytes} ->	    ?LOG("dummy_manager_loop -> received upd message"		 "~n   from: ~p:~p"		 "~n   size: ~p",		 [Ip, UdpPort, dummy_manager_message_sz(Bytes)]),	    R = dummy_manager_handle_message(Bytes),	    ?DBG("dummy_manager_loop -> R: ~p",[R]),	    P ! R,	    dummy_manager_loop(P,S,MA);	stop ->	    ?DBG("dummy_manager_loop -> received stop request",[]),	    P ! {dummy_manager_stopping, self()},	    gen_udp:close(S),	    exit(normal);	O ->	    ?LOG("dummy_manager_loop -> received unknown message:"		 "~n   ~p",[O]),	    dummy_manager_loop(P,S,MA)    end.dummy_manager_message_sz(B) when binary(B) ->    size(B);dummy_manager_message_sz(L) when list(L) ->    length(L);dummy_manager_message_sz(_) ->    undefined.dummy_manager_handle_message(Bytes) ->    case (catch snmp_pdus:dec_message(Bytes)) of	{'EXIT',Reason} ->	    ?ERR("dummy_manager_handle_message -> "		   "failed decoding message only:~n   ~p",[Reason]),	    {error,Reason};	M ->	    ?DBG("dummy_manager_handle_message -> decoded message:"		   "~n   ~p",[M]),	    {received_trap,M}    end.api(suite) -> [];api(Config) when list(Config) ->    ?P(api),    init_case(Config),    ?line load_master("OLD-SNMPEA-MIB"),    ?line init_old(),    try_test(api_test, [node()]),    ?line unload_master("OLD-SNMPEA-MIB").api_2(X) -> ?P(api_2), api(X).api_3(X) -> ?P(api_3), api(X).subagent(suite) -> [];subagent(Config) when list(Config) ->    ?P(subagent),     {SaNode, _MgrNode, MibDir} = init_case(Config),    ?line {ok, SA} = start_subagent(SaNode, ?klas1, "Klas1"),    try_test(load_test_sa),        ?P1("Testing unregister subagent..."),    MA = whereis(snmp_master_agent),    rpc:call(SaNode, snmp, unregister_subagent, [MA, SA]),    try_test(unreg_test),    ?P1("Loading previous subagent mib in master and testing..."),    ?line ok = snmpa:load_mibs(MA, [MibDir ++ "Klas1"]),    try_test(load_test),    ?P1("Unloading previous subagent mib in master and testing..."),    ?line ok = snmpa:unload_mibs(MA, [MibDir ++ "Klas1"]),    try_test(unreg_test),    ?P1("Testing register subagent..."),    rpc:call(SaNode, snmp, register_subagent,	     [MA, ?klas1, SA]),    try_test(load_test_sa),    ?line stop_subagent(SA),    try_test(unreg_test).    subagent_2(X) -> ?P(subagent_2), subagent(X).subagent_3(X) -> ?P(subagent_3), subagent(X).mnesia(suite) -> [];mnesia(Config) when list(Config) ->    ?P(mnesia),     {SaNode, _MgrNode, _MibDir} = init_case(Config),    ?P1("Starting subagent with mnesia impl..."),    {ok, SA} = start_subagent(SaNode, ?klas2, "Klas2"),    ?line load_master("OLD-SNMPEA-MIB"),    ?line init_old(),    try_test(big_test_2),    ?P1("Testing unregister subagent..."),    MA = whereis(snmp_master_agent),    rpc:call(SaNode, snmp, unregister_subagent, [MA, SA]),    try_test(unreg_test),    ?line unload_master("OLD-SNMPEA-MIB"),    ?line stop_subagent(SA).mnesia_2(X) -> ?P(mnesia_2), mnesia(X).mnesia_3(X) -> ?P(mnesia_3), mnesia(X).multiple_reqs(suite) ->    {req, [], {conf, init_mul, mul_cases(), finish_mul}}.mul_cases() ->    [mul_get, mul_get_err, mul_next, mul_next_err, mul_set_err].    multiple_reqs_2(suite) ->    {req, [], {conf, init_mul, mul_cases_2(), finish_mul}}.multiple_reqs_3(_X) ->     {req, [], {conf, init_mul, mul_cases_3(), finish_mul}}.mul_cases_2() ->    [mul_get_2, mul_get_err_2, mul_next_2, mul_next_err_2, mul_set_err_2].    mul_cases_3() ->    [mul_get_3, mul_get_err_3, mul_next_3, mul_next_err_3, mul_set_err_3].    init_mul(Config) when list(Config) ->    {SaNode, _MgrNode, _MibDir} = init_case(Config),    ?line {ok, SA} = start_subagent(SaNode, ?klas1, "Klas1"),    ?line load_master("OLD-SNMPEA-MIB"),    ?line init_old(),    [{mul_sub, SA} | Config].finish_mul(Config) when list(Config) ->    init_case(Config),        SA = ?config(mul_sub, Config),        ?line unload_master("OLD-SNMPEA-MIB"),    ?line stop_subagent(SA),    lists:keydelete(mul_sub, 1, Config).    mul_get(suite) -> [];mul_get(Config) when list(Config) ->    ?P(mul_get),     init_case(Config),        ?P1("Testing multiple get..."),    try_test(do_mul_get).mul_get_2(X) -> ?P(mul_get_2), mul_get(X).mul_get_3(X) -> ?P(mul_get_3), mul_get(X).	     mul_get_err(suite) -> [];mul_get_err(Config) when list(Config) ->    ?P(mul_get_err),     init_case(Config),        ?P1("Testing multiple get with error..."),    try_test(do_mul_get_err).mul_get_err_2(X) -> ?P(mul_get_err_2), mul_get_err(X).mul_get_err_3(X) -> ?P(mul_get_err_3), mul_get_err(X).	     mul_next(suite) -> [];mul_next(Config) when list(Config) ->    ?P(mul_next),     init_case(Config),        ?P1("Testing multiple next..."),    try_test(do_mul_next).mul_next_2(X) -> ?P(mul_next_2), mul_next(X).mul_next_3(X) -> ?P(mul_next_3), mul_next(X).	     mul_next_err(suite) -> [];mul_next_err(Config) when list(Config) ->    ?P(mul_next_err),     init_case(Config),        ?P1("Testing multiple next..."),    try_test(do_mul_next_err).mul_next_err_2(X) -> ?P(mul_next_err_2), mul_next_err(X).mul_next_err_3(X) -> ?P(mul_next_err_3), mul_next_err(X).	     mul_set(suite) -> [];mul_set(Config) when list(Config) ->    ?P(mul_set),     init_case(Config),        ?P1("Testing multiple set..."),    try_test(do_mul_set).mul_set_2(X) -> ?P(mul_set_2), mul_set(X).mul_set_3(X) -> ?P(mul_set_3), mul_set(X).	     mul_set_err(suite) -> [];mul_set_err(Config) when list(Config) ->    ?P(mul_set_err),     init_case(Config),        ?P1("Testing multiple set with error..."),    try_test(do_mul_set_err).mul_set_err_2(X) -> ?P(mul_set_err_2), mul_set_err(X).mul_set_err_3(X) -> ?P(mul_set_err_3), mul_set_err(X).sa_register(suite) -> [];sa_register(Config) when list(Config) ->    ?P(sa_register),     {SaNode, _MgrNode, MibDir} = init_case(Config),    ?DBG("sa_register -> start subagent", []),    ?P1("start subagent..."),    ?line {ok, SA} = start_subagent(SaNode, ?klas1, "Klas1"),    ?DBG("sa_register -> unregister subagent", []),    ?P1("Testing unregister subagent (2)..."),    MA = whereis(snmp_master_agent),    rpc:call(SaNode, snmp, unregister_subagent, [MA, ?klas1]),    try_test(unreg_test),    ?P1("Unloading Klas1..."),    ?DBG("sa_register -> unload mibs", []),    snmpa:unload_mibs(SA, [MibDir ++ "Klas1"]),    ?P1("Loading SA-MIB..."),    ?DBG("sa_register -> unload mibs", []),    snmpa:load_mibs(SA, [MibDir ++ "SA-MIB"]),        ?P1("register subagent..."),    ?DBG("sa_register -> register subagent", []),    rpc:call(SaNode, snmp, register_subagent, [MA, ?sa, SA]),    try_test(sa_mib),    ?P1("stop subagent..."),    ?DBG("sa_register -> stop subagent", []),    ?line stop_subagent(SA).    sa_register_2(X) -> ?P(sa_register_2), sa_register(X).sa_register_3(X) -> ?P(sa_register_3), sa_register(X).v1_trap(suite) -> [];v1_trap(Config) when list(Config) ->    ?P(v1_trap),     {SaNode, _MgrNode, _MibDir} = init_case(Config),    ?P1("start subagent..."),    ?line {ok, SA} = start_subagent(SaNode, ?sa, "SA-MIB"),    ?P1("Testing trap sending from master agent..."),    MA = whereis(snmp_master_agent),    ?P1("load TestTrap & TestTrapv2..."),     ?line load_master("TestTrap"),    ?line load_master("TestTrapv2"),    ?P1("Testing trap sending from master-agent..."),    try_test(ma_trap1, [MA]),    try_test(ma_trap2, [MA]),    try_test(ma_v2_2_v1_trap, [MA]),    try_test(ma_v2_2_v1_trap2, [MA]),    ?P1("Testing trap sending from subagent..."),    try_test(sa_trap1, [SA]),    try_test(sa_trap2, [SA]),    try_test(sa_trap3, [SA]),        ?P1("unload TestTrap & TestTrapv2..."),     ?line unload_master("TestTrap"),    ?line unload_master("TestTrapv2"),    ?P1("stop subagent..."),    ?line stop_subagent(SA).v2_trap(suite) -> [];v2_trap(Config) when list(Config) ->    ?P(v2_trap),     {SaNode, _MgrNode, _MibDir} = init_case(Config),    ?P1("start subagent..."),    ?line {ok, SA} = start_subagent(SaNode, ?sa, "SA-MIB"),    ?P1("Testing trap sending from master agent..."),    MA = whereis(snmp_master_agent),    ?P1("load TestTrap & TestTrapv2..."),     ?line load_master("TestTrap"),    ?line load_master("TestTrapv2"),    ?P1("Testing trap sending from master-agent..."),    try_test(ma_v2_trap1, [MA]),    try_test(ma_v2_trap2, [MA]),    try_test(ma_v1_2_v2_trap, [MA]),    try_test(ma_v1_2_v2_trap2, [MA]),    try_test(sa_mib),    ?P1("Testing trap sending from subagent..."),    try_test(sa_v1_2_v2_trap1, [SA]),    try_test(sa_v1_2_v2_trap2, [SA]),    try_test(sa_v1_2_v2_trap3, [SA]),        ?P1("unload TestTrap & TestTrapv2..."),     ?line unload_master("TestTrap"),

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?