The following changes since commit 7d6c99e917f7d68ffebbd1750802f7aed9c3d461: docs: fix documentation for rate_cycle (2024-03-18 14:51:10 -0400) are available in the Git repository at: git://git.kernel.dk/fio.git master for you to fetch changes up to 140c58beeee44a10358a817c7699b66c5c7290f9: test: add the test for regrow logs with asynchronous I/O replay (2024-03-21 05:57:54 -0600) ---------------------------------------------------------------- Shin'ichiro Kawasaki (2): iolog: regrow logs in iolog_delay() test: add the test for regrow logs with asynchronous I/O replay Vincent Fu (2): t/fiotestlib: pass command-line options to FioJobFileTest t/jobs/t0030: add test for --bandwidth-log option iolog.c | 2 ++ t/fiotestlib.py | 8 +++++--- t/jobs/t0030.fio | 10 ++++++++++ t/jobs/t0031-pre.fio | 8 ++++++++ t/jobs/t0031.fio | 7 +++++++ t/run-fio-tests.py | 19 +++++++++++++++++++ 6 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 t/jobs/t0030.fio create mode 100644 t/jobs/t0031-pre.fio create mode 100644 t/jobs/t0031.fio --- Diff of recent changes: diff --git a/iolog.c b/iolog.c index f52a9a80..251e9d7f 100644 --- a/iolog.c +++ b/iolog.c @@ -102,6 +102,8 @@ static void iolog_delay(struct thread_data *td, unsigned long delay) ret = io_u_queued_complete(td, 0); if (ret < 0) td_verror(td, -ret, "io_u_queued_complete"); + if (td->flags & TD_F_REGROW_LOGS) + regrow_logs(td); if (utime_since_now(&ts) > delay) break; } diff --git a/t/fiotestlib.py b/t/fiotestlib.py index a96338a3..466e482d 100755 --- a/t/fiotestlib.py +++ b/t/fiotestlib.py @@ -175,7 +175,7 @@ class FioJobFileTest(FioExeTest): super().__init__(fio_path, success, testnum, artifact_root) - def setup(self, parameters=None): + def setup(self, parameters): """Setup instance variables for fio job test.""" self.filenames['fio_output'] = f"{os.path.basename(self.fio_job)}.output" @@ -185,6 +185,8 @@ class FioJobFileTest(FioExeTest): f"--output={self.filenames['fio_output']}", self.fio_job, ] + if parameters: + fio_args += parameters super().setup(fio_args) @@ -206,7 +208,7 @@ class FioJobFileTest(FioExeTest): self.testnum, self.paths['artifacts'], output_format=self.output_format) - precon.setup() + precon.setup(None) precon.run() precon.check_result() self.precon_failed = not precon.passed @@ -412,7 +414,7 @@ def run_fio_tests(test_list, test_env, args): fio_pre_success=fio_pre_success, output_format=output_format) desc = config['job'] - parameters = [] + parameters = config['parameters'] if 'parameters' in config else None elif issubclass(config['test_class'], FioJobCmdTest): if not 'success' in config: config['success'] = SUCCESS_DEFAULT diff --git a/t/jobs/t0030.fio b/t/jobs/t0030.fio new file mode 100644 index 00000000..8bbc810e --- /dev/null +++ b/t/jobs/t0030.fio @@ -0,0 +1,10 @@ +# run with --bandwidth-log +# broken behavior: seg fault +# successful behavior: test runs to completion with 0 as the exit code + +[test] +ioengine=null +filesize=1T +rw=read +time_based +runtime=2s diff --git a/t/jobs/t0031-pre.fio b/t/jobs/t0031-pre.fio new file mode 100644 index 00000000..ce4ee3b6 --- /dev/null +++ b/t/jobs/t0031-pre.fio @@ -0,0 +1,8 @@ +[job] +rw=write +ioengine=libaio +size=1mb +time_based=1 +runtime=1 +filename=t0030file +write_iolog=iolog diff --git a/t/jobs/t0031.fio b/t/jobs/t0031.fio new file mode 100644 index 00000000..ae8f7442 --- /dev/null +++ b/t/jobs/t0031.fio @@ -0,0 +1,7 @@ +[job] +rw=read +ioengine=libaio +iodepth=128 +filename=t0030file +read_iolog=iolog +write_lat_log=lat_log diff --git a/t/run-fio-tests.py b/t/run-fio-tests.py index 08134e50..1b884d87 100755 --- a/t/run-fio-tests.py +++ b/t/run-fio-tests.py @@ -859,6 +859,25 @@ TEST_LIST = [ 'output_format': 'json', 'requirements': [], }, + { + 'test_id': 30, + 'test_class': FioJobFileTest, + 'job': 't0030.fio', + 'success': SUCCESS_DEFAULT, + 'pre_job': None, + 'pre_success': None, + 'parameters': ['--bandwidth-log'], + 'requirements': [], + }, + { + 'test_id': 31, + 'test_class': FioJobFileTest, + 'job': 't0031.fio', + 'success': SUCCESS_DEFAULT, + 'pre_job': 't0031-pre.fio', + 'pre_success': SUCCESS_DEFAULT, + 'requirements': [], + }, { 'test_id': 1000, 'test_class': FioExeTest,