ct_telnet
模块
CT[医]Telnet
模块摘要
Telnet客户端ct上的通用测试专用层[医]Telnet[医]客户.erl
描述
Common Test
Telnet客户端上的特定层ct_telnet_client.erl
...
使用此模块设置Telnet连接、发送命令和对结果执行字符串匹配。有关如何使用ct_telnet
并配置连接,特别是对于UNIX主机,请参见unix_telnet
手册页。
中定义的默认值ct_telnet
*
- 连接超时%28次等待连接%29=10秒
- 命令超时%28次等待命令返回%29=10秒
- 最大重连接次数=3
- 在重连接尝试之间等待的重连接间隔%28次%29=5秒
- 如果连接空闲%29=每8秒向服务器发送NOP
true
- 轮询限制%28max轮询次数以获得终止于%29=0的剩余字符串
- 轮询间隔%28,轮询之间的睡眠时间%29=1秒
- TCP[医]将telnet套接字的NODELAY选项禁用%28设置为
false
%29%违约用户可以使用以下配置术语修改这些参数:{telnet_settings, [{connect_timeout,Millisec}, {command_timeout,Millisec}, {reconnection_attempts,N}, {reconnection_interval,Millisec}, {keep_alive,Bool}, {poll_limit,N}, {poll_interval,Millisec}, {tcp_nodelay,Bool}]}.Millisec = integer(), N = integer()
输入telnet_settings
测试中包含的配置文件中的术语,以及ct_telnet
自动检索信息。keep_alive
如果有必要,每个连接都可以指定。有关详细信息,请参阅unix_telnet
...测井的默认日志记录行为。ct_telnet
是将有关已执行的操作、命令及其相应结果的信息打印到测试用例HTML日志。未将下列内容打印到HTML日志:从Telnet服务器发送的未由ct_telnet
功能,如expect/3
然而,ct_telnet
中实现的特殊目的事件处理程序。ct_conn_log_h
,用于伐木全Telnet通信量。若要使用此处理程序,请安装Common Test
钩名cth_conn_log
使用测试套件信息函数%29的示例%28:suite() -> [{ct_hooks, [{cth_conn_log, [{conn_mod(),hook_options()}]}]}].conn_mod()
的名称。Common Test
实现连接协议的模块,即,ct_telnet
...大cth_conn_log
钩子对Telnet数据执行未格式化的日志记录到单独的文本文件。所有Telnet通信都会被捕获和打印,包括从服务器发送的任何数据。指向此文本文件的链接位于测试用例HTML日志的顶部。默认情况下,所有Telnet连接的数据记录在一个公共文件%28中default
%29,例如,如果多个Telnet会话并行运行,则会变得混乱。因此,可以为每个连接创建一个单独的日志文件。若要配置此选项,请使用钩子选项hosts
并列出要在套件中使用的服务器/连接的名称。必须为此命名连接才能工作%28(参见ct_telnet:open/1,2,3,4
29%。钩式选择log_type
可以用于更改cth_conn_log
行为。此选项的默认值为raw
,这将导致上述行为。如果值设置为html
,所有Telnet通信都会打印到测试用例HTML日志中。全cth_conn_log
还可以在配置文件中使用配置变量指定所描述的钩子选项。ct_conn_log
...例子:{ct_conn_log, [{ct_telnet,[{log_type,raw}, {hosts,[key_or_name()]}]}]}注在配置文件中指定的钩子选项覆盖测试套件中所有硬编码的钩子选项。日志记录示例:以下内容ct_hooks
语句将使Telnet通信量的打印分离连接的日志。server1
和server2
默认Telnet日志中记录任何其他连接的通信量。suite() -> [{ct_hooks, [{cth_conn_log, [{ct_telnet,[{hosts,[server1,server2]}]}]}]}].如前所述,该规范还可以由配置文件中的如下条目提供:{ct_conn_log, [{ct_telnet,[{hosts,[server1,server2]}]}]}.在这种情况下,ct_hooks
测试套件中的语句如下所示:suite() -> [{ct_hooks, [{cth_conn_log, []}]}].数据类型connection() = handle() | {target_name(), connection_type()} | target_name()
为target_name()
,见模块ct
...connection_type() = telnet | ts1 | ts2handle() = handle()
有关特定Telnet连接的句柄,请参阅模块ct
...prompt_regexp() = string()
匹配特定目标类型的所有可能提示的正则表达式。regexp
不能有任何组,也就是说,在匹配的时候,re:run/3
在STDLIB%29中,%28必须返回一个具有单个元素的列表。出口close(Connection) -> ok | {error, Reason}
类型关闭Telnet连接并停止管理它的进程。连接可以与目标名称和/或句柄相关联。如果Connection
没有关联的目标名称,只能用句柄值%28关闭ct_telnet:open/4
29%。cmd(Connection, Cmd) -> {ok, Data} | {error, Reason}
相当于ct_telnet:cmd(Connection, Cmd, [])
...cmd(Connection, Cmd, Opts) -> {ok, Data} | {error, Reason}
类型通过Telnet发送命令并等待提示。默认情况下,此函数在指定命令的末尾添加新行。如果不想这样做,请使用选项{newline,false}
例如,当发送以字符Interprete作为命令%28 IAC%29前缀的Telnet命令序列时,这是必要的。期权timeout
指定客户端必须等待提示符的时间。如果时间过期,函数将返回{error,timeout}
有关命令超时的默认值的信息,请参阅list of default values
在这个模块的开头。cmdf(Connection, CmdFormat, Args) -> {ok, Data} | {error, Reason}
相当于ct_telnet:cmdf(Connection, CmdFormat, Args, [])
...cmdf(Connection, CmdFormat, Args, Opts) -> {ok, Data} | {error, Reason}
类型发送Telnet命令并等待提示符%28使用格式字符串和参数列表来生成命令%29。有关详细信息,请参阅ct_telnet:cmd/3
...expect(Connection, Patterns) -> term()
相当于ct_telnet:expect(Connections, Patterns, [])
...expect(Connection, Patterns, Opts) -> {ok, Match} | {ok, MatchList, HaltReason} | {error, Reason}
类型从Telnet获取数据并等待预期的模式。Pattern
可以是POSIX正则表达式。当模式成功匹配%28至少一个时,函数返回多个模式%29。RxMatch
是匹配字符串的列表。它看起来如下[FullMatch, SubMatch1, SubMatch2, ...]
,在哪里FullMatch
是由整个正则表达式匹配的字符串,并且SubMatchN
匹配子表达式号的字符串。N
.子表达式用'(' ')'
在正则表达式中。如果Tag
是指定的,返回的Match
还包括匹配的Tag
.否则,只有RxMatch
会被归还。备选方案:idle_timeout
指示如果Telnet客户端空闲%28,即如果未接收到大于%29的数据,则必须返回该函数。IdleTimeout
毫秒。默认超时时间是10秒。total_timeout
设置完整的时间限制。expect
行动。后TotalTimeout
毫秒,{error,timeout}
会被归还。默认值是infinity
%28,即没有时间限制%29。ignore_prompt | no_prompt_check
函数在收到提示时返回,即使尚未匹配任何模式,以及{error,{prompt,Prompt}}
会被归还。但是,可以使用选项修改此行为。ignore_prompt
或选择权no_prompt_check
,这说明expect
仅在找到匹配时或超时后才返回。ignore_prompt
ct_telnet
忽略找到的任何提示。如果服务器发送的数据可以包括模式匹配提示,则此选项非常有用。regexp
28名TargedMod:get_prompt_regexp/0
%29,但不是不使函数返回。no_prompt_check
ct_telnet
根本不搜索提示符。例如,如果Pattern
其本身与提示符相匹配。wait_for_prompt
力ct_telnet
在返回%28之前等待直到收到提示字符串,即使模式已经匹配%29。这等于调用expect(Conn, Patterns++[{prompt,Prompt}], [sequence|Opts])
注意这个选项idle_timeout
和total_timeout
可以中止等待提示的操作。repeat | repeat, N
模式%28s%29必须多次匹配。如果N
,模式%28s%29匹配。N
时间,则该函数将返回HaltReason = done
此选项可被一个或多个选项中断。HaltPatterns
...MatchList
总是返回,即Match
而不是只有一个Match
.也HaltReason
会被归还。sequence
所有模式都必须在一个序列中匹配。在匹配所有模式之前,不结束匹配。此选项可以被一个或多个中断。HaltPatterns
...MatchList
总是返回,即Match
而不是只有一个Match
.也HaltReason
会被归还。例1:expect(Connection,[{abc,"ABC"},{xyz,"XYZ"}],[sequence,{halt,[{nnn,"NNN"}]}])首先,它试图匹配"ABC"
,然后"XYZ"
,但是如果"NNN"
,则该函数将返回{error,{nnn,["NNN"]}}
.如果两者都是"ABC"
和"XYZ"
,则函数返回{ok,[AbcMatch,XyzMatch]}
...例2:expect(Connection,[{abc,"ABC"},{xyz,"XYZ"}],[{repeat,2},{halt,[{nnn,"NNN"}]}])这个试图匹配"ABC"
或"XYZ"
两次。如果"NNN"
,则该函数将返回HaltReason = {nnn,["NNN"]}
...备选方案repeat
和sequence
可以组合以多次匹配序列。get_data(Connection) -> {ok, Data} | {error, Reason}
类型获取自上次命令发送以来Telnet客户端接收的所有数据。只返回以换行符结尾的字符串。如果上次接收的字符串尚未终止,则可以自动轮询连接,直到字符串完成为止。轮询功能由配置值控制。poll_limit
和poll_interval
默认情况下是禁用的。这意味着该函数将立即返回所有已接收的完整字符串,并将剩余的未终止字符串保存为稍后的字符串。get_data
打电话。open(Name) -> {ok, Handle} | {error, Reason}
相当于ct_telnet:open(Name, telnet)
...open(Name, ConnType) -> {ok, Handle} | {error, Reason}
类型打开到指定目标主机的Telnet连接。open(KeyOrName, ConnType, TargetMod) -> {ok, Handle} | {error, Reason}
相当于ct_telnet:ct_telnet:open(KeyOrName, ConnType, TargetMod, [])
...open(KeyOrName, ConnType, TargetMod, Extra) -> {ok, Handle} | {error, Reason}
类型打开到指定目标主机的Telnet连接。目标数据必须存在于配置文件中。连接可以与Name
和/或返回的人Handle
.若要为目标分配名称,请使用下列选项之一:
ct:require/2
在测试用例中
- 阿
require
语句在套件信息函数%28中。suite/0
%29
- 阿
require
测试用例信息函数中的语句。
如果希望连接与Handle
只有%28,例如,如果需要打开到主机%29的多个连接,请使用Key
配置变量名,以指定目标。注意,没有关联目标名称的连接只能使用Handle
价值。
TargetMod
是导出函数的模块。connect(Ip, Port, KeepAlive, Extra)
和get_prompt_regexp()
对于指定的TargetType
%28例如,unix_telnet
29%。
为target_name()
,见模块ct
...
另见ct:require/2
...
send(Connection, Cmd) -> ok | {error, Reason}
相当于ct_telnet:send(Connection, Cmd, [])
...
send(Connection, Cmd, Opts) -> ok | {error, Reason}
类型
发送Telnet命令并立即返回。
默认情况下,此函数将向指定命令的末尾添加换行符。如果不希望这样,可以选择{newline,false}
可以使用。例如,当发送以字符Interprete作为命令%28 IAC%29前缀的Telnet命令序列时,这是必要的。
命令的结果输出可以用ct_telnet:get_data/2
或ct_telnet:expect/2,3
...
sendf(Connection, CmdFormat, Args) -> ok | {error, Reason}
相当于ct_telnet:sendf(Connection, CmdFormat, Args, [])
...
sendf(Connection, CmdFormat, Args, Opts) -> ok | {error, Reason}
类型
发送Telnet命令并立即返回%28,使用格式字符串和参数列表生成命令%29。
另见
unix_telnet
© 2010–2017 Ericsson AB
根据ApacheLicense,版本2.0获得许可。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com