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 <shinichiro.kawasaki@xxxxxxx> --- 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..ca71b775 --- /dev/null +++ b/t/jobs/t0034.fio @@ -0,0 +1,27 @@ +[global] +rw=read +filename=t0034file +size=8k +time_based +runtime=100ms +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=20 +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 8bc343cd..525f78ff 100755 --- a/t/run-fio-tests.py +++ b/t/run-fio-tests.py @@ -554,29 +554,50 @@ 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 = { + 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(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', } - for logfile in 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): - self.passed = False - self.failure_reason = "wrong log file format: " + logfile - return +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 @@ -913,6 +934,16 @@ TEST_LIST = [ 'pre_success': SUCCESS_DEFAULT, 'requirements': [], }, + { + 'test_id': 34, + 'test_class': FioJobFileTest_t0034, + 'job': 't0034.fio', + 'success': SUCCESS_DEFAULT, + 'pre_job': None, + 'pre_success': None, + 'pre_success': SUCCESS_DEFAULT, + 'requirements': [], + }, { 'test_id': 1000, 'test_class': FioExeTest, -- 2.45.2