fuchsia.test.manager

新增:16

协议

DebugDataIterator

在 fuchsia.test.manager/test_manager.fidl 中定义

客户端可通过其检索调试数据信息的迭代器协议。

GetNext

检索下一批调试数据。这是一个挂起获取;如果没有立即可用的数据,调用会挂起,直到有可用数据。返回所有数据后,该调用会返回一个空向量。

已移除:31

请求

<EMPTY>

响应

名称类型
data vector<DebugData>

GetNextCompressed

检索下一批调试数据(使用 zstd 压缩)。这是一个挂起获取;如果没有立即可用的数据,则调用会挂起,直到有可用数据。返回所有数据后,该调用会返回一个空向量。

新增:31

请求

<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

使用挂起获取模式在事件可用时返回事件。返回一个空矢量,表示不会再有其他事件。

新增:20

请求

<EMPTY>

响应

名称类型
payload SuiteController_WatchEvents_Result

SuiteRunner

在 fuchsia.test.manager/test_manager.fidl 中定义

运行测试套件。

新增:20

运行

运行测试套件。套件是实现 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 协议的测试套件中的用例。

新增:20

枚举

为测试用例创建迭代器。

请求

名称类型
test_suite_url fuchsia.url/Url
options EnumerateTestCasesOptions
iterator server_end:TestCaseIterator

响应

名称类型
payload TestCaseEnumerator_Enumerate_Result

TestCaseIterator

在 fuchsia.test.manager/test_manager.fidl 中定义

用于列出可用测试用例的迭代器。

新增:20

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

Directory 频道,用于提供对目录的访问权限。release_fence 关闭后,不应使用此渠道。

无默认应用
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 调用出错。

名称值说明
1

资源不足,无法执行操作。

2

无法解析 test_suite_url。

3

传递的参数无效。

4

未能连接到测试应公开的 fuchsia.test.TestSuite。

5

未能枚举测试。

6

发生了一些内部错误。测试管理器设置出现问题。 检查日志并报告 bug。

7

没有与指定测试过滤条件匹配的测试用例。仅当指定了测试过滤条件时,系统才会返回此错误。如果测试套件没有测试用例,则该套件将通过。

8

测试清单无效。

LogsIteratorType flexible

类型:uint32

在 fuchsia.test.manager/test_manager.fidl 中定义

备用日志迭代机制的枚举。

新增:20

名称值说明
1

表示使用 fuchsia.diagnostics.BatchIterator。此迭代器类型采用 VMO,可在本地实现最佳性能,但无法远程使用(例如,从主机使用)。选择此类型后,log 类型的制品将具有使用 Syslog 联合体的 batch 变体的值。

2

指示使用 fuchsia.diagnostics.host.ArchiveAccessor 中所述的套接字。 可以远程使用(例如,从主机)。选择此类型后,log 类型的制品将具有使用 Syslog 联合体的 stream 变体的值。

SuiteResult flexible

类型:uint32

在 fuchsia.test.manager/test_manager.fidl 中定义

表示套件运行的结果。

新增:20

名称值说明
1

套件正常完成,所有测试用例结果均为 SKIPPED 或 PASSED。

2

套件正常完成,但部分测试用例结果既不是 SKIPPED,也不是 PASSED。

3

套件实现崩溃、未发送 Finish 事件,或未报告一个或多个测试用例的测试用例结果。

4

整个套件运行超时。

5

套件运行已停止。

6

TestCaseResult flexible

类型:uint32

在 fuchsia.test.manager/test_manager.fidl 中定义

表示测试用例运行的结果。

新增:20

名称值说明
1

测试用例已跳过。

2

测试用例已通过。

3

测试用例失败。

4

测试用例超时。

5

套件实现未返回测试用例的结果。

TABLES

CustomArtifact 资源

在 fuchsia.test.manager/test_manager.fidl 中定义

描述包含测试生成的“自定义”(未分类)工件的目录。

序数字段类型说明
component_moniker string:4096

生成该目录的组件的 moniker(相对于测试领域的根目录)。

directory_and_token DirectoryAndToken

包含工件的目录。

DebugData 资源

在 fuchsia.test.manager/test_manager.fidl 中定义

描述可用的调试数据。

序数字段类型说明
name string:512

文件名称。每个 DebugDataIterator 必须是唯一的。

socket handle<socket>

可通过其访问文件的套接字。

EnumerateTestCasesOptions 资源

在 fuchsia.test.manager/test_manager.fidl 中定义

用于指定应如何枚举测试用例的选项。

新增:20

序数字段类型说明
realm_options RealmOptions

指定要在其中枚举测试用例的领域。如果未提供此字段,测试用例将在测试管理器内的封闭领域中枚举。需要非封闭领域或具有自定义运行程序的测试领域的客户端会使用此选项。

事件资源

在 fuchsia.test.manager/test_manager.fidl 中定义

通过 SuiteController.WatchEvents 传送的事件。

新增:20

序数字段类型说明
timestamp zx/Time

事件发生的时间。

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]。

新增:20

序数字段类型说明
realm client_end:fuchsia.component/Realm

包含要在其中启动测试的集合的领域。必须填写此字段。

offers vector<fuchsia.component.decl/Offer>:1024

从领域到测试集合的所有优惠。必须填写此字段。

test_collection string:255

要在其中启动测试的测试集合。必须填写此字段。

RunSuiteOptions 资源

在 fuchsia.test.manager/test_manager.fidl 中定义

用于指定测试套件运行方式的选项。

新增:20

序数字段类型说明
realm_options RealmOptions

指定要在其中运行测试套件的领域。如果未提供此字段,测试将在测试管理器内的封闭领域中运行。需要非封闭领域或具有自定义运行程序的测试领域的客户端会使用此选项。

run_disabled_tests bool

如果设置为 true,则即使测试用例已被测试作者停用,也会执行。此值默认为 false。

max_concurrent_test_case_runs uint16

定义要并发运行的测试用例数上限。如果未指定,则由测试套件组件决定此值。

arguments vector<string:16384>:4095

要传递给测试的命令行参数。测试运行程序决定如何将这些参数传递给测试。默认情况下,此值为空矢量(无参数)。

timeout zx/Duration

整个套件运行的超时时间。如果未指定,则没有超时,套件运行可能会无限期挂起。

test_case_filters vector<string:4096>:1024

