From b92edc57e38b44d63a6f3a383c77cd22d1daa05e Mon Sep 17 00:00:00 2001 From: eugene-yujinwu <117058060+eugene-yujinwu@users.noreply.github.com> Date: Thu, 29 Aug 2024 16:19:13 +0800 Subject: [PATCH] Enable support of USB3 Gen2x1 devices for detection tests (Bugfix) (#1438) USB3 Gen2x1 devices use a different kernel string when advertising themselves, so this PR takes this into account. --- .../checkbox_support/scripts/run_watcher.py | 4 +++- .../tests/test_run_watcher.py | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/checkbox-support/checkbox_support/scripts/run_watcher.py b/checkbox-support/checkbox_support/scripts/run_watcher.py index e9ead9bf81..7de27780b3 100644 --- a/checkbox-support/checkbox_support/scripts/run_watcher.py +++ b/checkbox-support/checkbox_support/scripts/run_watcher.py @@ -196,6 +196,7 @@ def _validate_insertion(self): elif self.storage_type == "usb3" and self.device in [ "super_speed_usb", "super_speed_gen1_usb", + "super_speed_plus_gen2x1_usb", ]: logger.info("USB3 insertion test passed.") else: @@ -226,6 +227,7 @@ def _parse_journal_line(self, line_str): "high_speed_usb": "new high-speed USB device", "super_speed_usb": "new SuperSpeed USB device", "super_speed_gen1_usb": "new SuperSpeed Gen 1 USB device", + "super_speed_plus_gen2x1_usb": "new SuperSpeed Plus Gen 2x1 USB device", } driver_log_dict = { @@ -247,7 +249,7 @@ def _parse_journal_line(self, line_str): ).group(1) # Look for insertion action - if "USB Mass Storage device detected" in line_str: + if "USB Mass Storage device detected" or "uas" in line_str: self.action = "insertion" # Look for removal action diff --git a/checkbox-support/checkbox_support/tests/test_run_watcher.py b/checkbox-support/checkbox_support/tests/test_run_watcher.py index 64d8a65b32..44b865593b 100644 --- a/checkbox-support/checkbox_support/tests/test_run_watcher.py +++ b/checkbox-support/checkbox_support/tests/test_run_watcher.py @@ -241,6 +241,17 @@ def test_usb3_storage_validate_insertion(self): USBStorage._validate_insertion(mock_usb_storage) self.assertEqual(cm.exception.code, None) + def test_usb3_gen2x1_storage_validate_insertion(self): + mock_usb_storage = MagicMock() + mock_usb_storage.storage_type = "usb3" + mock_usb_storage.device = "super_speed_plus_gen2x1_usb" + mock_usb_storage.mounted_partition = "mounted_partition" + mock_usb_storage.action = "insertion" + mock_usb_storage.driver = "xhci_hcd" + with self.assertRaises(SystemExit) as cm: + USBStorage._validate_insertion(mock_usb_storage) + self.assertEqual(cm.exception.code, None) + def test_usb_storage_validate_insertion_wrong_usb_type(self): mock_usb_storage = MagicMock() mock_usb_storage.storage_type = "usb2" @@ -285,6 +296,12 @@ def test_usb_storage_parse_journal_line(self): USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual(mock_usb_storage.device, "super_speed_gen1_usb") + line_str = "new SuperSpeed Plus Gen 2x1 USB device" + USBStorage._parse_journal_line(mock_usb_storage, line_str) + self.assertEqual( + mock_usb_storage.device, "super_speed_plus_gen2x1_usb" + ) + line_str = "new high-speed USB device number 1 using ehci_hcd" USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual(mock_usb_storage.driver, "ehci_hcd") @@ -297,6 +314,10 @@ def test_usb_storage_parse_journal_line(self): USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual(mock_usb_storage.action, "insertion") + line_str = "kernel: scsi host0: uas" + USBStorage._parse_journal_line(mock_usb_storage, line_str) + self.assertEqual(mock_usb_storage.action, "insertion") + line_str = "USB disconnect, device" USBStorage._parse_journal_line(mock_usb_storage, line_str) self.assertEqual(mock_usb_storage.action, "removal")