diff -Naur rpm/tests/infiniband/infiniband.py oech/tests/infiniband/infiniband.py --- rpm/tests/infiniband/infiniband.py 2022-08-03 18:05:22.031340460 +0800 +++ oech/tests/infiniband/infiniband.py 2022-08-03 18:02:43.727340460 +0800 @@ -29,6 +29,7 @@ self.target_bandwidth_percent = 0.5 self.config_data = dict() self.server_ip = "" + self.server_port = "80" self.args = None def test_ib_link(self): @@ -68,6 +69,8 @@ self.config_data = getattr(self.args, "config_data", None) if self.config_data: self.server_ip = self.config_data.get("server_ip", "") + if ":" in self.server_ip: + self.server_ip, self.server_port = self.server_ip.split(":") else: self.logger.error("Failed to test item value from configuration file.") diff -Naur rpm/tests/infiniband/network.py oech/tests/infiniband/network.py --- rpm/tests/infiniband/network.py 2022-08-03 18:05:22.031340460 +0800 +++ oech/tests/infiniband/network.py 2022-08-03 18:02:43.727340460 +0800 @@ -34,6 +34,7 @@ self.interface = None self.other_interfaces = [] self.server_ip = None + self.server_port = "80" self.retries = 3 self.speed = 1000 # Mb/s self.target_bandwidth_percent = 0.8 @@ -94,7 +95,7 @@ form = dict() form['cmd'] = cmd form['ib_server_ip'] = ib_server_ip - url = 'http://%s/api/%s' % (self.server_ip, act) + url = 'http://%s:%s/api/%s' % (self.server_ip, self.server_port, act) data = urlencode(form).encode('utf8') headers = { 'Content-type': 'application/x-www-form-urlencoded', diff -Naur rpm/tests/network/ethernet.py oech/tests/network/ethernet.py --- rpm/tests/network/ethernet.py 2022-08-03 18:05:22.031340460 +0800 +++ oech/tests/network/ethernet.py 2022-08-03 18:02:43.727340460 +0800 @@ -33,6 +33,7 @@ self.device = None self.config_data = dict() self.server_ip = "" + self.server_port = "80" self.subtests = [self.test_ip_info, self.test_eth_link, self.test_icmp, self.test_udp_tcp, self.test_http] self.target_bandwidth_percent = 0.75 @@ -61,7 +62,9 @@ self.show_driver_info() self.config_data = getattr(args, "config_data", None) if self.config_data: - self.server_ip = self.config_data.get("server_ip") + self.server_ip = self.config_data.get("server_ip", "") + if ":" in self.server_ip: + self.server_ip, self.server_port = self.server_ip.split(":") choice = self.config_data.get("if_rdma") else: self.logger.error("Get test item value from configuration file failed.") diff -Naur rpm/tests/network/network.py oech/tests/network/network.py --- rpm/tests/network/network.py 2022-08-03 18:05:22.031340460 +0800 +++ oech/tests/network/network.py 2022-08-03 18:02:43.727340460 +0800 @@ -22,6 +22,7 @@ from hwcompatible.test import Test from hwcompatible.command import Command +from hwcompatible.constants import FILE_FLAGS, FILE_MODES class NetworkTest(Test): @@ -33,6 +34,7 @@ self.requirements = ['ethtool', 'iproute', 'psmisc', 'qperf'] self.retries = 3 self.testfile = 'testfile' + self.speed = 0 def ifdown(self, interface): """ @@ -72,7 +74,7 @@ return int(speed) except Exception: self.logger.error("[X] No speed found on the interface.") - return None + return 0 def get_interface_ip(self): """ @@ -86,7 +88,7 @@ return ip_addr except Exception: self.logger.error("[X] No available ip on the interface.") - return None + return "" def test_icmp(self): """ @@ -98,14 +100,14 @@ pattern = r".*, (?P\d+\.{0,1}\d*)% packet loss.*" for _ in range(self.retries): + self.logger.info(com.command) try: - self.logger.info(com.command) loss = com.get_str(pattern, 'loss', False) - com.print_output() - if float(loss) == 0: - return True except Exception as concrete_error: self.logger.error(concrete_error) + if float(loss) == 0: + return True + com.print_output() return False def call_remote_server(self, cmd, act='start', ib_server_ip=''): @@ -119,14 +121,15 @@ form = dict() form['cmd'] = cmd form['ib_server_ip'] = ib_server_ip - url = 'http://%s/api/%s' % (self.server_ip, act) + url = 'http://%s:%s/api/%s' % (self.server_ip, self.server_port, act) data = urlencode(form).encode('utf8') headers = { 'Content-type': 'application/x-www-form-urlencoded', 'Accept': 'text/plain' } + + request = Request(url, data=data, headers=headers) try: - request = Request(url, data=data, headers=headers) response = urlopen(request) except Exception as concrete_error: self.logger.error(str(concrete_error)) @@ -169,19 +172,20 @@ for _ in range(self.retries): try: bandwidth = com.get_str(pattern, 'bandwidth', False) - band_width = bandwidth.split() - if 'GB' in band_width[1]: - bandwidth = float(band_width[0]) * 8 * 1024 - else: - bandwidth = float(band_width[0]) * 8 - - target_bandwidth = self.target_bandwidth_percent * self.speed - self.logger.info("Current bandwidth is %.2fMb/s, target is %.2fMb/s" % - (bandwidth, target_bandwidth)) - if bandwidth > target_bandwidth: - return True except Exception as concrete_error: self.logger.error(concrete_error) + band_width = bandwidth.split() + if 'GB' in band_width[1]: + bandwidth = float(band_width[0]) * 8 * 1024 + else: + bandwidth = float(band_width[0]) * 8 + + target_bandwidth = self.target_bandwidth_percent * self.speed + self.logger.info( + "Current bandwidth is %.2fMb/s, target is %.2fMb/s" % + (bandwidth, target_bandwidth)) + if bandwidth > target_bandwidth: + return True return False def create_testfile(self): @@ -212,7 +216,7 @@ form['filename'] = filename form['filetext'] = filetext - url = 'http://%s/api/file/upload' % self.server_ip + url = 'http://%s:%s/api/file/upload' % (self.server_ip, self.server_port) data = urlencode(form).encode('utf8') headers = { 'Content-type': 'application/x-www-form-urlencoded', @@ -220,8 +224,8 @@ } time_start = time.time() + request = Request(url, data=data, headers=headers) try: - request = Request(url, data=data, headers=headers) response = urlopen(request) except Exception as concrete_error: self.logger.error(concrete_error) @@ -242,7 +246,7 @@ :return: """ filename = os.path.basename(self.testfile) - url = "http://%s/files/%s" % (self.server_ip, filename) + url = "http://%s:%s/files/%s" % (self.server_ip, self.server_port, filename) time_start = time.time() try: @@ -257,7 +261,8 @@ self.logger.info(str(response.headers), terminal_print=False) filetext = response.read() try: - with open(self.testfile, 'wb') as file_info: + with os.fdopen(os.open(self.testfile, FILE_FLAGS, FILE_MODES), + "wb") as file_info: file_info.write(filetext) except Exception as concrete_error: self.logger.error(concrete_error) diff -Naur rpm/tests/system/system.py oech/tests/system/system.py --- rpm/tests/system/system.py 2022-08-03 18:13:04.395340460 +0800 +++ oech/tests/system/system.py 2022-08-03 18:06:55.651340460 +0800 @@ -69,17 +69,16 @@ self.logger.info("Checking installed cert package...") for cert_package in ["oec-hardware"]: rpm_verify = Command( - "rpm -V --nomtime --nomode --nocontexts %s &>> %s" % - (cert_package, self.logger.logfile)) - rpm_verify.echo(ignore_errors=True) - output = rpm_verify.read().split('\n') - for file in output: - if "test_config.yaml" in file: - continue - else: - self.logger.error( - "Files in %s have been tampered." % cert_package) - return False + "rpm -V --nomtime --nomode --nocontexts %s" % cert_package) + output = rpm_verify.read() + if output: + for file in output.split('\n'): + if "test_config.yaml" in file: + continue + else: + self.logger.error("Files in %s have beem tampered. \nThe tampered files are as follows:\n %s" % + (cert_package, output)) + return False return True def check_kernel(self): @@ -173,85 +172,6 @@ proc_modules.close() return modules - def abi_check(self, module): - """ - Check abi whitelist - :param module: - :return: - """ - whitelist_path = [("/lib/modules/kabi-current/kabi_whitelist_" + self.sysinfo.arch), - ("/lib/modules/kabi/kabi_whitelist_" + self.sysinfo.arch), - ("/usr/src/kernels/%s/kabi_whitelist" % - self.sysinfo.kernel) - ] - whitelist = "" - for whitelist in whitelist_path: - if os.path.exists(whitelist): - break - - if not os.path.exists(whitelist): - self.logger.error( - "Unable not find whitelist file in any of the following locations:") - self.logger.error("\n".join(whitelist_path)) - return False - - whitelist_symbols = self.read_abi_whitelist(whitelist) - if not whitelist_symbols: - return False - module_symbols = self.read_module(module) - if not module_symbols: - return False - extra_symbols = list() - for symbol in module_symbols: - if symbol not in whitelist_symbols: - extra_symbols.append(symbol) - - black_symbols = list() - if extra_symbols: - greylist = "/usr/share/doc/kmod-%s/greylist.txt" % module - if os.path.exists(greylist): - self.logger.info("checking greylist for %s" % module) - greylist_symbols = self.read_abi_whitelist(greylist) - for symbol in extra_symbols: - if symbol not in greylist_symbols: - black_symbols.append(symbol) - else: - black_symbols = extra_symbols - - if black_symbols: - self.logger.error("The following symbols are used by %s are not on the ABI \ - whitelist." % module) - for symbol in black_symbols: - self.logger.error(symbol) - return False - return True - - def read_abi_whitelist(self, whitelist): - """ - Read abi whitelist - :param whitelist: - :return: - """ - symbols = list() - if not os.path.isfile(whitelist): - self.logger.error("Failed to read the whitelist file") - return None - - whitelistfile = open(whitelist, "r") - while True: - line = whitelistfile.readline() - if line == "": - break - if line == "\n": - continue - line.split() - if line[0] == '[': - continue - symbol = line.strip() - symbols.append(symbol) - - return symbols - def read_module(self, module): """ Read module