Re: [PATCH 8/9] t/jobs/t0033: add test for the log file format

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8/27/24 03:08, Shin'ichiro Kawasaki wrote:
Add a test to check the log file format which is described in the "Log
File Format" section in HOWTO.rst. Generate log files using combination
of options relevant to log files, and check that lines in log files have
the format expected. This test helps to confirm that the changes in the
log file related functions do not cause regressions.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx>
---
  t/jobs/t0033.fio   | 28 ++++++++++++++++++++++++++++
  t/run-fio-tests.py | 35 +++++++++++++++++++++++++++++++++++
  2 files changed, 63 insertions(+)
  create mode 100644 t/jobs/t0033.fio

diff --git a/t/jobs/t0033.fio b/t/jobs/t0033.fio
new file mode 100644
index 00000000..038e388f
--- /dev/null
+++ b/t/jobs/t0033.fio
@@ -0,0 +1,28 @@
+[global]
+rw=read
+filename=t0033file
+size=8k
+time_based
+runtime=100ms
+ioengine=libaio
+iodepth=1
+
+[job1]
+write_bw_log=log
+log_prio=1
+
+[job2]
+write_lat_log=log
+log_avg_msec=20
+log_window_value=both
+
+[job3]
+write_iops_log=log
+log_offset=1
+log_prio=1
+
+[job4]
+write_iops_log=log
+log_avg_msec=20
+log_window_value=both
+log_offset=1
diff --git a/t/run-fio-tests.py b/t/run-fio-tests.py
index 22580613..8bc343cd 100755
--- a/t/run-fio-tests.py
+++ b/t/run-fio-tests.py
@@ -47,6 +47,7 @@ import time
  import shutil
  import logging
  import argparse
+import re
  from pathlib import Path
  from statsmodels.sandbox.stats.runs import runstest_1samp
  from fiotestlib import FioExeTest, FioJobFileTest, run_fio_tests
@@ -553,6 +554,30 @@ class FioJobFileTest_t0029(FioJobFileTest):
          if self.json_data['jobs'][1]['read']['io_kbytes'] != 8:
              self.passed = False
+class FioJobFileTest_t0033(FioJobFileTest):
+    """Test log file format"""
+    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():
+            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_iops_rate(FioJobFileTest):
      """Test consists of fio test job t0011
      Confirm that job0 iops == 1000
@@ -878,6 +903,16 @@ TEST_LIST = [
          'pre_success':      SUCCESS_DEFAULT,
          'requirements':     [Requirements.linux, Requirements.libaio],
      },
+    {
+        'test_id':          33,
+        'test_class':       FioJobFileTest_t0033,
+        'job':              't0033.fio',
+        'success':          SUCCESS_DEFAULT,
+        'pre_job':          None,
+        'pre_success':      None,
+        'pre_success':      SUCCESS_DEFAULT,
+        'requirements':     [],

Add [Requirements.linux, Requirements.libaio] here so that the script does not try to run this test on platforms where it is not supported.

There were also some test failures where the job was able to run:

https://github.com/fiotestbot/fio/actions/runs/10573766613

Consider increasing the job duration and making log_avg_msec larger.




[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux