From 20d0ba84d3b7e7abd8a3318175b46f5e5363547d Mon Sep 17 00:00:00 2001 From: Shin'ichiro Kawasaki Date: Thu, 29 Aug 2024 17:58:26 +0900 Subject: [PATCH] t/jobs/t0034: add test for the log_issue_time option Add a test to check the newly added option 'log_issue_time'. Generate log files using the option and check that lines in the log files have the format described in the "Log File Format" section in HOWTO.rst. This test case has the logic same as t0033 except the log file names and matching patterns. Factor out the logic to the new class FioJobFileTest_LogFileFormat. Signed-off-by: Shin'ichiro Kawasaki Link: https://lore.kernel.org/r/20240829085826.999859-10-shinichiro.kawasaki@wdc.com Signed-off-by: Vincent Fu --- t/jobs/t0034.fio | 27 ++++++++++++++++++++++++ t/run-fio-tests.py | 51 +++++++++++++++++++++++++++++++++++++--------- 2 files changed, 68 insertions(+), 10 deletions(-) create mode 100644 t/jobs/t0034.fio diff --git a/t/jobs/t0034.fio b/t/jobs/t0034.fio new file mode 100644 index 00000000..2b6c4b2d --- /dev/null +++ b/t/jobs/t0034.fio @@ -0,0 +1,27 @@ +[global] +rw=read +filename=t0034file +size=8k +time_based +runtime=2s +ioengine=libaio +iodepth=1 + +[job1] +write_lat_log=log +log_offset=1 +log_issue_time=1 + +[job2] +write_lat_log=log +log_offset=1 +log_issue_time=1 +log_avg_msec=100 +log_window_value=both + +[job3] +write_lat_log=log +write_bw_log=log +write_iops_log=log +log_offset=1 +log_issue_time=1 diff --git a/t/run-fio-tests.py b/t/run-fio-tests.py index dfd5eac9..47482144 100755 --- a/t/run-fio-tests.py +++ b/t/run-fio-tests.py @@ -554,30 +554,51 @@ class FioJobFileTest_t0029(FioJobFileTest): if self.json_data['jobs'][1]['read']['io_kbytes'] != 8: self.passed = False -class FioJobFileTest_t0033(FioJobFileTest): +class FioJobFileTest_LogFileFormat(FioJobFileTest): """Test log file format""" + def setup(self, *args, **kws): + super().setup(*args, **kws) + self.patterns = {} + def check_result(self): super().check_result() if not self.passed: return - patterns = { - 'log_bw.1.log': '\\d+, \\d+, \\d+, \\d+, 0x[\\da-f]+\\n', - 'log_clat.2.log': '\\d+, \\d+, \\d+, \\d+, 0, \\d+\\n', - 'log_iops.3.log': '\\d+, \\d+, \\d+, \\d+, \\d+, 0x[\\da-f]+\\n', - 'log_iops.4.log': '\\d+, \\d+, \\d+, \\d+, 0, 0, \\d+\\n', - } - - for logfile in patterns.keys(): + for logfile in self.patterns.keys(): file_path = os.path.join(self.paths['test_dir'], logfile) with open(file_path, "r") as f: line = f.readline() - if not re.match(patterns[logfile], line): + if not re.match(self.patterns[logfile], line): self.passed = False self.failure_reason = "wrong log file format: " + logfile return +class FioJobFileTest_t0033(FioJobFileTest_LogFileFormat): + """Test log file format""" + def setup(self, *args, **kws): + super().setup(*args, **kws) + self.patterns = { + 'log_bw.1.log': '\\d+, \\d+, \\d+, \\d+, 0x[\\da-f]+\\n', + 'log_clat.2.log': '\\d+, \\d+, \\d+, \\d+, 0, \\d+\\n', + 'log_iops.3.log': '\\d+, \\d+, \\d+, \\d+, \\d+, 0x[\\da-f]+\\n', + 'log_iops.4.log': '\\d+, \\d+, \\d+, \\d+, 0, 0, \\d+\\n', + } + +class FioJobFileTest_t0034(FioJobFileTest_LogFileFormat): + """Test log file format""" + def setup(self, *args, **kws): + super().setup(*args, **kws) + self.patterns = { + 'log_clat.1.log': '\\d+, \\d+, \\d+, \\d+, \\d+, \\d+, \\d+\\n', + 'log_slat.1.log': '\\d+, \\d+, \\d+, \\d+, \\d+, \\d+, \\d+\\n', + 'log_lat.1.log': '\\d+, \\d+, \\d+, \\d+, \\d+, \\d+, 0\\n', + 'log_clat.2.log': '\\d+, \\d+, \\d+, \\d+, 0, 0, \\d+, 0\\n', + 'log_bw.3.log': '\\d+, \\d+, \\d+, \\d+, \\d+, \\d+, 0\\n', + 'log_iops.3.log': '\\d+, \\d+, \\d+, \\d+, \\d+, \\d+, 0\\n', + } + class FioJobFileTest_iops_rate(FioJobFileTest): """Test consists of fio test job t0011 Confirm that job0 iops == 1000 @@ -913,6 +934,16 @@ TEST_LIST = [ 'pre_success': SUCCESS_DEFAULT, 'requirements': [Requirements.linux, Requirements.libaio], }, + { + 'test_id': 34, + 'test_class': FioJobFileTest_t0034, + 'job': 't0034.fio', + 'success': SUCCESS_DEFAULT, + 'pre_job': None, + 'pre_success': None, + 'pre_success': SUCCESS_DEFAULT, + 'requirements': [Requirements.linux, Requirements.libaio], + }, { 'test_id': 1000, 'test_class': FioExeTest, -- 2.25.1