FFmpeg自动化测试环境

目录

1 简介

FATE 是客户端的扩展回归套件,也是服务器端结果聚合和呈现的方法。

本文档的第一部分解释了如何使用 FFmpeg 源目录中的 FATE 来测试 ffmpeg 二进制文件。第二部分描述如何运行 FATE 将结果提交到 FFmpeg 的 FATE 服务器。

您可以通过任何方式访问此网站来查看公开可见的 FATE 结果:

http://fate.ffmpeg.org/

特别建议所有向 FFmpeg 贡献源代码的人,因为可以看到某些平台上的某些测试是否与他们最近的贡献相冲突。这通常发生在开发人员无法测试的平台上。

本文档的第二部分描述了如何运行 FATE 将结果提交到 FFmpeg 的 FATE 服务器。如果您想提交结果,请务必检查您的 CPU、操作系统和编译器组合是否尚未在上述网站上列出。

在第三部分中,您可以找到 FATE makefile 目标和变量的完整列表。

2 使用 FFmpeg 源目录中的 FATE

如果您想在您的计算机上运行 FATE,您需要准备好示例。您可以通过构建目标 fat-rsync 获取样本。从顶级源目录使用此命令:

make fate-rsync SAMPLES=fate-suite/
make fate       SAMPLES=fate-suite/

上述命令通过命令行传递 makefile 变量来设置样本位置。还可以通过调用 configure 在源配置时设置样本位置 --samples=<示例目录的路径>。之后,您可以调用 makefile 目标,而无需设置SAMPLES makefile 变量。以下命令说明了这一点:

./configure --samples=fate-suite/
make fate-rsync
make fate

告诉 FATE 有关示例目录位置的另一种方法是确保环境变量 FATE_SAMPLES 包含示例目录的路径。例如,可以通过将该变量放入 shell 配置文件中或在交互式会话中设置它来实现。

FATE_SAMPLES=fate-suite/ make fate

不要在示例路径中放置“~”字符来指示主目录。由于 shell 的细微差别,这将导致 FATE 失败。

要获取完整的测试列表,请运行以下命令:

make fate-list

您可以通过使用前缀指定列表中的相应元素来指定要运行的测试子集fate-,例如:

make fate-ffprobe_compact fate-ffprobe_xml

这使得在失败时更容易运行一些测试,而无需运行完整的测试套件。

要使用自定义包装器来运行测试,请传递--目标执行configure或设置TARGET_EXEC Make 变量。

3 将结果提交给FFmpeg结果聚合服务器

要将结果提交到服务器,您应该通过 shell 脚本运行命运测试/fate.sh来自 FFmpeg 来源。该脚本需要使用配置文件作为其第一个参数来调用。

tests/fate.sh /path/to/fate_config

带有描述各个配置变量的注释的配置文件模板可以在以下位置找到:文档/fate_config.sh.template

上述配置模板也可以在这里找到:

slot=                                    # some unique identifier
repo=git://source.ffmpeg.org/ffmpeg.git  # the source repository
#branch=release/2.6                       # the branch to test
samples=                                 # path to samples directory
workdir=                                 # directory in which to do all the work
#fate_recv="ssh -T fate@fate.ffmpeg.org" # command to submit report
comment=                                 # optional description
build_only=     # set to "yes" for a compile-only instance that skips tests
ignore_tests=

# the following are optional and map to configure options
arch=
cpu=
cross_prefix=
as=
cc=
ld=
target_os=
sysroot=
target_exec=
target_path=
target_samples=
extra_cflags=
extra_ldflags=
extra_libs=
extra_conf=     # extra configure options not covered above

#make=          # name of GNU make if not 'make'
makeopts=       # extra options passed to 'make'
#makeopts_fate= # extra options passed to 'make' when running tests,
                # defaulting to makeopts above if this is not set
#tar=           # command to create a tar archive from its arguments on stdout,
                # defaults to 'tar c'

根据配置模板创建适合您需求的配置。配置slot变量可以是任何尚未使用的字符串,但建议您按照以下模式命名它:arch -操作系统-编译器-编译器版本'。配置文件本身将源自 shell 脚本,因此可以使用所有 shell 功能。这使您能够根据构建需要设置环境。

