304 lines
14 KiB
Diff
304 lines
14 KiB
Diff
diff -Naur rpm/config/test_config.yaml oech/config/test_config.yaml
|
||
--- rpm/config/test_config.yaml 2022-10-24 08:36:33.000000000 +0800
|
||
+++ oech/config/test_config.yaml 2022-11-09 17:12:48.008572012 +0800
|
||
@@ -3,6 +3,7 @@
|
||
#disk: fc\raid\disk testcase need configuration, The disk to be tested, such as sda; Or all, test all qualified disks.
|
||
#if_rdma: ethernet testcase need configuration, N means to test according to ordinary network card, y means to test according to RDMA card
|
||
#server_ip: ethernet\infiniband testcase need configuration. If the server port is modified, need to add the port number after the IP address. eg: 2.2.2.4:8090.
|
||
+# User need to delete the ip manually which are configured by tool after testing.
|
||
#clent_ip: ethernet\infiniband testcase need configuration. IP to be configured for the client port
|
||
fc:
|
||
fc1:
|
||
diff -Naur rpm/docs/design_docs/dev_design.md oech/docs/design_docs/dev_design.md
|
||
--- rpm/docs/design_docs/dev_design.md 2022-10-24 08:36:33.000000000 +0800
|
||
+++ oech/docs/design_docs/dev_design.md 2022-11-09 17:12:48.009572012 +0800
|
||
@@ -262,6 +262,7 @@
|
||
# client_ip为客户端测试网卡配置的IP
|
||
# server_ip为服务端测试网卡配置的IP
|
||
# 服务端的端口默认是80,如果有修改,需要添加上修改后的端口号,如下面的eth2示例。
|
||
+# 服务端自动配置的IP,测试完成后,需用户手动删除(ip addr del ip地址 dev 接口)。
|
||
ethernet:
|
||
# 已手动配置客户端和服务端测试网卡的IP,这里需要添加上服务端的IP地址。
|
||
eth1:
|
||
diff -Naur rpm/hwcompatible/cert_info.py oech/hwcompatible/cert_info.py
|
||
--- rpm/hwcompatible/cert_info.py 2022-10-24 08:36:33.000000000 +0800
|
||
+++ oech/hwcompatible/cert_info.py 2022-11-09 17:12:48.010572012 +0800
|
||
@@ -71,13 +71,13 @@
|
||
oec_json["os"] = os_version
|
||
curday = date.today().strftime("%Y.%m.%d")
|
||
oec_json["date"] = curday
|
||
- shanum = self.command.run_cmd(
|
||
- "modinfo %s | grep signature | awk '{print $2}'" % device.driver, log_print=False)
|
||
- oec_json["sha256"] = shanum[0].replace(":", "").strip("\n")
|
||
filename = self.command.run_cmd(
|
||
"modinfo %s | grep filename | awk '{print $2}'" % device.driver, log_print=False)
|
||
+ shanum = self.command.run_cmd(
|
||
+ "sha256sum %s | awk '{print $1}'" % filename[0].strip("\n"), log_print=False)
|
||
+ oec_json["sha256"] = shanum[0].strip("\n")
|
||
driver_size = self.command.run_cmd(
|
||
- "ls -lh %s | awk '{print $5}'" % filename[0], log_print=False)
|
||
+ "ls -lh %s | awk '{print $5}'" % filename[0].strip("\n"), log_print=False)
|
||
oec_json["driverSize"] = driver_size[0].strip("\n")
|
||
oec_json["downloadLink"] = "inbox"
|
||
|
||
diff -Naur rpm/hwcompatible/command.py oech/hwcompatible/command.py
|
||
--- rpm/hwcompatible/command.py 2022-10-24 08:36:33.000000000 +0800
|
||
+++ oech/hwcompatible/command.py 2022-11-09 17:12:48.010572012 +0800
|
||
@@ -13,9 +13,9 @@
|
||
# Create: 2020-04-01
|
||
|
||
import os
|
||
-from signal import signal
|
||
-import subprocess
|
||
import shlex
|
||
+import signal
|
||
+import subprocess
|
||
from .constants import SHELL_ENV
|
||
|
||
|
||
diff -Naur rpm/hwcompatible/config_ip.py oech/hwcompatible/config_ip.py
|
||
--- rpm/hwcompatible/config_ip.py 2022-10-24 08:36:33.000000000 +0800
|
||
+++ oech/hwcompatible/config_ip.py 2022-11-09 17:12:48.010572012 +0800
|
||
@@ -158,7 +158,8 @@
|
||
Configure the IP address of the server.
|
||
"""
|
||
result = CommandUI().prompt_confirm(
|
||
- "Are you sure to configure %s on server port?" % self.server_ip)
|
||
+ "Are you sure to configure %s on server port?\n"
|
||
+ "After the test, need to manually delete this ip." % self.server_ip)
|
||
if not result:
|
||
self.logger.warning(
|
||
"User won't use the generate IP address, stop the test.")
|
||
diff -Naur rpm/README.md oech/README.md
|
||
--- rpm/README.md 2022-10-24 08:36:33.000000000 +0800
|
||
+++ oech/README.md 2022-11-09 17:12:48.002572012 +0800
|
||
@@ -200,9 +200,9 @@
|
||
|
||
* `/usr/share/oech/kernelrelease.json` 文件中列出了当前支持的所有系统版本,使用`uname -a` 命令确认当前系统内核版本是否属于框架支持的版本。
|
||
|
||
-* 框架默认会扫描所有网卡,对网卡进行测试前,请自行筛选被测网卡,并给它配上能 `ping` 通服务端的 ip;如果客户端是对 InfiniBand 网卡进行测试,服务端也必须有一个 InfiniBand 网卡并提前配好 ip 。建议不要使用业务网口进行网卡测试。
|
||
+* 框架默认会扫描所有网卡,对网卡进行测试前,请自行筛选被测网卡;要求测试端口连通,状态为up。建议不要使用业务网口进行网卡测试。
|
||
|
||
-* `/usr/share/oech/lib/config/test_config.yaml ` 是硬件测试项配置文件模板,`fc`、`raid`、`disk`、`ethernet`、`infiniband`硬件测试前需先根据实际环境进行修改,其它硬件测试不需要修改。
|
||
+* `/usr/share/oech/lib/config/test_config.yaml ` 是硬件测试项配置文件模板,`fc`、`raid`、`disk`、`ethernet`、`infiniband`硬件测试前需先根据实际环境进行配置,其它硬件测试不需要配置。对于网卡测试,如果是工具自动添加的IP地址,测试完成后,为了安全,服务端的IP需手动删除。
|
||
|
||
## 使用步骤
|
||
|
||
diff -Naur rpm/server/server.py oech/server/server.py
|
||
--- rpm/server/server.py 2022-10-24 08:36:33.000000000 +0800
|
||
+++ oech/server/server.py 2022-11-09 17:12:48.011572012 +0800
|
||
@@ -21,7 +21,6 @@
|
||
import base64
|
||
import re
|
||
import operator
|
||
-import stat
|
||
from urllib.parse import urlencode
|
||
from urllib.request import urlopen, Request
|
||
from urllib.error import HTTPError
|
||
@@ -33,7 +32,6 @@
|
||
dir_server = os.path.dirname(os.path.realpath(__file__))
|
||
dir_results = os.path.join(dir_server, 'results')
|
||
dir_files = os.path.join(dir_server, 'files')
|
||
-ip_file = os.path.join(dir_server, "ip.txt")
|
||
|
||
|
||
@app.errorhandler(400)
|
||
@@ -353,8 +351,6 @@
|
||
if operator.eq(quad, eval(card_id)):
|
||
subprocess.getoutput(
|
||
"ifconfig %s:0 %s/24" % (pt, sever_ip))
|
||
- with os.fdopen(os.open(ip_file, os.O_WRONLY | os.O_CREAT, stat.S_IRUSR), 'w+') as f:
|
||
- f.write('{},{}'.format(pt, sever_ip))
|
||
break
|
||
|
||
return render_template('index.html')
|
||
@@ -391,7 +387,6 @@
|
||
if cmd[0] == 'all':
|
||
for process_name in valid_commands:
|
||
__stop_process(process_name)
|
||
- __delete_ip()
|
||
else:
|
||
__stop_process(cmd[0])
|
||
else:
|
||
@@ -459,19 +454,5 @@
|
||
quad.extend([tmp[-3] + tmp[-4], tmp[-1] + tmp[-2]])
|
||
return quad
|
||
|
||
-
|
||
-def __delete_ip():
|
||
- """
|
||
- Delete the IP configured on the server
|
||
- """
|
||
- if not os.path.exists(ip_file):
|
||
- return
|
||
-
|
||
- with open(ip_file, 'r') as f:
|
||
- ip = f.read().split(',')
|
||
- subprocess.Popen(['ip', 'addr', 'del', ip[1], "dev", ip[0]])
|
||
- os.remove(ip_file)
|
||
-
|
||
-
|
||
if __name__ == '__main__':
|
||
app.run(host='0.0.0.0', port=80)
|
||
diff -Naur rpm/tests/cdrom/cdrom.py oech/tests/cdrom/cdrom.py
|
||
--- rpm/tests/cdrom/cdrom.py 2022-10-24 08:36:33.000000000 +0800
|
||
+++ oech/tests/cdrom/cdrom.py 2022-11-09 17:12:48.013572012 +0800
|
||
@@ -32,6 +32,9 @@
|
||
self.type = None
|
||
self.com_ui = CommandUI()
|
||
self.test_dir = "/usr/share/doc"
|
||
+ read_dir = os.getcwd()
|
||
+ self.mnt_dir = os.path.join(read_dir, "mnt_cdrom")
|
||
+ self.device_dir = os.path.join(read_dir, "device_dir")
|
||
|
||
def setup(self, args=None):
|
||
"""
|
||
@@ -191,29 +194,32 @@
|
||
:return:
|
||
"""
|
||
devname = self.device.get_property("DEVNAME")
|
||
- os.mkdir("mnt_cdrom")
|
||
-
|
||
+ if os.path.exists(self.mnt_dir):
|
||
+ shutil.rmtree(self.mnt_dir)
|
||
+ os.mkdir(self.mnt_dir)
|
||
self.logger.info("Check to mount media.", terminal_print=True)
|
||
self.command.run_cmd("umount %s" % devname, ignore_errors=True)
|
||
- self.command.run_cmd("mount -o ro %s ./mnt_cdrom" % devname)
|
||
+ self.command.run_cmd("mount -o ro %s %s" % (devname, self.mnt_dir))
|
||
|
||
cmd_result = self.command.run_cmd(
|
||
"df %s | tail -n1 | awk '{print $3}'" % devname)
|
||
size = int(cmd_result[0])
|
||
if size == 0:
|
||
self.logger.error("This is a blank disc.")
|
||
- self.command.run_cmd("umount ./mnt_cdrom")
|
||
- shutil.rmtree("mnt_cdrom")
|
||
+ self.command.run_cmd("umount %s" % self.mnt_dir)
|
||
+ shutil.rmtree(self.mnt_dir)
|
||
return False
|
||
|
||
- os.mkdir("device_dir")
|
||
- self.logger.info("Check to copy files.", ignore_errors=True)
|
||
- self.command.run_cmd("cp -dpRf ./mnt_cdrom ./device_dir")
|
||
+ if os.path.exists(self.device_dir):
|
||
+ shutil.rmtree(self.device_dir)
|
||
+ os.mkdir(self.device_dir)
|
||
+ self.logger.info("Check to copy files.", terminal_print=True)
|
||
+ self.command.run_cmd("cp -dprf %s/. %s" % (self.mnt_dir, self.device_dir))
|
||
|
||
self.logger.info(
|
||
- "Check to compare files in directory.", ignore_errors=True)
|
||
- return_code = self.cmp_tree("mnt_cdrom", "device_dir")
|
||
- self.command.run_cmd("umount ./mnt_cdrom")
|
||
+ "Check to compare files in directory.", terminal_print=True)
|
||
+ return_code = self.cmp_tree(self.mnt_dir, self.device_dir)
|
||
+ self.command.run_cmd("umount %s" % self.mnt_dir)
|
||
if return_code:
|
||
self.logger.info("Compare directory succeed.")
|
||
else:
|
||
@@ -259,7 +265,7 @@
|
||
return True
|
||
|
||
def teardown(self):
|
||
- if os.path.exists("mnt_cdrom"):
|
||
- shutil.rmtree("mnt_cdrom")
|
||
- if os.path.exists("device_dir"):
|
||
- shutil.rmtree("device_dir")
|
||
+ if os.path.exists(self.mnt_dir):
|
||
+ shutil.rmtree(self.mnt_dir)
|
||
+ if os.path.exists(self.device_dir):
|
||
+ shutil.rmtree(self.device_dir)
|
||
diff -Naur rpm/tests/infiniband/infiniband.py oech/tests/infiniband/infiniband.py
|
||
--- rpm/tests/infiniband/infiniband.py 2022-10-24 08:36:33.000000000 +0800
|
||
+++ oech/tests/infiniband/infiniband.py 2022-11-09 17:12:48.014572012 +0800
|
||
@@ -13,7 +13,6 @@
|
||
# Create: 2022-05-24
|
||
# Desc: InfiniBand Test
|
||
|
||
-import re
|
||
from tests.network.rdma import RDMATest
|
||
|
||
|
||
diff -Naur rpm/tests/network/ethernet.py oech/tests/network/ethernet.py
|
||
--- rpm/tests/network/ethernet.py 2022-10-24 08:36:33.000000000 +0800
|
||
+++ oech/tests/network/ethernet.py 2022-11-09 17:12:48.023572011 +0800
|
||
@@ -27,8 +27,13 @@
|
||
"""
|
||
path_netdev = ''.join(['/sys', self.device.get_property("DEVPATH")])
|
||
path_pci = path_netdev.split('net')[0]
|
||
- result = self.command.run_cmd("ls %s | grep -q infiniband" % path_pci)
|
||
- return result[2] == 0
|
||
+ result = self.command.run_cmd("ls %s | grep -q infiniband" % path_pci, ignore_errors=False)
|
||
+ if result[2] == 0:
|
||
+ self.logger.info("Current ethernet supports RoCE.")
|
||
+ return True
|
||
+
|
||
+ self.logger.info("Current ethernet doesn't support RoCE, no need test Roce.")
|
||
+ return False
|
||
|
||
def setup(self, args=None):
|
||
"""
|
||
diff -Naur rpm/tests/network/network.py oech/tests/network/network.py
|
||
--- rpm/tests/network/network.py 2022-10-24 08:36:33.000000000 +0800
|
||
+++ oech/tests/network/network.py 2022-11-09 17:12:48.023572011 +0800
|
||
@@ -138,10 +138,13 @@
|
||
self.command.run_cmd("ip link set down %s" % interface)
|
||
for _ in range(5):
|
||
result = self.command.run_cmd(
|
||
- "ip link show %s | grep 'state DOWN'" % interface)
|
||
+ "ip link show %s | grep 'state DOWN'" % interface, ignore_errors=False)
|
||
if result[2] == 0:
|
||
+ self.logger.info("Set interface %s down succeed." % self.interface)
|
||
return True
|
||
time.sleep(1)
|
||
+
|
||
+ self.logger.error("Set interface %s down failed." % self.interface)
|
||
return False
|
||
|
||
def ifup(self, interface):
|
||
@@ -153,11 +156,13 @@
|
||
self.command.run_cmd("ip link set up %s" % interface)
|
||
for _ in range(5):
|
||
result = self.command.run_cmd(
|
||
- "ip link show %s | grep 'state UP'" % interface)
|
||
+ "ip link show %s | grep 'state UP'" % interface, ignore_errors=False)
|
||
if result[2] == 0:
|
||
+ self.logger.info("Set interface %s up succeed." % self.interface)
|
||
return True
|
||
time.sleep(1)
|
||
|
||
+ self.logger.error("Set interface %s up failed." % self.interface)
|
||
return False
|
||
|
||
def get_speed(self):
|
||
@@ -419,14 +424,12 @@
|
||
Test eth link
|
||
:return:
|
||
"""
|
||
- self.logger.info("Setting interface %s down..." % self.interface)
|
||
+ self.logger.info("Setting interface %s down." % self.interface)
|
||
if not self.ifdown(self.interface):
|
||
- self.logger.error("Set interface %s down failed." % self.interface)
|
||
return False
|
||
|
||
- self.logger.info("Setting interface %s up..." % self.interface)
|
||
+ self.logger.info("Setting interface %s up." % self.interface)
|
||
if not self.ifup(self.interface):
|
||
- self.logger.error("Set interface %s up failed." % self.interface)
|
||
return False
|
||
|
||
self.speed = self.get_speed()
|
||
diff -Naur rpm/tests/system/system.py oech/tests/system/system.py
|
||
--- rpm/tests/system/system.py 2022-10-24 08:36:33.000000000 +0800
|
||
+++ oech/tests/system/system.py 2022-11-09 17:12:48.024572011 +0800
|
||
@@ -57,7 +57,7 @@
|
||
flag = True
|
||
for cert_package in ["oec-hardware"]:
|
||
rpm_verify = self.command.run_cmd(
|
||
- "rpm -V --nomtime --nomode --nocontexts %s" % cert_package)
|
||
+ "rpm -V --nomtime --nomode --nocontexts %s" % cert_package, ignore_errors=True)
|
||
if rpm_verify[2] == 0:
|
||
continue
|
||
|