查看源码 ct_master (common_test v1.27.5)

用于 Common Test 的分布式测试执行控制。

此模块导出用于在多个主机上并行运行 Common Test 节点的函数。

摘要

类型

要执行的测试规范的文件名。

函数

停止所有正在运行的测试。

停止指定节点上的测试。

如果设置为 true,则 ct_master 日志将以原始 HTML 格式写入,而不使用 Common Test CSS 样式表。

获取 Common Test 主事件管理器的引用。此引用可用于在测试运行时添加用户特定的事件处理程序等。

返回测试进度。如果 Statusongoing,则表示测试正在节点上运行且尚未完成。

TestSpecs 中指定的已生成节点上运行测试(请参阅 run/4)。

测试在 TestSpecs 中指定的节点上生成。 TestSpec 中的每个规范都单独处理。但是,也可以指定要合并为一个规范的规范列表,然后再执行测试。任何没有特定节点规范的测试也会在 InclNodes 中的节点上执行。ExclNodes 列表中的节点将从测试中排除。

测试根据 TestSpecsNode 上生成。

使用 ct:run_test/1Node 上生成测试。

类型

-type test_spec() :: file:name_all().

要执行的测试规范的文件名。

函数

-spec abort() -> ok.

停止所有正在运行的测试。

-spec abort(Nodes) -> ok when Nodes :: Node | [Node], Node :: node().

停止指定节点上的测试。

此函数的链接

basic_html(Bool)

查看源码 (自 OTP R15B01 起)
-spec basic_html(Bool) -> ok when Bool :: boolean().

如果设置为 true,则 ct_master 日志将以原始 HTML 格式写入,而不使用 Common Test CSS 样式表。

此函数的链接

get_event_mgr_ref()

查看源码 (自 OTP 17.5 起)
-spec get_event_mgr_ref() -> atom().

获取 Common Test 主事件管理器的引用。此引用可用于在测试运行时添加用户特定的事件处理程序等。

示例

gen_event:add_handler(ct_master:get_event_mgr_ref(), my_ev_h, [])
-spec progress() -> [{Node, Status}] when Node :: node(), Status :: atom().

返回测试进度。如果 Statusongoing,则表示测试正在节点上运行且尚未完成。

-spec run(TestSpecs) -> [{Specs, ok} | {error, Reason}]
             when
                 TestSpecs :: TestSpec | [TestSpec] | [[TestSpec]],
                 TestSpec :: test_spec(),
                 Specs :: [file:filename_all()],
                 Reason :: term().

TestSpecs 中指定的已生成节点上运行测试(请参阅 run/4)。

如果使用字符串列表的 TestSpecs 调用,则等效于 run(TestSpecs, false, [], [])

如果使用字符串 TS 调用,则等效于 run([TS], false, [], [])

此函数的链接

run(TestSpecs, InclNodes, ExclNodes)

查看源码
-spec run(TestSpecs, InclNodes, ExclNodes) -> [{Specs, ok} | {error, Reason}]
             when
                 TestSpecs :: TestSpec | [TestSpec] | [[TestSpec]],
                 TestSpec :: test_spec(),
                 InclNodes :: [node()],
                 ExclNodes :: [node()],
                 Specs :: [file:filename_all()],
                 Reason :: term().

等效于 run(TestSpecs, false, InclNodes, ExclNodes)

此函数的链接

run(TestSpecs, AllowUserTerms, InclNodes, ExclNodes)

查看源码
-spec run(TestSpecs, AllowUserTerms, InclNodes, ExclNodes) -> [{Specs, ok} | {error, Reason}]
             when
                 TestSpecs :: TestSpec | [TestSpec] | [[TestSpec]],
                 TestSpec :: test_spec(),
                 AllowUserTerms :: boolean(),
                 InclNodes :: [node()],
                 ExclNodes :: [node()],
                 Specs :: [file:filename_all()],
                 Reason :: term().

测试在 TestSpecs 中指定的节点上生成。 TestSpec 中的每个规范都单独处理。但是,也可以指定要合并为一个规范的规范列表,然后再执行测试。任何没有特定节点规范的测试也会在 InclNodes 中的节点上执行。ExclNodes 列表中的节点将从测试中排除。

此函数的链接

run_on_node(TestSpecs, Node)

查看源码
-spec run_on_node(TestSpecs, Node) -> [{Specs, ok} | {error, Reason}]
                     when
                         TestSpecs :: TestSpec | [TestSpec] | [[TestSpec]],
                         TestSpec :: test_spec(),
                         Node :: node(),
                         Specs :: [file:filename_all()],
                         Reason :: term().

