QEMU学习(八):QEMU系统测试

前言:QEMU系统测试非常完整,除了外部的gdb代码调试,还有自带的单元测试,功能测试,CI集成测试等全面覆盖。这里gdb代码调试就不再赘述,网上一大堆。test文档可见qemu/docs/devel/testing.rst。

测试开始前先进行编译qemu

./configure --target-list=arm-softmmu && make 

整体命令 make check

help命令 make check-help

一.单元测试

无需启动qemu,直接运行测试代码,获取调试信息。

make check-unit

之后会在tests目录下生成可执行文件,直接执行即可,无需启动qemu。

如果想自己写单元测试可以打开

qemu/tests/Makefile.include

加入测试目标check-unit-y +=

指定关联关系tests/foo-test$(EXESUF):

测试代码路径qemu/tests/unit/meson.build将自己的测试名加入tests数组里就行了。

二.功能测试

功能测试主要是qtest使用socket与qemu通信获取qemu的信息,和glib测试原理相同。

make check-qtest V=1

 也可以自己添加测试单元

加入测试目标check-unit-y +=

指定关联关系tests/qom-test$(EXESUF):

测试代码路径qemu/tests/unit/meson.build将自己的测试名加入tests数组里就行了。

qtest每次start都会创建两个socket用于与qemu通信,分别是qtest,qmp

g_test_int初始化glib测试框架

qtest_init/qtest_start启动qemu

qtest_add_func添加执行单个用例

g_test_run运行用例

qtest_qmp发送qmp命令给到qemu运行指定操作

qtest:执行命令

功能测试需要启动qemu,然后启动相应的qtest程序

#QTEST_LOG=1 QTEST_QEMU_BINARY=arm-softmmu/qemu-system-arm QTEST_QEMU_IMG=qemu-img  tests/test-name -m=quick  -k --tap < /dev/null | ./scripts/tap-driver.pl --test-name="test-name"

对应的qemu

"exec %s " "-qtest unix:%s " "-qtest-log %s " "-chardev socket,path=%s, id=char0 " "-mon chardev=char0, mode=control " "-display none " "%s"  " -accel qtest", qemu_binary,socket_path, getenv("QTEST_LOG")?"/dev/fd/1" : "dev/null",qmp_socket_path, extra_args?:" "

qemu_binary是QTEST_QEMU_BINARY指定的程序,-mon指定qmp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值