移植测试框架

移植 deqp 需要三个步骤:调整基础可移植性库,实现测试框架平台集成接口以及移植执行服务。

下表列出了可能发生移植更改的位置。在此范围之外的位置很可能是有异常情况。

位置 说明
framework/delibs/debase
framework/delibs/dethread
framework/delibs/deutil

操作系统专用代码的任何必要实现。

framework/qphelper/qpCrashHandler.c

可选:针对操作系统的实现。

framework/qphelper/qpWatchDog.c

针对操作系统的实现。当前位置是以 dethread 和 C 语言的标准库为基础。

framework/platform

新的平台端口和应用存根可按照测试框架平台端口中的说明来实现。

基础可移植性库

基础可移植性库已支持 Windows、大多数 Linux 变体、Mac OS、iOS 和 Android。若测试目标在其中一个操作系统上运行,很可能根本无需动用基础可移植性库。

测试框架平台端口

deqp 测试框架平台端口需要两个组件:应用入口点和平台接口实现。

应用入口点负责创建平台对象、创建命令行 (tcu::CommandLine) 对象、打开测试日志 (tcu::TestLog) 以及迭代测试应用 (tcu::App)。若目标操作系统支持标准的 main() 入口点,tcuMain.cpp 可以用作入口点实现。

以下文件详细说明了 deqp 平台 API。

文件 说明
framework/common/tcuPlatform.hpp

所有平台端口的基类

framework/opengl/gluPlatform.hpp

OpenGL 平台接口

framework/egl/egluPlatform.hpp

EGL 平台接口

framework/platform/tcuMain.cpp

标准应用入口点

所有平台端口的基类都为 tcu::Platform。平台端口可选择性支持 GL 和 EGL 特定接口。请参见下表,大体上了解一下运行测试需要实现的内容。

模块 接口

OpenGL (ES) 测试模块

GL 平台接口

EGL 测试模块

EGL 平台接口

有关实现平台端口的详细说明,请参阅移植层标头。

测试执行服务

要使用 deqp 测试执行基础架构或命令行执行程序,目标上必须提供测试执行服务。该服务的可移植 C++ 实现是在 execserver 目录中提供。独立的二进制文件是作为计算机目标的 deqp 测试模块版本的一部分进行构建。您可以修改 execserver/CMakeLists.txt,以便在其他目标中启用相应版本。

C++ 版的测试执行服务接受两个命令行参数:

  • --port=<port> 会设置服务器侦听的 TCP 端口。默认端口号为 50016。
  • --single 会在客户端断开连接时终止服务器进程。默认情况下,为了进一步处理测试执行请求,服务器进程将保持运行。