等效于 run_on_node(TestSpecs, false, Node)

此函数的链接

run_on_node(TestSpecs, AllowUserTerms, Node)

查看源码
-spec run_on_node(TestSpecs, AllowUserTerms, Node) -> [{Specs, ok} | {error, Reason}]
                     when
                         TestSpecs :: TestSpec | [TestSpec] | [[TestSpec]],
                         TestSpec :: test_spec(),
                         AllowUserTerms :: boolean(),
                         Node :: node(),
                         Specs :: [file:filename_all()],
                         Reason :: term().

测试根据 TestSpecsNode 上生成。

此函数的链接

run_test(Node, Opts)

查看源码
-spec run_test(Node, Opts) -> ok
                  when
                      Node :: node(),
                      Opts :: [OptTuples],
                      OptTuples ::
                          {dir, TestDirs} |
                          {suite, Suites} |
                          {group, Groups} |
                          {testcase, Cases} |
                          {spec, TestSpecs} |
                          {join_specs, boolean()} |
                          {label, Label} |
                          {config, CfgFiles} |
                          {userconfig, UserConfig} |
                          {allow_user_terms, boolean()} |
                          {logdir, LogDir} |
                          {silent_connections, Conns} |
                          {stylesheet, CSSFile} |
                          {cover, CoverSpecFile} |
                          {cover_stop, boolean()} |
                          {step, StepOpts} |
                          {event_handler, EventHandlers} |
                          {include, InclDirs} |
                          {auto_compile, boolean()} |
                          {abort_if_missing_suites, boolean()} |
                          {create_priv_dir, CreatePrivDir} |
                          {multiply_timetraps, M} |
                          {scale_timetraps, boolean()} |
                          {repeat, N} |
                          {duration, DurTime} |
                          {until, StopTime} |
                          {force_stop, ForceStop} |
                          {decrypt, DecryptKeyOrFile} |
                          {refresh_logs, LogDir} |
                          {logopts, LogOpts} |
                          {verbosity, VLevels} |
                          {basic_html, boolean()} |
                          {esc_chars, boolean()} |
                          {keep_logs, KeepSpec} |
                          {ct_hooks, CTHs} |
                          {ct_hooks_order, CTHsOrder} |
                          {enable_builtin_hooks, boolean()} |
                          {release_shell, boolean()},
                      TestDirs :: [string()] | string(),
                      Suites :: [string()] | [atom()] | string() | atom(),
                      Cases :: [atom()] | atom(),
                      Groups :: GroupNameOrPath | [GroupNameOrPath],
                      GroupNameOrPath :: [atom()] | atom() | all,
                      TestSpecs :: [string()] | string(),
                      Label :: string() | atom(),
                      CfgFiles :: [string()] | string(),
                      UserConfig :: [{CallbackMod, CfgStrings}] | {CallbackMod, CfgStrings},
                      CallbackMod :: atom(),
                      CfgStrings :: [string()] | string(),
                      LogDir :: string(),
                      Conns :: all | [atom()],
                      CSSFile :: string(),
                      CoverSpecFile :: string(),
                      StepOpts :: [StepOpt],
                      StepOpt :: config | keep_inactive,
                      EventHandlers :: EH | [EH],
                      EH :: atom() | {atom(), InitArgs} | {[atom()], InitArgs},
                      InitArgs :: [term()],
                      InclDirs :: [string()] | string(),
                      CreatePrivDir :: auto_per_run | auto_per_tc | manual_per_tc,
                      M :: integer(),
                      N :: integer(),
                      DurTime :: HHMMSS,
                      HHMMSS :: string(),
                      StopTime :: YYMoMoDDHHMMSS | HHMMSS,
                      YYMoMoDDHHMMSS :: string(),
                      ForceStop :: skip_rest | boolean(),
                      DecryptKeyOrFile :: {key, DecryptKey} | {file, DecryptFile},
                      DecryptKey :: string(),
                      DecryptFile :: string(),
                      LogOpts :: [LogOpt],
                      LogOpt :: no_nl | no_src,
                      VLevels :: VLevel | [{Category, VLevel}],
                      VLevel :: integer(),
                      Category :: atom(),
                      KeepSpec :: all | pos_integer(),
                      CTHs :: [CTHModule | {CTHModule, CTHInitArgs}],
                      CTHsOrder :: atom(),
                      CTHModule :: atom(),
                      CTHInitArgs :: term().

使用 ct:run_test/1Node 上生成测试。