blob: 7472eea628e4a0864e288d43e41cdeb45a02e0e3 [file] [log] [blame]
From c3df3532a507e6d7c66339dee6eb022feab68f59 Mon Sep 17 00:00:00 2001
From: Vincent Fu <vincent.fu@samsung.com>
Date: Thu, 25 Aug 2022 12:08:33 -0700
Subject: [PATCH] test: add basic test for io_uring ioengine
We should have a quick smoke test for the io_uring ioengine to
automatically detect breakage.
Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
---
t/jobs/t0018.fio | 9 +++++++++
t/run-fio-tests.py | 22 ++++++++++++++++++++++
2 files changed, 31 insertions(+)
create mode 100644 t/jobs/t0018.fio
diff --git a/t/jobs/t0018.fio b/t/jobs/t0018.fio
new file mode 100644
index 00000000..e2298b1f
--- /dev/null
+++ b/t/jobs/t0018.fio
@@ -0,0 +1,9 @@
+# Expected result: job completes without error
+# Buggy result: job fails
+
+[test]
+ioengine=io_uring
+filesize=256K
+time_based
+runtime=3s
+rw=randrw
diff --git a/t/run-fio-tests.py b/t/run-fio-tests.py
index 504b7cdb..1e5e9f24 100755
--- a/t/run-fio-tests.py
+++ b/t/run-fio-tests.py
@@ -582,6 +582,7 @@ class Requirements(object):
_linux = False
_libaio = False
+ _io_uring = False
_zbd = False
_root = False
_zoned_nullb = False
@@ -605,6 +606,12 @@ class Requirements(object):
Requirements._zbd = "CONFIG_HAS_BLKZONED" in contents
Requirements._libaio = "CONFIG_LIBAIO" in contents
+ contents, success = FioJobTest.get_file("/proc/kallsyms")
+ if not success:
+ print("Unable to open '/proc/kallsyms' to probe for io_uring support")
+ else:
+ Requirements._io_uring = "io_uring_setup" in contents
+
Requirements._root = (os.geteuid() == 0)
if Requirements._zbd and Requirements._root:
try:
@@ -627,6 +634,7 @@ class Requirements(object):
req_list = [Requirements.linux,
Requirements.libaio,
+ Requirements.io_uring,
Requirements.zbd,
Requirements.root,
Requirements.zoned_nullb,
@@ -648,6 +656,11 @@ class Requirements(object):
"""Is libaio available?"""
return Requirements._libaio, "libaio required"
+ @classmethod
+ def io_uring(cls):
+ """Is io_uring available?"""
+ return Requirements._io_uring, "io_uring required"
+
@classmethod
def zbd(cls):
"""Is ZBD support available?"""
@@ -867,6 +880,15 @@ TEST_LIST = [
'output_format': 'json',
'requirements': [Requirements.not_windows],
},
+ {
+ 'test_id': 18,
+ 'test_class': FioJobTest,
+ 'job': 't0018.fio',
+ 'success': SUCCESS_DEFAULT,
+ 'pre_job': None,
+ 'pre_success': None,
+ 'requirements': [Requirements.linux, Requirements.io_uring],
+ },
{
'test_id': 1000,
'test_class': FioExeTest,