| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> glibc 知:测试套件 -> 正文阅读 |
|
[开发测试]glibc 知:测试套件 |
文章目录前言glibc的测试套件的wiki主页为:https://sourceware.org/glibc/wiki/Testing/Testsuite 如何构建glibc?可以参考:glibc 知:构建和测试 测试套件目标典型的测试用例在构建目录中写出一个扩展名为 .out 的文件,其中包含测试的输出。可以在测试用例失败的情况下检查此文件以确定问题所在。如果您在 bugzilla 中报告测试用例失败,请确保也包含相关 .out 文件的内容。 还有一个额外的测试目标:make xcheck。运行 make xcheck 包括 make check 的所有测试,但添加了一些额外的测试。这些额外的测试对可用于正常执行的执行环境有要求,例如网络连接,但不一定用于构建(作为构建系统的一部分)。 开发人员应该使用“make xcheck”而不是“make check”。在交叉编译设置中运行 Testsuite 时,make check 是必要的,因为它构建了 testroot 容器 [1] 运行“make check”或“make xcheck”时无需使用“-k”,失败的测试不会停止测试。如果 make 没有通过打印“测试结果摘要”来完成,那么说明测试过程中的某处存在问题。 只测试一项测试要仅测试一个测试,您必须已经运行整个测试套件(为所有测试创建输出文件)。接下来,删除感兴趣的测试的单一*.out文件并重新运行测试。基础设施只会使用丢失的输出文件重新运行测试。 要加速此过程并将其限制为单个目录的测试,您必须使用-C <path to glibc source>/<top-level directory tests> 运行,例如:make -r PARALLELMFLAGS="-j4" -C /home /carlos/src/glibc/inet objdir=`pwd` check,只运行inet顶级目录的标准测试。 或者,您可以执行make subdirs=login -j8 check以并行运行login子目录中的所有测试。请注意,nptl目录中的-jN 会被自动忽略,因为其中一些测试使用多线程。 ABI检查glibc 测试套件包含许多测试以检查 glibc 的 ABI 没有变更。它将生成的二进制文件中的符号名称和版本以及静态变量大小与源文件中 *.abilist 中维护的那些进行比较。测试作为“make check”的一部分运行。您也可以通过“make check-abi”单独运行它们。 有关 make xcheck 特定测试的详细信息下面的列表描述了仅作为 make xcheck 的一部分的测试对执行环境的要求:
编写测试用例
使用交叉编译器进行测试虽然在使用本机工具的系统上构建和测试 glibc 是进行 glibc 测试的最简单方法,但也可以构建包含 glibc 的交叉编译工具链并使用该工具链运行 glibc 测试套件。 要进行交叉编译测试,您需要使用 glibc 源代码中的 scripts/cross-test-ssh.sh 脚本,并在主机上的目录中进行构建,该目录在目标机器上也可见,具有相同的路径. 还需要能够使用 ssh 从主机访问目标机器。cross-test-ssh.sh 脚本中有关于此的详细信息。此脚本可用于运行“make check”、“make xcheck”或“make bench”。 由于主机和目标机器在 make 期间都在接触文件,因此一台机器上的更改需要立即在另一台机器上可见。由于缓存,这不是 NFS 的默认行为。您可能需要在 NFS 上使用“noac”选项才能使其工作。运行 make 时,此问题可能会导致类似以下消息: touch: cannot touch ‘/home/sellcey/gcc/gcc_cross_testing/obj-mips-mti-linux-gnu/glibc/obj_default/localedata/de_DE.ISO-8859-1/LC_CTYPE’: No such file or directory 如果您通过构建 binutils、初始 GCC、glibc,然后重新构建 GCC(常见构建序列)来构建跨工具链,那么运行 glibc 测试套件可能会导致 glibc 在任何测试之前重新构建 正在运行。这是因为 glibc 测试依赖于 glibc,而 glibc 依赖于 GCC(或至少一些 GCC 头文件)。如果您的第二个 GCC 构建覆盖了第一个,那么 make 将看到此更改并在进行任何测试之前重建 glibc 的许多部分(如果不是全部)。如果您知道要运行 glibc 测试套件,您可能希望在重建 GCC 之后和运行“make check”之前重建 glibc。您不能跳过第二个 GCC 构建,因为初始 GCC(如果使用 --without-headers 配置)将没有构建 glibc 测试程序所需的所有头文件和库。 已知的测试套件失败abi-check如果您使用–prefix配置选项为不同的前缀构建,您可能会看到由于_nl_default_dirname 的大小不同而导致检查失败。_nl_default_dirname的大小取决于前缀,/usr/share/locale被视为默认值,因此值为 0x12。如果您看到这样的差异,您应该检查大小是否与您的前缀相对应,即(前缀路径的长度 + 1)以确保您的更改没有真正破坏 abi。 bug-atexit3 和 nptl 测试当为非标准前缀(即不是/usr)配置构建时,会再次看到这些失败。发生这种情况是因为构建的动态链接器无法找到libstdc++和libgcc_s.so,因为其默认搜索路径是构建目录,并回退到前缀目录中的ld.so.cache,即$prefix/etc/ld.so.cache。可以通过以下方式之一解决这些故障:
tst-eintr1人们可能会偶尔看到这种失败。发生这种情况是因为内核无法足够快地获取退出线程,最终在测试中调用 pthread_create 时导致 EAGAIN。这目前被视为内核限制。 后语更多的测试,可以参考wiki社区主页的测试一节。 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 2:21:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |