Skip to content

Latest commit

 

History

History
143 lines (78 loc) · 5.78 KB

2024.5.20-mugen细节补充-郝逸飞.md

File metadata and controls

143 lines (78 loc) · 5.78 KB

mugen测试细节补充(从案例入手)


环境配置

mugen测试的同学 至少需要两个环境,openEuler riscv 24.03 和 openEuler x86 24.03

双端测试,并返回结果

openeuler 24.03 x86镜像与软件源 http://121.36.84.172/dailybuild/EBS-openEuler-24.03-LTS/rc4_openeuler-2024-04-30-22-53-55/ openeuler 24.03 riscv镜像 https://repo.tarsier-infra.isrc.ac.cn/openEuler-RISC-V/testing/2403LTS-test/v1/ openeuler 24.03 riscv软件源 Mainline:https://build-repo.tarsier-infra.isrc.ac.cn/openEuler:/24.03/mainline_riscv64/ Epol:https://build-repo.tarsier-infra.isrc.ac.cn/openEuler:/24.03:/Epol/mainline_riscv64/

值得注意的是 x86 的repo源资源还没有搭载,需要同学们自己改写下

位于/etc/yum.repos.d/openEuler.repo

riscv镜像链接中也预留了docker镜像但是截至 2024.5.20 这个镜像还存在问题,无法进行测试

所以如果有同学目前想使用docker来进行riscv测试,可能还需要等待

前置工作-mugen框架环境配置

  1. fork mugen源码 并clone到本地openEuler机器上

  2. 进入mugen

  3. bash dep_install.sh

  4. ip address show 查看自己当前的ip信息(如果有的小伙伴使用的是vm上的openeuler,默认配置下,重启vm可能会使ip变化)

  5. bash mugen.sh -c --ip $ip --password $passwd --user $user --port $port

    参数说明:

    • ip:测试机的ip地址
    • user:测试机的登录用户,默认为root
    • password: 测试机的登录密码
    • port:测试机ssh登陆端口,默认为22
    • 环境变量文件:./conf/env.json

注:当你跑一个测例时会生成mugen框架变量,位于 ./conf/mugen.env,这个文件中的内容是不会被vscode的全局搜索搜索到的(因为在windows上使用vscode,没有运行dep_install.sh 没生成储存变量的文件),包括使用 env 或者 shell 的变量定位都是找不到的,且这个文件需要跑一次测例才会生成

image-20240518171856773像是这张图中(并非 dejagnu 的测例)的 ${OET_PATH} $NODE1_FRAME都是框架变量

愉快的测试

./mugen.sh -f dejagnu -r oe_test_dejagnu_runtest_02 -x

就可以测试 derby 这个测试套里的 oe_test_dejagnu_runtest_02.sh 测例啦

然后就是等待观察结果

最好的情况当然是 sucesses

如果运气不好就是 fail(实际上由于目前测试的都是之前留下来错误的用例,fail的情况反而更多)

需要注意的是

每次测试的环境都应该是纯净的!

每次测试的环境都应该是纯净的!

每次测试的环境都应该是纯净的!

重要的事情说三遍

说明下我在进行 derby 测试用例的测试产生的情况

这个用例就是原来能跑过,但纯净环境下跑不过去,这种属于 fail。

错误的测试结果可能产生灾难性的后果,对你来说就是浪费了你的时间,还没产出。对于社区只会只会更糟。

那如果 fail 了怎么处理呢?

处理问题

我这里提供两种思路

  1. 查看log,位于 mugen/log 中
  2. 一步一步的运行脚本中的内容

勤 google 大概率就能找到问题啦

现在来结合 dejagnu 测例 看下如何具体找到问题

查看 log 位于mugen/logs/测试套/测试用例/测试的时间.log

riscv<-------------------------------------------------------------->x86

img

可以看到 riscv 产生了 error spawn id exp7 not open while executing

这就很简单的定位到了问题,这里我 google 了很久,但是没找到原因,不过已经定位到了问题,你的任务就算是完成的很不错了

如何具体处理错误的一些方法 “陈同学” 出过一篇更全面处理的 case,oerv-team/cases/2024.5.10-mugen-testcase-陈志康.md at main · openEuler-RISCV/oerv-team (github.com)

处理错误测例

接下来你就要思考

这是软件包的问题?(那么要查看软件包的版本,缺包的话要查看社区是否引入这个包,也可能存在这个包不再提供长期支持的情况)

还是架构存在的问题?

或者说是测例本身的问题?

提交 issue

请按照格式https://gitee.com/src-openeuler/firebird/issues/I9JQO7

并且尽可能多提供你的环境信息,这样有利于开发的同学尽快修复问题

也请注意你的 qemu 版本,目前发现 qemu8 对于 docker 和 isulad 的支持都存在问题

提交 pr

注:通俗的说你的pr修改内容应该只在这个测试套内,一般来说 mugen 框架提供的函数不需要你去修改,毕竟这个修改肯定是大工程

值得注意的是如果有多个邮箱的小伙伴记得提交的时候邮箱是正确的否则会过不了cla检测

更新信息

github issue

在你 Assigned 的 issue 下留下你的 pr 或 issue 信息,可以的话也可以留下你处理问题的过程

文档

更新2403_mugen失败测试用例清单中的相关内容


建议

保存下每次测试的 log 信息,有的测试任务需要 log 信息留档。