ct_snmp
ct_snmp
模块
ct_snmp
模块摘要
SNMP应用程序的通用测试用户界面模块。
描述
Common Test
控件的用户界面模块。SNMP
申请。
这个模块的目的是简化测试用例编写器的SNMP配置。许多测试用例可以使用默认值进行常规操作,然后不需要提供SNMP配置文件。当需要更改特定的配置参数时,可以ct_snmp
通过Common Test
配置文件传递相关SNMP配置文件的子集。对于更多特定的配置参数,可以在测试套件数据目录中放置一个简单的SNMP配置文件。为了简化测试套件,请Common Test
跟踪一些SNMP管理器信息。通过这种方式,测试套件不必处理尽可能多的输入参数,就好像它必须直接连接OTP SNMP管理器一样。
可配置SNMP管理器和代理参数:
经理配置:
[{start_manager, boolean()}
可选的。默认是true
。
{users, [{user_name(), [call_back_module(), user_data()]}]}
可选的。
{usm_users, [{usm_user_name(), [usm_config()]}]}
可选的。仅限SNMPv3。
{managed_agents,[{agent_name(), [user_name(), agent_ip(), agent_port(), [agent_config()]]}]}
managed_agents
是可选的。
{max_msg_size, integer()}
可选的。默认是484
。
{mgr_port, integer()}
可选的。默认是5000
。
{engine _id, string()}
可选的。默认是"mgrEngine"
。
代理配置:
{start_agent, boolean()}
可选的。默认是false
。
{agent_sysname, string()}
可选的。默认是"ct_test"
。
{agent_manager_ip, manager_ip()}
可选的。默认是localhost
。
{agent_vsns, list()}
可选的。默认是[v2]
。
{agent_trap_udp, integer()}
可选的。默认是5000
。
{agent_udp, integer()}
可选的。默认是4000
。
{agent_notify_type, atom()}
可选的。默认是trap
。
{agent_sec_type, sec_type()}
可选的。默认是none
。
{agent_passwd, string()}
可选的。默认是""
。
{agent_engine_id, string()}
可选的。默认是"agentEngine"
。
{agent_max_msg_size, string()}
可选的。默认是484
。
以下参数表示SNMP
配置文件context.conf
,standard.conf
,community.conf
,vacm.conf
,usm.conf
,notify.conf
,target_addr.conf
,和target_params.conf
。注意所有的值agent.conf
都可以用上面列出的参数修改。所有这些配置文件都具有由SNMP
应用程序设置的默认值。通过提供有效配置值列表或位于测试套件数据目录中的文件,可以覆盖这些值,如果将函数file:consult/1
应用于文件,该文件可以生成有效配置值列表。
{agent_contexts, [term()] | {data_dir_file, rel_path()}}
可选的。
{agent_community, [term()] | {data_dir_file, rel_path()}}
可选的。
{agent_sysinfo, [term()] | {data_dir_file, rel_path()}}
可选的。
{agent_vacm, [term()] | {data_dir_file, rel_path()}}
可选的。
{agent_usm, [term()] | {data_dir_file, rel_path()}}
可选的。
{agent_notify_def, [term()] | {data_dir_file, rel_path()}}
可选的。
{agent_target_address_def, [term()] | {data_dir_file, rel_path()}}
可选的。
{agent_target_param_def, [term()] | {data_dir_file, rel_path()}}
可选的。
MgrAgentConfName
函数中的参数是您在测试套件中使用require
语句分配的名称。示例(其中MgrAgentConfName = snmp_mgr_agent
):
suite() -> [{require, snmp_mgr_agent, snmp}].
或
ct:require(snmp_mgr_agent, snmp).
注意,SNMPv 3配置需要USM用户,不要与用户混淆。
SNMP
陷阱、通知和报告消息由用户回调模块处理。有关详细信息,请参阅SNMP
申请。
建议使用.hrl
由Erlang / OTP MIB编译器创建的文件来定义对象标识符(OID)。例如,要从erlNodeTable
OTP-MIB中获取Erlang节点名称:
Oid = ?erlNodeEntry ++ [?erlNodeName, 1]
此外,值可以用于设置SNMP
应用程序配置参数,config
,server
,net_if
,等等(对于有效的参数和类型的列表,请参见User's Guide for the SNMP application
)。这是通过在以下格式中定义配置数据变量完成的:
{snmp_app, [{manager, [snmp_app_manager_params()]},
{agent, [snmp_app_agent_params()]}]}.
必须在套件中使用数据名称require
(请参见上面的示例)。将此名称作为参数传递SnmpAppConfName
给ct_snmp:start/3
。ct_snmp
指定某些SNMP
应用程序配置参数(例如{verbosity,trace}
参数config
)的默认值。这组默认值与用户指定的参数合并。用户值覆盖ct_snmp
默认值。
数据类型
agent_config() = {Item, Value}agent_ip() = ip()agent_name() = atom()agent_port() = integer()call_back_module() = atom()error_index() = integer()error_status() = noError | atom()ip() = string() | {integer(), integer(), integer(), integer()}manager_ip() = ip()oid() = [byte()]oids() = [oid()]rel_path() = string()sec_type() = none | minimum | semisnmp_app_agent_params() = term()snmp_app_manager_params() = term()snmpreply() = {error_status(), error_index(), varbinds()}user_data() = term()user_name() = atom()usm_config() = {Item, Value}usm_user_name() = string()value_type() = o('OBJECT IDENTIFIER') | i('INTEGER') | u('Unsigned32') | g('Unsigned32') | s('OCTET STRING')var_and_val() = {oid(), value_type(), value()}varbind() = term()varbinds() = [varbind()]varsandvals() = [var_and_val()]
这些数据类型在SNMP
申请。
出口
get_next_values(Agent, Oids, MgrAgentConfName) -> SnmpReply
类型
发出同步SNMPget next
请求。
get_values(Agent, Oids, MgrAgentConfName) -> SnmpReply
类型
发出同步SNMPget
请求。
load_mibs(Mibs) -> ok | {error, Reason}
类型
将MIB加载到代理程序中snmp_master_agent
。
register_agents(MgrAgentConfName, ManagedAgents) -> ok | {error, Reason}
类型
明确指示经理处理该代理。对应于进入agents.conf
。
此函数尝试注册指定的托管代理,而不检查它们是否存在。若要更改已注册的托管代理,必须首先注销代理。
register_users(MgrAgentConfName, Users) -> ok | {error, Reason}
类型
注册负责特定代理的经理实体(=用户)。对应于进入users.conf
。
该函数尝试注册指定的用户,而不检查它们是否存在。要更改注册用户,用户必须先注销。
register_usm_users(MgrAgentConfName, UsmUsers) -> ok | {error, Reason}
类型
明确指示经理处理此USM用户。对应于进入usm.conf
。
此函数尝试注册指定的用户,而不检查其中是否存在。若要更改已注册用户,必须首先取消注册。
set_info(Config) -> [{Agent, OldVarsAndVals, NewVarsAndVals}]
类型
返回所有成功的列表。set
在测试用例中以反向顺序执行请求。该列表包含涉及的用户和代理,以及前面的值。set
,以及新的价值。这是为了简化清理功能。end_per_testcase
,也就是撤销set
请求及其可能的副作用。
set_values(Agent, VarsAndVals, MgrAgentConfName, Config) -> SnmpReply
类型
发出同步SNMPset
请求。
start(Config, MgrAgentConfName) -> ok
相当于ct_snmp:start(Config, MgrAgentConfName, undefined)
...
start(Config, MgrAgentConfName, SnmpAppConfName) -> ok
类型
启动SNMP管理器和/或代理。在管理器的情况下,用户和代理的注册,如配置所指定的。MgrAgentConfName
,被执行。在使用SNMPv 3时,也会注册名为USM的用户。用户,usm_users
,托管代理也可以在以后使用ct_snmp:register_users/2
,,,ct_snmp:register_agents/2
,和ct_snmp:register_usm_users/2
...
启动的代理称为snmp_master_agent
.使用ct_snmp:load_mibs/1
将MIB装载到代理程序中。
带着SnmpAppConfName
可以用参数配置SNMP应用程序。config
,,,mibs
,,,net_if
等等。将这些值与%28合并,并可能覆盖由ct_snmp
...
stop(Config) -> ok
类型
停止SNMP管理器和/或代理,并删除创建的所有文件。
unload_mibs(Mibs) -> ok | {error, Reason}
类型
从代理卸载MIBsnmp_master_agent
...
unregister_agents(MgrAgentConfName) -> ok
类型
注销所有托管代理。
unregister_agents(MgrAgentConfName, ManagedAgents) -> ok
类型
取消注册指定的托管代理。
unregister_users(MgrAgentConfName) -> ok
类型
注销所有用户。
unregister_users(MgrAgentConfName, Users) -> ok
类型
取消注册指定的用户。
unregister_usm_users(MgrAgentConfName) -> ok
类型
取消注册所有USM用户。
unregister_usm_users(MgrAgentConfName, UsmUsers) -> ok
类型
取消注册指定的USM用户。