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 + -
显示快捷键?