From d746cd9df89d84116699edf3bc03cd249541315b Mon Sep 17 00:00:00 2001 From: Dennis Maisenbacher Date: Fri, 14 Feb 2025 08:11:41 +0000 Subject: [PATCH] tests: fix hex to base-10 conversion in id-ctrl output When doing bit checks on id-ctrl output fields we need to convert the field numbers to a base-10 integer. However, the json output mostly returns already base-10 integers, so we now first check for the '0x' prefix before falsely converting the desired value. Signed-off-by: Dennis Maisenbacher --- tests/nvme_compare_test.py | 3 ++- tests/nvme_smart_log_test.py | 4 ++-- tests/nvme_test.py | 16 +++++++++++++--- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/tests/nvme_compare_test.py b/tests/nvme_compare_test.py index e6b2b75ab9..f704d6c2a7 100644 --- a/tests/nvme_compare_test.py +++ b/tests/nvme_compare_test.py @@ -30,6 +30,7 @@ """ +from nvme_test import to_decimal from nvme_test_io import TestNVMeIO @@ -52,7 +53,7 @@ def compare_cmd_supported(self): - Returns: - True if 'compare' is supported, otherwise False """ - return int(self.get_id_ctrl_field_value("oncs"), 16) & (1 << 0) + return to_decimal(self.get_id_ctrl_field_value("oncs")) & (1 << 0) def setUp(self): """ Pre Section for TestNVMeCompareCmd """ diff --git a/tests/nvme_smart_log_test.py b/tests/nvme_smart_log_test.py index ebc076c10d..2bc81d8494 100644 --- a/tests/nvme_smart_log_test.py +++ b/tests/nvme_smart_log_test.py @@ -27,7 +27,7 @@ """ -from nvme_test import TestNVMe +from nvme_test import TestNVMe, to_decimal class TestNVMeSmartLogCmd(TestNVMe): @@ -84,6 +84,6 @@ def get_smart_log_all_ns(self): def test_smart_log(self): """ Testcase main """ self.assertEqual(self.get_smart_log_ctrl(), 0) - smlp = int(self.get_id_ctrl_field_value("lpa"), 16) + smlp = to_decimal(self.get_id_ctrl_field_value("lpa")) if smlp & 0x1: self.assertEqual(self.get_smart_log_all_ns(), 0) diff --git a/tests/nvme_test.py b/tests/nvme_test.py index 67d926fad2..80750f5772 100644 --- a/tests/nvme_test.py +++ b/tests/nvme_test.py @@ -36,6 +36,16 @@ from nvme_test_logger import TestNVMeLogger +def to_decimal(value): + """ Wrapper for converting numbers to base 10 decimal + - Args: + - value: A number in any common base + - Returns: + - Decimal integer + """ + return int(str(value), 0) + + class TestNVMe(unittest.TestCase): """ @@ -246,7 +256,7 @@ def get_lba_status_supported(self): - Returns: - True if 'Get LBA Status' command is supported, otherwise False """ - return int(self.get_id_ctrl_field_value("oacs"), 16) & (1 << 9) + return to_decimal(self.get_id_ctrl_field_value("oacs")) & (1 << 9) def get_lba_format_size(self): """ Wrapper for extracting lba format size of the given flbas @@ -284,7 +294,7 @@ def get_ncap(self): - Returns: - Total NVM capacity. """ - return int(self.get_id_ctrl_field_value("tnvmcap")) + return to_decimal(self.get_id_ctrl_field_value("tnvmcap")) def get_id_ctrl_field_value(self, field): """ Wrapper for extracting id-ctrl field values @@ -313,7 +323,7 @@ def get_ocfs(self): - Returns: - Optional Copy Formats Supported """ - return int(self.get_id_ctrl_field_value("ocfs"), 16) + return to_decimal(self.get_id_ctrl_field_value("ocfs")) def delete_all_ns(self): """ Wrapper for deleting all the namespaces.