测试用例过滤条件,采用 glob 模式 [https://en.wikipedia.org/wiki/Glob_(programming)]。 您可以通过在前面添加“-”来指定排除性过滤条件。默认情况下,此值为空向量(无过滤条件)。

如果同时满足以下两个条件,则会运行给定的测试用例:

  • 未指定正向过滤条件,或者测试用例与某个正向过滤条件匹配。
  • 测试用例与任何指定的否定过滤条件都不匹配。

例如,假设某个套件包含测试用例 Foo.Test1、Foo.Test2、Bar.Test1 和 Bar.Test2:

  • 过滤条件 ["Foo.*"] 将执行 Foo.Test1 和 Foo.Test2。
  • 过滤条件 ["-Foo.*"] 将执行 Bar.Test1 和 Bar.Test2。
  • 过滤器 ["Foo.*", "-*.Test1"] 将执行 Foo.Test2。
logs_iterator_type LogsIteratorType

指定客户端将使用哪种迭代器来检索日志。默认情况下,此值为 BATCH。

log_interest vector<fuchsia.diagnostics/LogInterestSelector>:64

配置在过滤来自测试套件组件的日志时要应用的最低严重级别。

accumulate_debug_data bool

如果设置为 true,则为此运行收集的调试数据将累积在测试管理器的 tmp 文件夹中,并与之前运行中收集的调试数据(此标志设置为 true)一起累积。默认值为 false。

当批量运行多个测试时,可以使用此选项,因为一次性提供累积数据比一次提供一个测试的调试数据更高效。

no_exception_channel bool

如果为 true,则表示测试会创建异常渠道。在这种情况下,测试管理器将避免创建自己的异常渠道,以避免冲突。默认值为 false。

新增:26
break_on_failure bool

如果为 true,则测试运行程序应在遇到失败时停止(如果支持)测试套件,以便调试程序将来可以附加到进程。如果测试运行程序不支持停止运行测试套件,则可以放心地忽略此操作。

新增:28

SuiteArtifactGeneratedEventDetails 资源

在 fuchsia.test.manager/test_manager.fidl 中定义

suite_artifact_generated 事件的详细信息。

新增:20

序数字段类型说明
artifact Artifact

描述制品。此字段始终会提供。

SuiteStartedEventDetails

在 fuchsia.test.manager/test_manager.fidl 中定义

suite_started 事件的详细信息。

新增:20

序数字段类型说明

SuiteStoppedEventDetails

在 fuchsia.test.manager/test_manager.fidl 中定义

suite_stopped 事件的详细信息。

新增:20

序数字段类型说明
result SuiteResult

套件结果。此字段始终会提供。

TestCase

在 fuchsia.test.manager/test_manager.fidl 中定义

枚举测试用例的说明。

序数字段类型说明
name TestCaseName

测试用例的名称。

TestCaseArtifactGeneratedEventDetails 资源

在 fuchsia.test.manager/test_manager.fidl 中定义

test_case_artifact_generated 事件的详细信息。

新增:20

序数字段类型说明
test_case_id TestCaseId

此事件所属的测试用例。此事件之前会有一个具有匹配 ID 的“test_case found”事件。此字段始终会提供。

artifact Artifact

描述制品。此字段始终会提供。

TestCaseFinishedEventDetails

在 fuchsia.test.manager/test_manager.fidl 中定义

test_case_finished 事件的详细信息。

新增:20

序数字段类型说明
test_case_id TestCaseId

此事件所属的测试用例。此事件之前会有一个具有匹配 ID 的“test_case found”事件。此字段始终会提供。

TestCaseFoundEventDetails

在 fuchsia.test.manager/test_manager.fidl 中定义

test_case_found 事件的详细信息。

新增:20

序数字段类型说明
test_case_name TestCaseName

找到的测试用例的名称。此字段始终会提供。

test_case_id TestCaseId

在后续事件中标识此测试用例。此字段始终会提供,并且对于给定的 SuiteController 是唯一的。

TestCaseStartedEventDetails

在 fuchsia.test.manager/test_manager.fidl 中定义

test_case_started 事件的详细信息。

新增:20

序数字段类型说明
test_case_id TestCaseId

此事件所属的测试用例。此事件之前会有一个具有匹配 ID 的“test_case found”事件。此字段始终会提供。

TestCaseStoppedEventDetails

在 fuchsia.test.manager/test_manager.fidl 中定义

test_case_stopped 事件的详细信息。

新增:20

序数字段类型说明
test_case_id TestCaseId

此事件所属的测试用例。此事件之前会有一个具有匹配 ID 的“test_case found”事件。此字段始终会提供。

result TestCaseResult

测试用例结果。此字段始终会提供。

UNIONS

制品灵活 资源

在 fuchsia.test.manager/test_manager.fidl 中定义

描述一个或多个工件。

序数变体类型说明
stdout handle<socket>

该工件是套件或测试用例的“stdout”流。工件通过套接字传送,此处提供的是套接字的消费者端。

stderr handle<socket>

该工件是套件或测试用例的“stderr”流。工件通过套接字传送,此处提供的是套接字的消费者端。

log Syslog

该工件是套件或测试用例的 syslog。工件通过批处理迭代器或套接字交付。

custom CustomArtifact

制品是目录中的一个或多个文件,可以使用 fuchsia.io 读取。

debug_data client_end:DebugDataIterator

这些工件是使用 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_found
  • test_case_started
  • test_case_stopped
  • test_case_finished

测试用例的 test_case_artifact_generated 事件可能发生在 test_case_found 事件之后和该测试用例的 test_case_finished 事件之前的任何时间点。请注意,多个事件的测试用例事件可能会交错。

如果未启用测试用例运行,则系统只会为该测试用例生成 test_case_found 事件。

新增:20
序数变体类型说明
suite_started SuiteStartedEventDetails

套件已开始执行。suite_artifact_generated 事件可能会在此事件之前发生。

test_case_found TestCaseFoundEventDetails

找到了一个测试用例。这始终是给定测试用例的第一个事件。

test_case_started TestCaseStartedEventDetails

测试用例已开始执行。对于给定的测试用例,只会生成一个 test_case_started 事件,并且该事件始终在相应测试用例的 test_case_stopped 事件之前发生。 测试用例的 test_case_artifact_generated 事件可能会在此事件之前发生。

test_case_artifact_generated TestCaseArtifactGeneratedEventDetails

测试用例中的工件。请注意,给定测试用例的 test_case_artifact_generated 事件可能会在 test_case_started 之前和 test_case_stopped 之后发生。

test_case_stopped TestCaseStoppedEventDetails

测试用例已停止执行。此事件包含测试用例的最终 TestCaseResult。 此事件之后可能会发生 test_case_artifact_generated 个与该支持请求相关的事件。

test_case_finished TestCaseFinishedEventDetails

测试用例已完成,所有工件事件均已分派给客户端。这始终是给定测试用例的最后一个事件。

suite_artifact_generated SuiteArtifactGeneratedEventDetails

与整个套件相关的工件。

suite_stopped SuiteStoppedEventDetails

套件运行已停止执行。此事件包含套件的最终 SuiteResult。 此事件之后可能会发生 suite_artifact_generated 事件。

灵活 资源 LogsIterator

在 fuchsia.test.manager/test_manager.fidl 中定义

保存测试隔离日志迭代器的服务器端。

序数变体类型说明
batch server_end:fuchsia.diagnostics/BatchIterator

当 Fuchsia 客户端使用此协议时,迭代器的服务器端。

stream handle<socket>

当主机端客户端使用此协议时,迭代器的服务器端。 这会使用 fuchsia.diagnostics.host.ArchiveReader 中指定的协议。

SuiteController_WatchEvents_Result strict resource

在 fuchsia.test.manager/test_manager.fidl 中定义

序数变体类型说明
response SuiteController_WatchEvents_Response
err LaunchError

Syslog 灵活 资源

在 fuchsia.test.manager/test_manager.fidl 中定义

syslog 的传送方法。

序数变体类型说明
batch client_end:fuchsia.diagnostics/BatchIterator

Fuchsia 客户端使用的迭代器的客户端。

stream handle<socket>

主机端客户端使用的套接字的消费者端。

TestCaseEnumerator_Enumerate_Result strict

在 fuchsia.test.manager/test_manager.fidl 中定义

序数变体类型说明
response TestCaseEnumerator_Enumerate_Response
err LaunchError
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]

测试用例的人类可读名称。