移植 deqp 需要三个步骤:调整基础可移植性库,实现测试框架平台集成接口以及移植执行服务。
下表列出了可能发生移植更改的位置。在此范围之外的位置很可能是有异常情况。
位置 | 说明 |
---|---|
framework/delibs/debase |
操作系统专用代码的任何必要实现。 |
framework/qphelper/qpCrashHandler.c |
可选:针对操作系统的实现。 |
framework/qphelper/qpWatchDog.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
会在客户端断开连接时终止服务器进程。默认情况下,为了进一步处理测试执行请求,服务器进程将保持运行。