[关闭]
@tony-yin 2018-03-09T14:31:26.000000Z 字数 3432 阅读 619

硬件环境测试环境模拟

Test


最近在做一个feature,测试的时候需要硬件环境的支撑。一般我们开发环境都是虚拟机,所以针对这种开发工作的自测无法进行,比如虚拟机上没有物理磁盘,没有raid卡等,为了一个小功能的测试,需要出build,需要硬件环境的部署和安装,这个工作量着实不小。

往往针对这种情况,作为开发人员可以针对硬件环境的具体需求,尽可能在自己的环境上做模拟,也就是我们俗称的“打桩”。

就拿我这次做的需求来说吧,我想获取磁盘的相关信息,获取方式是通过raid卡工具,可能是megacli,也可能是sas3ircu等等,这个取决于lspci查看raid卡的型号,然后还要通过lsblklsscsi工具获取相关信息。

我的做法是针对这些工具,自己写一个简易的小工具,就比如lsblk我也写一个lsblk的脚本,里面的代码也很简单,先找一个硬件环境,将lsblk读取的内容重定向到文件中,这时候我们自己写的脚本直接去读这个文件就可以了。务必要保证各个软件工具的一致性。

lsblk为例,我可能需求两种情况lsblklsblk -l

lsblk

  1. #! /bin/bash
  2. lsblk_path=$(dirname $0)
  3. if [ $# -eq 0 ]; then
  4. echo "$(cat $lsblk_path"/lsblk.txt")"
  5. fi
  6. while getopts ":l" opt; do
  7. case $opt in
  8. l)
  9. echo "$(cat $lsblk_path"/lsblk_list.txt")"
  10. ;;
  11. \?)
  12. echo "Invalid option: -$OPTARG"
  13. ;;
  14. esac
  15. done

lsblk.txt

  1. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  2. sda 8:0 0 3.7T 0 disk
  3. ├─sda1 8:1 0 30.5M 0 part ar
  4. ├─sda2 8:2 0 488.3M 0 part ar
  5. ├─sda3 8:3 0 93.1G 0 part /rt
  6. ├─sda4 8:4 0 256G 0 part [SWAP]WA
  7. └─sda5 8:5 0 3.3T 0 part /data/osd.0sd
  8. sdb 8:16 0 372.1G 0 disk
  9. └─sdb1 8:17 0 372.1G 0 part ar
  10. sdc 8:32 0 2.7T 0 disk
  11. └─sdc1 8:33 0 2.7T 0 part /data/osd.1sd
  12. sdd 8:48 0 2.7T 0 disk
  13. └─sdd1 8:49 0 2.7T 0 part /data/osd.2sd
  14. sde 8:64 0 2.7T 0 disk
  15. └─sde1 8:65 0 2.7T 0 part /data/osd.3sd
  16. sdf 8:80 0 2.7T 0 disk
  17. └─sdf1 8:81 0 2.7T 0 part /data/osd.11d.
  18. sdg 8:96 0 2.7T 0 disk
  19. └─sdg1 8:97 0 2.7T 0 part /data/osd.12d.
  20. sdh 8:112 0 2.7T 0 disk
  21. └─sdh1 8:113 0 2.7T 0 part ar
  22. sdi 8:128 0 2.7T 0 disk
  23. └─sdi1 8:129 0 2.7T 0 part /data/osd.8sd
  24. sdj 8:144 0 2.7T 0 disk
  25. └─sdj1 8:145 0 2.7T 0 part /data/osd.9sd
  26. sdk 8:160 0 2.7T 0 disk
  27. └─sdk1 8:161 0 2.7T 0 part /data/osd.10d.
  28. sdl 8:176 0 2.7T 0 disk
  29. └─sdl1 8:177 0 2.7T 0 part ar
  30. sdm 8:192 0 2.7T 0 disk
  31. └─sdm1 8:193 0 2.7T 0 part ar
  32. sdn 8:208 0 2.7T 0 disk
  33. └─sdn1 8:209 0 2.7T 0 part ar
  34. sdo 8:224 0 2.7T 0 disk
  35. └─sdo1 8:225 0 2.7T 0 part
  36. sdp 8:240 0 2.7T 0 disk
  37. └─sdp1 8:241 0 2.7T 0 part
  38. sdq 65:0 0 2.7T 0 disk
  39. └─sdq1 65:1 0 2.7T 0 part
  40. sdr 65:16 0 2.7T 0 disk
  41. └─sdr1 65:17 0 2.7T 0 part
  42. sds 65:32 0 2.7T 0 disk
  43. └─sds1 65:33 0 2.7T 0 part
  44. sdt 65:48 0 2.7T 0 disk
  45. └─sdt1 65:49 0 2.7T 0 part
  46. sdu 65:64 0 2.7T 0 disk
  47. └─sdu1 65:65 0 2.7T 0 part
  48. sdv 65:80 0 744.7G 0 disk
  49. ├─sdv1 65:81 0 50G 0 part
  50. ├─sdv2 65:82 0 50G 0 part
  51. ├─sdv3 65:83 0 50G 0 part
  52. ├─sdv4 65:84 0 50G 0 part
  53. ├─sdv5 65:85 0 50G 0 part
  54. ├─sdv6 65:86 0 50G 0 part
  55. ├─sdv7 65:87 0 50G 0 part
  56. ├─sdv8 65:88 0 50G 0 part
  57. ├─sdv9 65:89 0 50G 0 part
  58. ├─sdv10 65:90 0 50G 0 part
  59. ├─sdv11 65:91 0 50G 0 part
  60. └─sdv12 65:92 0 50G 0 part

