NVMe SSD 自动化平台

GNU General Public License v3.0
python
linux
yuwen123441 · December 16, 2019 · 539 次阅读 · 0 条评论

NVMe 自动化测试平台

这是NVMe SSD 设备的测试平台,用户可以用于测试NVMe协议相关的内容

为什么开发这个平台

  • 随着NVMe SSD 的普及,国内做NVMe 芯片的厂商越来越多,对NVMe测试需求也逐步增加,开源的NVMe测试平台可以帮助厂商快速搭建自己的测试场景。
  • 现在市场上NVMe的测试设备都很昂贵,一般需要购买测试设备,还有测试软件的license,进行NVMe测试的成本很高,搭建一个NVMe开源自动化测试平台,可以降低测试成本,同时集中大家的力量一起,完善测试用例,增加测试覆盖。

测试平台

  • Linux

开发语言

  • Python

框架结构

框架结构介绍

  • 如下图所示,NVMe SSD 设备链接插在PCIE 接口上,我们可以通过操作系统驱动层的ioctl 和SSD 进行交互, IOCTL 接口如下:
    #define NVME_IOCTL_ADMIN_CMD _IOWR('N', 0x41, struct nvme_admin_cmd)
    #define NVME_IOCTL_SUBMIT_IO _IOW('N', 0x42, struct nvme_user_io)
    #define NVME_IOCTL_IO_CMD _IOWR('N', 0x43, struct nvme_passthru_cmd)

  • 根据ioctrl 相关的接口,使用C 语言,我们开发了一组和SSD 进行交互的接口,用户帮助我们实现和NVMe交互, 如下:
    int nvme_fw_download(int fd, __u32 offset, __u32 data_len, void *data);
    int nvme_fw_commit(int fd, __u8 slot, __u8 action, __u8 bpid);

  • 有了step2中开发的动态链接库中,使用python开发相关的NVMe 接口,这部分库需要实现相关的NVMe功能,如实现 get log page 或者identify 等功能

  • NVMe相关的python库的基础上,开发对应的测试用例和测试套

已经实现的NVMe库

  • IO
  • Get log page
  • Identify
  • Firmware download commite
  • get set feature
  • namespace
  • format

如何开发测试用例

  • 测试用例采用nosetests 作为用例管理框架,nosetest是基于Python的自动化测试框架, 易于编写,测试报告也完整。
  • 用户可以在 “test case” 目录下面开发所需的case,模板如下

如何执行测试用例

  • 在测试用例的目录下,执行nosetest的命令执行
    执行单个测试用例:nosetests -s test_identify_controller.py:TestIdentifyController.test_vid
    执行整个测试套:nosetests -s test_identify_controller.py:TestIdentifyController
  • nosetests 在执行中,还有其他许多功能,可以参考: https://nose.readthedocs.io/en/latest/man.html
评论列表
No comment at the moment.