在ARM平台对stratovirt和grafana进行测试
1. stratovirt
源码仓库位于stratovirt。
在仓库中,测试文件位于tests/
目录下,分为hydropper
和mod_test
两部分,各自的测试文件位于各自目录的tests/
目录下。
Cargo
会在tests目录下查找集成测试文件,进行集成测试时需要进入hydropper
或mod_test
目录,执行相应cargo test
命令。
1.0 自动化脚本
自动测试脚本为autest_stratovirt.sh
,已经提交到 gitee 上,地址为autest_stratovirt.sh,通过脚本完成日志目录创建、源码下载、构建、进行测试、保存测试结果。
-
执行结果
- 将控制台输出保存到文件中
- 修改
performance_counter_920.sh
脚本,将perf
执行的相关结果以markdown
的表格格式保存下来
-
小问题
- 构建
stratovirt
时,需要以超级用户权限执行make build
- 要手动执行
Makefile
中目标build
的命令cargo build --workspace --bins --release
- 要手动设置环境变量
STRATOVIRT_BINARY
为构建得到的stratovirt
可执行文件路径
- 构建
1.1 mod_test
目前进行集成测试,收集的是单个rs文件的测试信息,文件位于stratovirt/tests/mod_test/tests
中,每个rs文件包含若干测试函数。
-
perf执行结果以
markdown
表格的格式保存在文件table_stratovirt_mod.md中。 -
测试项信息如下
Test Name | Status | Run Details |
---|---|---|
balloon_test | 2 passed; 13 failed | eline366 ; Failed to open /dev/kvm: Error(13) |
block_test | 0 passed; 21 failed | eline366 ; Failed to open /dev/kvm: Error(13) |
fwcfg_test | 0 passed; 15 failed | eline366 ; Failed to open /dev/kvm: Error(13) |
memory_test | 0 passed; 14 failed | eline366 ; Failed to open /dev/kvm: Error(13) |
net_test | 0 passed; 14 failed | eA |
pci_test | 0 passed; 40 failed | eline366 ; Failed to open /dev/kvm: Error(13) |
pvpanic_test | 0 passed; 3 failed | eline366 ; Failed to open /dev/kvm: Error(13) |
rng_test | 0 passed; 5 failed | eline366 ; Failed to open /dev/kvm: Error(13) |
scream_test | 0 passed; 4 failed | eline366 ; Failed to open /dev/kvm: Error(13) |
scsi_test | 0 passed; 14 failed | eline 116 |
serial_test | 0 passed; 7 failed | eline366 ; Failed to open /dev/kvm: Error(13) |
usb_camera_test | 0 passed; 8 failed | eline366 ; Found argument ‘-cameradev’ which wasn’t expected, or isn’t valid in the context. ; Failed to open log file /var/log/mst.log |
usb_storage_test | 0 passed; 15 failed | eline366 ; Permission denied (os error 13) Failed to open log file /var/log/mst.log |
usb_test | 0 passed; 43 failed | eline366 ; Permission denied (os error 13) Failed to open log file /var/log/mst.log |
virtio_gpu_test | 0 passed; 12 failed | eline366 |
virtio_test | 0 passed; 28 failed | eline366 ; Failed to open /dev/kvm: Error(13) |
virtiofs_test | 0 passed; 25 failed | eB |
vnc_test | 0 passed; 9 failed | eline366 ; Found argument ‘-vnc’ which wasn’t expected, or isn’t valid in the context. |
报错原因及初步分析:
- 基本上所有测试都fail了
eline366
: panicked at tests/mod_test/src/libtest.rs:366:82:calledOption::unwrap()
on aNone
value- 大多因为
Failed to open /dev/kvm
;同时ARM平台上有/dev/kvm
,或许因为没有权限。 - 在usb的相关测试上遇到的是 os error
- 大多因为
eA
: panicked at tests/mod_test/tests/net_test.rs:349:9:assertion failed: output.status.success()eline 116
: panicked at tests/mod_test/src/utils.rs:116:5:assertion failed: output.status.success()eB
: panicked at tests/mod_test/tests/virtiofs_test.rs:236:56:calledResult::unwrap()
on anErr
value: NotPresent
1.2 hydropper
遵循README, 只在ARM平台上安装了相关软件包。
2. grafana
源码仓库位于grafana。
2.0 自动化脚本
自动测试脚本为autest_grafana.sh
,已经提交到 gitee 上,地址为autest_grafana.sh,通过脚本完成日志目录创建、源码下载、构建、进行测试、保存测试结果。
2.1 Run frontend tests
测试命令为yarn test --watchAll
- perf执行结果保存在文件yarntest—watchAll.md中
- 运行结果总结
Test Suites: 1 failed, 1 skipped, 1377 passed, 1378 of 1379 total
Tests: 1 failed, 31 skipped, 12970 passed, 13002 total
Snapshots: 366 passed, 366 total
Time: 127.971 s, estimated 133 s
Ran all test suites.
2.2 Run backend tests
在包列表模式下进行测试,对pkg/
目录下的包进行测试,该目录包含grafana的后端代码。
-
每个包的perf执行结果以
markdown
表格的格式保存在文件table_grafana_backend.md中 -
测试项信息如下
Test Name | Status | Run Details |
---|---|---|
api | ok | 2.693s coverage: 46.7% of statements |
bus | ok | 0.028s coverage: 81.5% of statements |
codegen | ok | 0.013s coverage: 13.0% of statements |
expr | ok | 0.205s coverage: 60.3% of statements |
middleware | ok | 0.104s coverage: 61.7% of statements |
plugins | ok | 0.030s coverage: 33.8% of statements |
promlib | ok | 0.021s coverage: 60.3% of statements |
server | FAIL | 0.237s coverage: 5.7% of statements |
setting | ok | 4.102s coverage: 80.6% of statements |
util | ok | 0.463s coverage: 63.1% of statements |
web | ok | 0.007s coverage: 14.1% of statements |
收集到每个包的所有测试项的测试信息,之后应当对这些测试项信息进行提取。
2.3 Run SQLite, PostgreSQL and MySQL integration tests
在包列表模式下进行测试。
-
每个包的perf执行结果以
markdown
表格的格式保存在文件table_grafana_sql.md中 -
测试项信息如下
Test Name | Status | Run Details |
---|---|---|
api | ok | 2.655s coverage: 46.7% of statements |
bus | ok | 0.030s coverage: 81.5% of statements |
codegen | ok | 0.015s coverage: 13.0% of statements |
expr | ok | 0.196s coverage: 60.3% of statements |
middleware | ok | 0.109s coverage: 61.7% of statements |
plugins | ok | 0.027s coverage: 33.8% of statements |
promlib | ok | 0.018s coverage: 60.3% of statements |
server | FAIL | 0.231s coverage: 5.7% of statements |
setting | ok | 3.233s coverage: 80.6% of statements |
util | ok | 0.756s coverage: 63.1% of statements |
web | ok | 0.007s coverage: 14.1% of statements |
收集到每个包的所有测试项的测试信息,之后应当对这些测试项信息进行提取。
2.4 Run end-to-end tests
测试命令为yarn e2e
-
问题
- 缺少Xvfb依赖, 于是
sudo dnf install xorg-x11-server-Xvfb -y
- 未解决:
执行
yarn e2e
, 报错Can't run because you've entered an invalid browser name. Browser: chrome was not found on your system or is not supported by Cypress. Cypress supports the following browsers: - electron - chrome - chromium - chrome:canary - edge - firefox You can also use a custom browser: https://on.cypress.io/customize-browsers Available browsers found on your system are: - electron
执行
yarn e2e electron
, 报错An invalid configuration value was set. Expected video to be a boolean. Instead the value was:
- 缺少Xvfb依赖, 于是
下一步
- 在ARM平台上继续完成测试,对更细粒度的测试项进行提取,进一步分析失败测试项
- 待RISC-V平台开放,完成相关测试
- 学习perf命令、cargo和go的相关测试命令