协议
DebugDataIterator
在 fuchsia.test.manager/test_manager.fidl 中定义
客户端可通过其检索调试数据信息的迭代器协议。
GetNext
检索下一批调试数据。这是一个挂起获取;如果没有立即可用的数据,调用会挂起,直到有可用数据。返回所有数据后,该调用会返回一个空向量。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
data |
vector<DebugData>
|
GetNextCompressed
检索下一批调试数据(使用 zstd 压缩)。这是一个挂起获取;如果没有立即可用的数据,则调用会挂起,直到有可用数据。返回所有数据后,该调用会返回一个空向量。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
data |
vector<DebugData>
|
EarlyBootProfile
在 fuchsia.test.manager/test_manager.fidl 中定义
用于管理前期启动配置文件的协议。我们的客户端应在运行所有测试后调用此方法。
RegisterWatcher
注册迭代器以监视前期启动配置文件。
请求
| 名称 | 类型 |
|---|---|
iterator |
server_end:DebugDataIterator
|
SuiteController
在 fuchsia.test.manager/test_manager.fidl 中定义
提供对使用 SuiteRunner.RunSuite 启动的正在运行的测试套件的控制和监控。
在套件运行完毕且所有事件都已通过 WatchEvents 传递后,服务器会关闭其通道端。如果客户端断开连接,套件会立即终止,并且所有结果都会被舍弃。
关闭
立即终止运行。SuiteController 将在所有资源释放后断开连接。此方法会终止测试,即使测试正在进行中也是如此。
请求
<EMPTY>
停止
正常停止套件运行。在释放所有资源并耗尽此控制器中的所有事件后,SuiteController 将断开连接。
请求
<EMPTY>
WatchEvents
使用挂起获取模式在事件可用时返回事件。返回一个空矢量,表示不会再有其他事件。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
SuiteController_WatchEvents_Result
|
SuiteRunner
在 fuchsia.test.manager/test_manager.fidl 中定义
运行测试套件。
运行
运行测试套件。套件是实现 fuchsia.test.Suite 的测试组件。
请求
| 名称 | 类型 |
|---|---|
test_suite_url |
fuchsia.url/Url
|
options |
RunSuiteOptions
|
controller |
server_end:SuiteController
|
TestCaseEnumerator
在 fuchsia.test.manager/test_manager.fidl 中定义
枚举实现 fuchsia.test.Suite 协议的测试套件中的用例。
枚举
为测试用例创建迭代器。
请求
| 名称 | 类型 |
|---|---|
test_suite_url |
fuchsia.url/Url
|
options |
EnumerateTestCasesOptions
|
iterator |
server_end:TestCaseIterator
|
响应
| 名称 | 类型 |
|---|---|
payload |
TestCaseEnumerator_Enumerate_Result
|
TestCaseIterator
在 fuchsia.test.manager/test_manager.fidl 中定义
用于列出可用测试用例的迭代器。
GetNext
返回下一批测试用例。返回空向量,表示迭代已完成。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
test_cases |
vector<TestCase>:1024
|
STRUCTS
DirectoryAndToken 资源
在 fuchsia.test.manager/test_manager.fidl 中定义
目录的句柄和用于指示客户端何时完成目录检查的令牌。在 |release_fence| 保持打开状态期间,服务器端将保留 |directory| 中的所有资源,例如子目录和文件。|release_fence| is used instead of observing the |directory| channel directly as it is possible to clone and open new channels to the same directory.
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
directory |
client_end:fuchsia.io/Directory
|
|
无默认应用 |
token |
handle<eventpair>
|
用于控制目录保留的事件对句柄。当此句柄关闭时,目录将不再保留。 |
无默认应用 |
SuiteController_WatchEvents_Response 资源
在 fuchsia.test.manager/test_manager.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
events |
vector<Event>:1024
|
无默认应用 |
TestCaseEnumerator_Enumerate_Response
在 fuchsia.test.manager/test_manager.fidl 中定义
<EMPTY>
枚举
LaunchError flexible
类型:uint32
在 fuchsia.test.manager/test_manager.fidl 中定义
LaunchSuite 调用出错。
| 名称 | 值 | 说明 |
|---|---|---|
RESOURCE_UNAVAILABLE |
1 |
资源不足,无法执行操作。 |
INSTANCE_CANNOT_RESOLVE |
2 |
无法解析 |
INVALID_ARGS |
3 |
传递的参数无效。 |
FAILED_TO_CONNECT_TO_TEST_SUITE |
4 |
未能连接到测试应公开的 |
CASE_ENUMERATION |
5 |
未能枚举测试。 |
INTERNAL_ERROR |
6 |
发生了一些内部错误。测试管理器设置出现问题。 检查日志并报告 bug。 |
NO_MATCHING_CASES |
7 |
没有与指定测试过滤条件匹配的测试用例。仅当指定了测试过滤条件时,系统才会返回此错误。如果测试套件没有测试用例,则该套件将通过。 |
INVALID_MANIFEST |
8 |
测试清单无效。 |
LogsIteratorType flexible
类型:uint32
在 fuchsia.test.manager/test_manager.fidl 中定义
备用日志迭代机制的枚举。
| 名称 | 值 | 说明 |
|---|---|---|
BATCH |
1 |
表示使用 |
SOCKET |
2 |
指示使用 |
SuiteResult flexible
类型:uint32
在 fuchsia.test.manager/test_manager.fidl 中定义
表示套件运行的结果。
| 名称 | 值 | 说明 |
|---|---|---|
FINISHED |
1 |
套件正常完成,所有测试用例结果均为 |
失败 |
2 |
套件正常完成,但部分测试用例结果既不是 |
DID_NOT_FINISH |
3 |
套件实现崩溃、未发送 |
TIMED_OUT |
4 |
整个套件运行超时。 |
已停止 |
5 |
套件运行已停止。 |
INTERNAL_ERROR |
6 |
TestCaseResult flexible
类型:uint32
在 fuchsia.test.manager/test_manager.fidl 中定义
表示测试用例运行的结果。
| 名称 | 值 | 说明 |
|---|---|---|
已跳过 |
1 |
测试用例已跳过。 |
通过 |
2 |
测试用例已通过。 |
失败 |
3 |
测试用例失败。 |
TIMED_OUT |
4 |
测试用例超时。 |
ERROR |
5 |
套件实现未返回测试用例的结果。 |
TABLES
CustomArtifact 资源
在 fuchsia.test.manager/test_manager.fidl 中定义
描述包含测试生成的“自定义”(未分类)工件的目录。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
component_moniker |
string:4096
|
生成该目录的组件的 moniker(相对于测试领域的根目录)。 |
2 |
directory_and_token |
DirectoryAndToken
|
包含工件的目录。 |
DebugData 资源
在 fuchsia.test.manager/test_manager.fidl 中定义
描述可用的调试数据。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
name |
string:512
|
文件名称。每个 |
2 |
socket |
handle<socket>
|
可通过其访问文件的套接字。 |
EnumerateTestCasesOptions 资源
在 fuchsia.test.manager/test_manager.fidl 中定义
用于指定应如何枚举测试用例的选项。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
realm_options |
RealmOptions
|
指定要在其中枚举测试用例的领域。如果未提供此字段,测试用例将在测试管理器内的封闭领域中枚举。需要非封闭领域或具有自定义运行程序的测试领域的客户端会使用此选项。 |
事件资源
在 fuchsia.test.manager/test_manager.fidl 中定义
通过 SuiteController.WatchEvents 传送的事件。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
timestamp |
zx/Time
|
事件发生的时间。 |
2 |
details |
EventDetails
|
事件的详细信息。 |
RealmOptions 资源
在 fuchsia.test.manager/test_manager.fidl 中定义
用于指定应在哪个领域中运行测试套件的选项。这些选项供需要非封闭领域或具有自定义运行程序的测试领域的客户端使用。如需了解详情,请参阅 [https://fuchsia.dev/fuchsia-src/development/testing/components/create_test_realm] 和 [https://fuchsia.dev/fuchsia-src/development/testing/components/test_runner_framework#non-hermetic_tests]。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
realm |
client_end:fuchsia.component/Realm
|
包含要在其中启动测试的集合的领域。必须填写此字段。 |
2 |
offers |
vector<fuchsia.component.decl/Offer>:1024
|
从领域到测试集合的所有优惠。必须填写此字段。 |
3 |
test_collection |
string:255
|
要在其中启动测试的测试集合。必须填写此字段。 |
RunSuiteOptions 资源
在 fuchsia.test.manager/test_manager.fidl 中定义
用于指定测试套件运行方式的选项。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
realm_options |
RealmOptions
|
指定要在其中运行测试套件的领域。如果未提供此字段,测试将在测试管理器内的封闭领域中运行。需要非封闭领域或具有自定义运行程序的测试领域的客户端会使用此选项。 |
2 |
run_disabled_tests |
bool
|
如果设置为 true,则即使测试用例已被测试作者停用,也会执行。此值默认为 false。 |
3 |
max_concurrent_test_case_runs |
uint16
|
定义要并发运行的测试用例数上限。如果未指定,则由测试套件组件决定此值。 |
4 |
arguments |
vector<string:16384>:4095
|
要传递给测试的命令行参数。测试运行程序决定如何将这些参数传递给测试。默认情况下,此值为空矢量(无参数)。 |
5 |
timeout |
zx/Duration
|
整个套件运行的超时时间。如果未指定,则没有超时,套件运行可能会无限期挂起。 |
6 |
test_case_filters |
vector<string:4096>:1024
|
测试用例过滤条件,采用 glob 模式 [https://en.wikipedia.org/wiki/Glob_(programming)]。 您可以通过在前面添加“-”来指定排除性过滤条件。默认情况下,此值为空向量(无过滤条件)。 如果同时满足以下两个条件,则会运行给定的测试用例:
例如,假设某个套件包含测试用例
|
7 |
logs_iterator_type |
LogsIteratorType
|
指定客户端将使用哪种迭代器来检索日志。默认情况下,此值为 |
8 |
log_interest |
vector<fuchsia.diagnostics/LogInterestSelector>:64
|
配置在过滤来自测试套件组件的日志时要应用的最低严重级别。 |
9 |
accumulate_debug_data |
bool
|
如果设置为 true,则为此运行收集的调试数据将累积在测试管理器的 tmp 文件夹中,并与之前运行中收集的调试数据(此标志设置为 true)一起累积。默认值为 false。 当批量运行多个测试时,可以使用此选项,因为一次性提供累积数据比一次提供一个测试的调试数据更高效。 |
10 |
no_exception_channel |
bool
|
如果为 true,则表示测试会创建异常渠道。在这种情况下,测试管理器将避免创建自己的异常渠道,以避免冲突。默认值为 false。 新增:26
|
11 |
break_on_failure |
bool
|
如果为 true,则测试运行程序应在遇到失败时停止(如果支持)测试套件,以便调试程序将来可以附加到进程。如果测试运行程序不支持停止运行测试套件,则可以放心地忽略此操作。 新增:28
|
SuiteArtifactGeneratedEventDetails 资源
在 fuchsia.test.manager/test_manager.fidl 中定义
suite_artifact_generated 事件的详细信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
artifact |
Artifact
|
描述制品。此字段始终会提供。 |
SuiteStartedEventDetails
在 fuchsia.test.manager/test_manager.fidl 中定义
suite_started 事件的详细信息。
| 序数 | 字段 | 类型 | 说明 |
|---|
SuiteStoppedEventDetails
在 fuchsia.test.manager/test_manager.fidl 中定义
suite_stopped 事件的详细信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
result |
SuiteResult
|
套件结果。此字段始终会提供。 |
TestCase
在 fuchsia.test.manager/test_manager.fidl 中定义
枚举测试用例的说明。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
name |
TestCaseName
|
测试用例的名称。 |
TestCaseArtifactGeneratedEventDetails 资源
在 fuchsia.test.manager/test_manager.fidl 中定义
test_case_artifact_generated 事件的详细信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
test_case_id |
TestCaseId
|
此事件所属的测试用例。此事件之前会有一个具有匹配 ID 的“test_case found”事件。此字段始终会提供。 |
2 |
artifact |
Artifact
|
描述制品。此字段始终会提供。 |
TestCaseFinishedEventDetails
在 fuchsia.test.manager/test_manager.fidl 中定义
test_case_finished 事件的详细信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
test_case_id |
TestCaseId
|
此事件所属的测试用例。此事件之前会有一个具有匹配 ID 的“test_case found”事件。此字段始终会提供。 |
TestCaseFoundEventDetails
在 fuchsia.test.manager/test_manager.fidl 中定义
test_case_found 事件的详细信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
test_case_name |
TestCaseName
|
找到的测试用例的名称。此字段始终会提供。 |
2 |
test_case_id |
TestCaseId
|
在后续事件中标识此测试用例。此字段始终会提供,并且对于给定的 |
TestCaseStartedEventDetails
在 fuchsia.test.manager/test_manager.fidl 中定义
test_case_started 事件的详细信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
test_case_id |
TestCaseId
|
此事件所属的测试用例。此事件之前会有一个具有匹配 ID 的“test_case found”事件。此字段始终会提供。 |
TestCaseStoppedEventDetails
在 fuchsia.test.manager/test_manager.fidl 中定义
test_case_stopped 事件的详细信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
test_case_id |
TestCaseId
|
此事件所属的测试用例。此事件之前会有一个具有匹配 ID 的“test_case found”事件。此字段始终会提供。 |
2 |
result |
TestCaseResult
|
测试用例结果。此字段始终会提供。 |
UNIONS
制品灵活 资源
在 fuchsia.test.manager/test_manager.fidl 中定义
描述一个或多个工件。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
stdout |
handle<socket>
|
该工件是套件或测试用例的“stdout”流。工件通过套接字传送,此处提供的是套接字的消费者端。 |
2 |
stderr |
handle<socket>
|
该工件是套件或测试用例的“stderr”流。工件通过套接字传送,此处提供的是套接字的消费者端。 |
3 |
log |
Syslog
|
该工件是套件或测试用例的 syslog。工件通过批处理迭代器或套接字交付。 |
4 |
custom |
CustomArtifact
|
制品是目录中的一个或多个文件,可以使用 |
5 |
debug_data |
client_end:DebugDataIterator
|
这些工件是使用 |
EventDetails 灵活 资源
在 fuchsia.test.manager/test_manager.fidl 中定义
通过 SuiteController.WatchEvents 传递的事件的详细信息。
suite_started 事件始终在与测试用例相关的任何事件之前发生,而 suite_stopped 事件始终在任何测试用例事件之后发生。suite_artifact_generated 可能会在任何时间点发生,包括在 suite_started 之前和 suite_stopped 之后。
系统会为套件中找到的所有测试用例生成 test_case_found 事件。
如果特定测试用例运行已启用(基于 RunSuiteOptions.test_case_filters 和 RunSuiteOptions.run_disabled_tests),则无论测试用例是否实际运行、运行是否完成或是否成功,都会生成以下序列:
test_case_foundtest_case_startedtest_case_stoppedtest_case_finished
测试用例的 test_case_artifact_generated 事件可能发生在 test_case_found 事件之后和该测试用例的 test_case_finished 事件之前的任何时间点。请注意,多个事件的测试用例事件可能会交错。
如果未启用测试用例运行,则系统只会为该测试用例生成 test_case_found 事件。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
suite_started |
SuiteStartedEventDetails
|
套件已开始执行。 |
2 |
test_case_found |
TestCaseFoundEventDetails
|
找到了一个测试用例。这始终是给定测试用例的第一个事件。 |
3 |
test_case_started |
TestCaseStartedEventDetails
|
测试用例已开始执行。对于给定的测试用例,只会生成一个 |
4 |
test_case_artifact_generated |
TestCaseArtifactGeneratedEventDetails
|
测试用例中的工件。请注意,给定测试用例的 |
5 |
test_case_stopped |
TestCaseStoppedEventDetails
|
测试用例已停止执行。此事件包含测试用例的最终 |
6 |
test_case_finished |
TestCaseFinishedEventDetails
|
测试用例已完成,所有工件事件均已分派给客户端。这始终是给定测试用例的最后一个事件。 |
7 |
suite_artifact_generated |
SuiteArtifactGeneratedEventDetails
|
与整个套件相关的工件。 |
8 |
suite_stopped |
SuiteStoppedEventDetails
|
套件运行已停止执行。此事件包含套件的最终 |
灵活 资源 LogsIterator
在 fuchsia.test.manager/test_manager.fidl 中定义
保存测试隔离日志迭代器的服务器端。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
2 |
batch |
server_end:fuchsia.diagnostics/BatchIterator
|
当 Fuchsia 客户端使用此协议时,迭代器的服务器端。 |
3 |
stream |
handle<socket>
|
当主机端客户端使用此协议时,迭代器的服务器端。 这会使用 fuchsia.diagnostics.host.ArchiveReader 中指定的协议。 |
SuiteController_WatchEvents_Result strict resource
在 fuchsia.test.manager/test_manager.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
SuiteController_WatchEvents_Response
|
|
2 |
err |
LaunchError
|
Syslog 灵活 资源
在 fuchsia.test.manager/test_manager.fidl 中定义
syslog 的传送方法。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
2 |
batch |
client_end:fuchsia.diagnostics/BatchIterator
|
Fuchsia 客户端使用的迭代器的客户端。 |
3 |
stream |
handle<socket>
|
主机端客户端使用的套接字的消费者端。 |
TestCaseEnumerator_Enumerate_Result strict
在 fuchsia.test.manager/test_manager.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
TestCaseEnumerator_Enumerate_Response
|
|
2 |
err |
LaunchError
|
|
3 |
framework_err |
internal
|
常量
| 名称 | 值 | 类型 | 说明 |
|---|---|---|---|
| MAX_ARGUMENTS |
fuchsia.io/MAX_PATH_LENGTH
|
uint64 |
新增:20
|
| MAX_ARGUMENT_LENGTH |
16384
|
uint64 |
新增:28
|
| MAX_DEBUG_DATAS_PER_GET |
1024
|
uint64 |
新增:20
|
| MAX_EVENTS_PER_WATCH |
1024
|
uint64 |
新增:20
|
| MAX_FILTERS |
1024
|
uint64 |
新增:20
|
| MAX_FILTER_LENGTH |
fuchsia.component/MAX_MONIKER_LENGTH
|
uint64 |
新增:20
|
| MAX_OFFERS |
1024
|
uint64 |
新增:20
|
| MAX_TEST_CASES_PER_GET |
1024
|
uint64 |
新增:20
|
| MAX_TEST_COLLECTION_NAME_LENGTH |
fuchsia.io/MAX_NAME_LENGTH
|
uint64 |
新增:20
|
别名
| 名称 | 值 | 说明 |
|---|---|---|
| TestCaseId |
uint32 |
测试用例标识符。在套件运行中是唯一的。 |
| TestCaseName |
string[fuchsia.test/MAX_TEST_NAME] |
测试用例的人类可读名称。 |