lsblk_list.txt

  1. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  2. sda 8:0 0 3.7T 0 disk
  3. sda1 8:1 0 30.5M 0 part
  4. sda2 8:2 0 488.3M 0 part
  5. sda3 8:3 0 93.1G 0 part /
  6. sda4 8:4 0 256G 0 part [SWAP]
  7. sda5 8:5 0 3.3T 0 part /data/osd.0
  8. sdb 8:16 0 372.1G 0 disk
  9. sdb1 8:17 0 372.1G 0 part
  10. sdc 8:32 0 2.7T 0 disk
  11. sdc1 8:33 0 2.7T 0 part /data/osd.1
  12. sdd 8:48 0 2.7T 0 disk
  13. sdd1 8:49 0 2.7T 0 part /data/osd.2
  14. sde 8:64 0 2.7T 0 disk
  15. sde1 8:65 0 2.7T 0 part /data/osd.3
  16. sdf 8:80 0 2.7T 0 disk
  17. sdf1 8:81 0 2.7T 0 part /data/osd.11
  18. sdg 8:96 0 2.7T 0 disk
  19. sdg1 8:97 0 2.7T 0 part /data/osd.12
  20. sdh 8:112 0 2.7T 0 disk
  21. sdh1 8:113 0 2.7T 0 part
  22. sdi 8:128 0 2.7T 0 disk
  23. sdi1 8:129 0 2.7T 0 part /data/osd.8
  24. sdj 8:144 0 2.7T 0 disk
  25. sdj1 8:145 0 2.7T 0 part /data/osd.9
  26. sdk 8:160 0 2.7T 0 disk
  27. sdk1 8:161 0 2.7T 0 part /data/osd.10
  28. sdl 8:176 0 2.7T 0 disk
  29. sdl1 8:177 0 2.7T 0 part
  30. sdm 8:192 0 2.7T 0 disk
  31. sdm1 8:193 0 2.7T 0 part
  32. sdn 8:208 0 2.7T 0 disk
  33. sdn1 8:209 0 2.7T 0 part
  34. sdo 8:224 0 2.7T 0 disk
  35. sdo1 8:225 0 2.7T 0 part
  36. sdp 8:240 0 2.7T 0 disk
  37. sdp1 8:241 0 2.7T 0 part
  38. sdq 65:0 0 2.7T 0 disk
  39. sdq1 65:1 0 2.7T 0 part
  40. sdr 65:16 0 2.7T 0 disk
  41. sdr1 65:17 0 2.7T 0 part
  42. sds 65:32 0 2.7T 0 disk
  43. sds1 65:33 0 2.7T 0 part
  44. sdt 65:48 0 2.7T 0 disk
  45. sdt1 65:49 0 2.7T 0 part
  46. sdu 65:64 0 2.7T 0 disk
  47. sdu1 65:65 0 2.7T 0 part
  48. sdv 65:80 0 744.7G 0 disk
  49. sdv1 65:81 0 50G 0 part
  50. sdv2 65:82 0 50G 0 part
  51. sdv3 65:83 0 50G 0 part
  52. sdv4 65:84 0 50G 0 part
  53. sdv5 65:85 0 50G 0 part
  54. sdv6 65:86 0 50G 0 part
  55. sdv7 65:87 0 50G 0 part
  56. sdv8 65:88 0 50G 0 part
  57. sdv9 65:89 0 50G 0 part
  58. sdv10 65:90 0 50G 0 part
  59. sdv11 65:91 0 50G 0 part
  60. sdv12 65:92 0 50G 0 part

还有一些其他工具我就不详细贴代码了,具体请去github上查看。

项目地址:https://github.com/tony-yin/Hardware_Test_Tool

操作步骤:

1.下载代码

  1. git clone git@github.com:tony-yin/Hardware_Test_Tool.git

2.安装工具

  1. ./build install

3.卸载工具

  1. ./build uninstall
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注