Running t/nvmept.py requires that the test runner provide an NVMe
character device test target. t/nvmept.py will be skipped unless an NVMe
character device test target is provided.
Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
_not_windows = False
_unittests = False
_cpucount4 = False
_not_windows = False
_unittests = False
_cpucount4 = False
- def __init__(self, fio_root):
+ def __init__(self, fio_root, args):
Requirements._not_macos = platform.system() != "Darwin"
Requirements._not_windows = platform.system() != "Windows"
Requirements._linux = platform.system() == "Linux"
Requirements._not_macos = platform.system() != "Darwin"
Requirements._not_windows = platform.system() != "Windows"
Requirements._linux = platform.system() == "Linux"
Requirements._unittests = os.path.exists(unittest_path)
Requirements._cpucount4 = multiprocessing.cpu_count() >= 4
Requirements._unittests = os.path.exists(unittest_path)
Requirements._cpucount4 = multiprocessing.cpu_count() >= 4
-
- req_list = [Requirements.linux,
- Requirements.libaio,
- Requirements.io_uring,
- Requirements.zbd,
- Requirements.root,
- Requirements.zoned_nullb,
- Requirements.not_macos,
- Requirements.not_windows,
- Requirements.unittests,
- Requirements.cpucount4]
+ Requirements._nvmecdev = args.nvmecdev
+
+ req_list = [
+ Requirements.linux,
+ Requirements.libaio,
+ Requirements.io_uring,
+ Requirements.zbd,
+ Requirements.root,
+ Requirements.zoned_nullb,
+ Requirements.not_macos,
+ Requirements.not_windows,
+ Requirements.unittests,
+ Requirements.cpucount4,
+ Requirements.nvmecdev,
+ ]
for req in req_list:
value, desc = req()
logging.debug("Requirements: Requirement '%s' met? %s", desc, value)
for req in req_list:
value, desc = req()
logging.debug("Requirements: Requirement '%s' met? %s", desc, value)
"""Do we have at least 4 CPUs?"""
return Requirements._cpucount4, "4+ CPUs required"
"""Do we have at least 4 CPUs?"""
return Requirements._cpucount4, "4+ CPUs required"
+ @classmethod
+ def nvmecdev(cls):
+ """Do we have an NVMe character device to test?"""
+ return Requirements._nvmecdev, "NVMe character device test target required"
+
SUCCESS_DEFAULT = {
'zero_return': True,
SUCCESS_DEFAULT = {
'zero_return': True,
'success': SUCCESS_DEFAULT,
'requirements': [],
},
'success': SUCCESS_DEFAULT,
'requirements': [],
},
+ {
+ 'test_id': 1014,
+ 'test_class': FioExeTest,
+ 'exe': 't/nvmept.py',
+ 'parameters': ['-f', '{fio_path}', '--dut', '{nvmecdev}'],
+ 'success': SUCCESS_DEFAULT,
+ 'requirements': [Requirements.linux, Requirements.nvmecdev],
+ },
help='skip requirements checking')
parser.add_argument('-p', '--pass-through', action='append',
help='pass-through an argument to an executable test')
help='skip requirements checking')
parser.add_argument('-p', '--pass-through', action='append',
help='pass-through an argument to an executable test')
+ parser.add_argument('--nvmecdev', action='store', default=None,
+ help='NVMe character device for **DESTRUCTIVE** testing (e.g., /dev/ng0n1)')
args = parser.parse_args()
return args
args = parser.parse_args()
return args
print("Artifact directory is %s" % artifact_root)
if not args.skip_req:
print("Artifact directory is %s" % artifact_root)
if not args.skip_req:
- req = Requirements(fio_root)
+ req = Requirements(fio_root, args)
elif issubclass(config['test_class'], FioExeTest):
exe_path = os.path.join(fio_root, config['exe'])
if config['parameters']:
elif issubclass(config['test_class'], FioExeTest):
exe_path = os.path.join(fio_root, config['exe'])
if config['parameters']:
- parameters = [p.format(fio_path=fio_path) for p in config['parameters']]
+ parameters = [p.format(fio_path=fio_path, nvmecdev=args.nvmecdev)
+ for p in config['parameters']]
else:
parameters = []
if Path(exe_path).suffix == '.py' and platform.system() == "Windows":
else:
parameters = []
if Path(exe_path).suffix == '.py' and platform.system() == "Windows":