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