非常教程

Erlang 20参考手册

common_test

ct_telnet

模块

CT[医]Telnet

模块摘要

Telnet客户端ct上的通用测试专用层[医]Telnet[医]客户.erl

描述

Common TestTelnet客户端上的特定层ct_telnet_client.erl...

使用此模块设置Telnet连接、发送命令和对结果执行字符串匹配。有关如何使用ct_telnet并配置连接,特别是对于UNIX主机,请参见unix_telnet手册页。

中定义的默认值ct_telnet*

  • 连接超时%28次等待连接%29=10秒
  • 命令超时%28次等待命令返回%29=10秒
  • 最大重连接次数=3
  • 在重连接尝试之间等待的重连接间隔%28次%29=5秒
  • 如果连接空闲%29=每8秒向服务器发送NOPtrue
  • 轮询限制%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,429%。钩式选择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通信量的打印分离连接的日志。server1server2默认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/429%。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_promptct_telnet忽略找到的任何提示。如果服务器发送的数据可以包括模式匹配提示,则此选项非常有用。regexp28名TargedMod:get_prompt_regexp/0%29,但不是不使函数返回。no_prompt_checkct_telnet根本不搜索提示符。例如,如果Pattern其本身与提示符相匹配。wait_for_promptct_telnet在返回%28之前等待直到收到提示字符串,即使模式已经匹配%29。这等于调用expect(Conn, Patterns++[{prompt,Prompt}], [sequence|Opts])注意这个选项idle_timeouttotal_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"]}...备选方案repeatsequence可以组合以多次匹配序列。get_data(Connection) -> {ok, Data} | {error, Reason}类型获取自上次命令发送以来Telnet客户端接收的所有数据。只返回以换行符结尾的字符串。如果上次接收的字符串尚未终止,则可以自动轮询连接,直到字符串完成为止。轮询功能由配置值控制。poll_limitpoll_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_telnet29%。

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/2ct_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获得许可。

Erlang 20

Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。

主页 https://www.erlang.org/
源码 https://github.com/erlang/otp
版本 20
发布版本 20.1