对于您的第一次测试运行,该fate_recv变量应该为空或被注释掉。这将正常运行一切,只是它会省略将结果提交到服务器。按照配置文件中的指定,以下文件应存在于 $workdir 中:

  • 配置日志
  • 编译日志
  • 测试日志
  • 报告
  • 版本

当一切正常运行后,您可以创建 SSH 密钥对并将公钥发送给 FATE 服务器管理员,您可以通过电子邮件地址fat-admin@ffmpeg.org与该管理员联系。

将 SSH 客户端配置为在连接到 FATE 服务器时使用该密钥进行公钥身份验证。另外,不要忘记检查服务器的身份并接受其主机密钥。这通常可以通过手动运行 SSH 客户端并在接受密钥后终止它来实现。FATE服务器的指纹是:

RSA

d3:f1:83:97:a4:75:2b:a6:fb:d6:e8:aa:81:93:97:51

ECDSA

76:9f:68:32:04:1e:d5:d4:ec:47:3f:dc:fc:18:17:86

ssh如果您在连接到 FATE 服务器时遇到问题,尝试使用一个或多个命令可能会有所帮助-v选项。您应该获得有关 SSH 配置和身份验证过程的详细输出。

剩下的唯一事情就是自动执行fate.sh脚本和样本目录的同步。

4 将新样本上传到命运套件

如果您需要上传示例,请发送邮件至示例请求。

这适用于在命运套件服务器上拥有帐户的开发人员。如果您上传新样本,请确保它们尽可能小,每个客户端上的空间、网络带宽等都受益于较小的测试用例。另请记住,较旧的签出使用现有示例文件,这意味着在实践中通常不会替换、删除或覆盖文件,因为这可能会破坏旧的签出或版本。此外,提交所需的所有示例都应在推送前 24 小时上传。如果您需要一个帐户来经常上传示例,或者您希望通过这样做来帮助其他人,请发送邮件到 ffmpeg-devel。

#First update your local samples copy:
rsync -vauL --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X fate-suite.ffmpeg.org:/home/samples/fate-suite/ ~/fate-suite

#Then do a dry run checking what would be uploaded:
rsync -vanL --no-g --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X ~/fate-suite/ fate-suite.ffmpeg.org:/home/samples/fate-suite

#Upload the files:
rsync -vaL  --no-g --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X ~/fate-suite/ fate-suite.ffmpeg.org:/home/samples/fate-suite

5 FATE makefile 目标和变量

5.1 Makefile targets

fate-rsync

将示例文件下载/同步到配置的示例目录。

fate-list

将列出所有命运/回归测试目标。

fate

运行 FATE 测试套件(需要命运套件数据集)。

5.2 Makefile variables

V

详细级别,可设置为 0、1 或 2。

  • 0:仅显示测试参数
  • 1:仅显示测试中使用的命令
  • 2:显示一切
SAMPLES

在制作时指定或覆盖 FATE 样本的路径,它仅在运行回归测试时才有意义。

THREADS

指定运行回归测试时使用多少个线程,这对于检测与线程相关的回归非常有用。

该变量可以设置为字符串“random”,可选地后跟一个数字,例如“random99”,这将导致每个测试使用随机数量的线程。如果指定了一个数字,则将其用作最大线程数,否则最大为 16。

如果测试失败,用于测试的线程计数将被写入 errfile。

THREAD_TYPE

指定哪个线程策略测试,要么 '' 或者 '框架', 默认情况下 '切片+帧'

CPUFLAGS

指定 CPU 标志。

TARGET_EXEC

指定或覆盖用于运行测试的包装器。该选项提供了一种通过或在远程目标上TARGET_EXEC运行包含在 valgrind、或 中的 FATE 的方法。 qemu-userwinessh

GEN

设置 '1' 生成缺失或不匹配的引用。

HWACCEL

指定运行回归测试时使用哪个硬件加速,默认情况下'没有任何' 用来。

KEEP

设置 '1' 在测试成功时保留命运测试生成的临时文件。默认为 '0',这会删除这些文件。测试失败时始终保留文件。

5.3 Examples

make V=1 SAMPLES=/var/fate/samples THREADS=2 CPUFLAGS=mmx fate

本文档于2023 年 11 月 17 日使用makeinfo 生成。

由telepoint.bg提供的托管