osmts:OERV之一站式管理测试脚本

最近团队里面实习的小伙伴开发了一个新的项目,可以用来一键式运行各种测试脚本并且完成数据总结,我也尝试部署了一下,遇到了一些问题,接下来一起解析一下这个项目。

首先是获取osmts

复制代码
git clone https://gitee.com/April_Zhao/osmts.git
cd osmts

运行前环境安装

复制代码
dnf install gcc python python3-devel python3-pip
pip install --upgrade pip setuptools
pip install -r requirements.txt

# 如果遇到SSL问题
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host=files.pythonhosted.org -r requirements.txt

# 仍然提示SSL错误
dnf install ntp
ntpdate cn.pool.ntp.org

直接运行脚本

复制代码
# main.py应当直接以root身份运行
chmod +x main.py
./main.py

做到这里,照理来说是可以运行的(官方做法),但是我却遇到了这个问题。

于是我向官方提交了一个轻量级PR,在requirements.txt里面加了tornado,就可以运行起来了。PR:【轻量级 PR】:Tornado missing · Pull Request !1 · April_Zhao/osmts - Gitee.com

这是测试的过程,由于过程缓慢,所以建议用tmux挂在后台运行。接下来我们看看项目结构。

testclasses目录里面存放着各种各样的测试样本,有LLVM的测试,ltp测试等等。真正跑起来是在main.py

复制代码
testclasses = from_tests_to_tasks(run_tests)

if not osmts_tmp_dir.exists():
    osmts_tmp_dir.mkdir()

# 所有检查都通过,则正式开始测试
for testclass in testclasses:
    testclass.run()

这是测试运行的代码,而from_tests_to_tasks这个函数,主要用来对测试任务进行收集,测试任务环境准备以及调整测试顺序,并且分别调用了fio_judge和netperf_judge,这两个函数用于在使用fio以及netperf测试之前对本机环境进行检测,判断是否适合进行相应的测试。

最终测试结果类似下图:

不过小伙伴和我说,他的机器不需要安装tornado也能运行,但是在我这里行不通,因此我这个PR还有争议。我推断是跟Python版本或者软件包版本有关系,我目前运行环境是OERV 24.09,希望后面能顺利探讨出原因。