查看源码 ct_master (common_test v1.27.5)
用于 Common Test
的分布式测试执行控制。
此模块导出用于在多个主机上并行运行 Common Test
节点的函数。
摘要
类型
要执行的测试规范的文件名。
函数
停止所有正在运行的测试。
停止指定节点上的测试。
如果设置为 true
,则 ct_master
日志将以原始 HTML 格式写入,而不使用 Common Test
CSS 样式表。
获取 Common Test
主事件管理器的引用。此引用可用于在测试运行时添加用户特定的事件处理程序等。
返回测试进度。如果 Status
为 ongoing
,则表示测试正在节点上运行且尚未完成。
在 TestSpecs
中指定的已生成节点上运行测试(请参阅 run/4
)。
测试在 TestSpecs
中指定的节点上生成。 TestSpec
中的每个规范都单独处理。但是,也可以指定要合并为一个规范的规范列表,然后再执行测试。任何没有特定节点规范的测试也会在 InclNodes
中的节点上执行。ExclNodes
列表中的节点将从测试中排除。
测试根据 TestSpecs
在 Node
上生成。
使用 ct:run_test/1
在 Node
上生成测试。
类型
-type test_spec() :: file:name_all().
要执行的测试规范的文件名。
函数
-spec abort() -> ok.
停止所有正在运行的测试。
-spec abort(Nodes) -> ok when Nodes :: Node | [Node], Node :: node().
停止指定节点上的测试。
-spec basic_html(Bool) -> ok when Bool :: boolean().
如果设置为 true
,则 ct_master
日志将以原始 HTML 格式写入,而不使用 Common Test
CSS 样式表。
-spec get_event_mgr_ref() -> atom().
获取 Common Test
主事件管理器的引用。此引用可用于在测试运行时添加用户特定的事件处理程序等。
示例
gen_event:add_handler(ct_master:get_event_mgr_ref(), my_ev_h, [])
返回测试进度。如果 Status
为 ongoing
,则表示测试正在节点上运行且尚未完成。
-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, [], [])
。
-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().
-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
列表中的节点将从测试中排除。
-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().
-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().
测试根据 TestSpecs
在 Node
上生成。
-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/1
在 Node
上生成测试。