Merge ~jocave/checkbox-support:add-watchdog-category-udev into checkbox-support:master

Proposed by Jonathan Cave
Status: Merged
Approved by: Jonathan Cave
Approved revision: c8cb28d56cd3ab90fa77f38467d064f354f883fc
Merged at revision: 7e8db9af9d1ef49a343347d25747bc0be1464b86
Proposed branch: ~jocave/checkbox-support:add-watchdog-category-udev
Merge into: checkbox-support:master
Diff against target: 112 lines (+16/-7)
2 files modified
checkbox_support/parsers/tests/test_udevadm.py (+11/-7)
checkbox_support/parsers/udevadm.py (+5/-0)
Reviewer Review Type Date Requested Status
Sylvain Pineau (community) Approve
Review via email: mp+395442@code.launchpad.net

Description of the change

Update udev parsing to add detection of watchdog devices. These are of more interest for IoT devices so putting time in to device resource reporting seems worth while.

Further MRs will be provided to update p-p-r device resource job and a p-p-c detect job.

To post a comment you must log in.
Revision history for this message
Sylvain Pineau (sylvain-pineau) wrote :

I'm wondering if we should discard virtual watchdogs like:

P: /devices/virtual/watchdog/watchdog9

Spotted while reading your comment about the 32 watchdogs declared in the LENOVO_E431.txt test data file.

review: Needs Information
Revision history for this message
Jonathan Cave (jocave) wrote :

Modifying to ignore virtual devices

Revision history for this message
Sylvain Pineau (sylvain-pineau) wrote :

Thanks for the last fix, LGTM

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/checkbox_support/parsers/tests/test_udevadm.py b/checkbox_support/parsers/tests/test_udevadm.py
index ace031a..d611727 100644
--- a/checkbox_support/parsers/tests/test_udevadm.py
+++ b/checkbox_support/parsers/tests/test_udevadm.py
@@ -67,6 +67,7 @@ class UdevadmDataMixIn(object):
67 except (IOError, OSError):67 except (IOError, OSError):
68 return None68 return None
6969
70
70class TestUdevadmParser(TestCase, UdevadmDataMixIn):71class TestUdevadmParser(TestCase, UdevadmDataMixIn):
7172
72 def getParser(self, string):73 def getParser(self, string):
@@ -364,7 +365,7 @@ E: UDEV_LOG=3
364365
365 def test_TOSHIBA_NVME(self):366 def test_TOSHIBA_NVME(self):
366 devices = self.parse("TOSHIBA_NVME")367 devices = self.parse("TOSHIBA_NVME")
367 self.assertEqual(len(devices), 132)368 self.assertEqual(len(devices), 133)
368 self.assertEqual(self.count(devices, "VIDEO"), 2)369 self.assertEqual(self.count(devices, "VIDEO"), 2)
369 self.assertEqual(self.count(devices, "AUDIO"), 2)370 self.assertEqual(self.count(devices, "AUDIO"), 2)
370 self.assertEqual(self.count(devices, "KEYBOARD"), 1)371 self.assertEqual(self.count(devices, "KEYBOARD"), 1)
@@ -529,7 +530,7 @@ E: UDEV_LOG=3
529 self.assertEqual(self.count(devices, "AUDIO"), 4)530 self.assertEqual(self.count(devices, "AUDIO"), 4)
530 self.assertEqual(self.count(devices, "KEYBOARD"), 1)531 self.assertEqual(self.count(devices, "KEYBOARD"), 1)
531 self.assertEqual(self.count(devices, "TOUCHPAD"), 1)532 self.assertEqual(self.count(devices, "TOUCHPAD"), 1)
532 self.assertEqual(self.count(devices, "CARDREADER"), 1) # rtsx533 self.assertEqual(self.count(devices, "CARDREADER"), 1) # rtsx
533 self.assertEqual(self.count(devices, "CDROM"), 1)534 self.assertEqual(self.count(devices, "CDROM"), 1)
534 self.assertEqual(self.count(devices, "FIREWIRE"), 0)535 self.assertEqual(self.count(devices, "FIREWIRE"), 0)
535 self.assertEqual(self.count(devices, "MOUSE"), 1)536 self.assertEqual(self.count(devices, "MOUSE"), 1)
@@ -631,9 +632,10 @@ E: UDEV_LOG=3
631632
632 def test_EMMC_INTEL_NUC_SNAPPY(self):633 def test_EMMC_INTEL_NUC_SNAPPY(self):
633 devices = self.parse("INTEL_NUC_SNAPPY")634 devices = self.parse("INTEL_NUC_SNAPPY")
634 self.assertEqual(len(devices), 77)635 self.assertEqual(len(devices), 78)
635 # Check that the eMMC drive is reported as a DISK636 # Check that the eMMC drive is reported as a DISK
636 self.assertEqual(self.count(devices, "DISK"), 1)637 self.assertEqual(self.count(devices, "DISK"), 1)
638 self.assertEqual(self.count(devices, "WATCHDOG"), 1)
637639
638 def test_EMMC_NOT_AS_MAIN_DRIVE(self):640 def test_EMMC_NOT_AS_MAIN_DRIVE(self):
639 devices = self.parse("EMMC_AS_MAIN_DRIVE", with_lsblk=False)641 devices = self.parse("EMMC_AS_MAIN_DRIVE", with_lsblk=False)
@@ -865,13 +867,13 @@ E: UDEV_LOG=3
865 (None, "VIDEO", "pci", 0x10de, 0x1049),867 (None, "VIDEO", "pci", 0x10de, 0x1049),
866 ("RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller",868 ("RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller",
867 "NETWORK", "pci", 0x10EC, 0x8168),869 "NETWORK", "pci", 0x10EC, 0x8168),
868 ]870 ]
869 self.verify_devices(devices, expected_devices)871 self.verify_devices(devices, expected_devices)
870872
871 def test_CARA_T(self):873 def test_CARA_T(self):
872 # A Snappy system with CANBus874 # A Snappy system with CANBus
873 devices = self.parse("CARA_T")875 devices = self.parse("CARA_T")
874 self.assertEqual(len(devices), 78)876 self.assertEqual(len(devices), 79)
875 self.assertEqual(self.count(devices, "VIDEO"), 0)877 self.assertEqual(self.count(devices, "VIDEO"), 0)
876 self.assertEqual(self.count(devices, "AUDIO"), 0)878 self.assertEqual(self.count(devices, "AUDIO"), 0)
877 self.assertEqual(self.count(devices, "KEYBOARD"), 1)879 self.assertEqual(self.count(devices, "KEYBOARD"), 1)
@@ -885,11 +887,12 @@ E: UDEV_LOG=3
885 self.assertEqual(self.count(devices, "CAPTURE"), 0)887 self.assertEqual(self.count(devices, "CAPTURE"), 0)
886 self.assertEqual(self.count(devices, "DISK"), 1)888 self.assertEqual(self.count(devices, "DISK"), 1)
887 self.assertEqual(self.count(devices, "CANBUS"), 1)889 self.assertEqual(self.count(devices, "CANBUS"), 1)
890 self.assertEqual(self.count(devices, "WATCHDOG"), 1)
888891
889 def test_CARA_T_SOCKETCAN(self):892 def test_CARA_T_SOCKETCAN(self):
890 # A Snappy system with a SocketCAN device893 # A Snappy system with a SocketCAN device
891 devices = self.parse("CARA_T_SOCKETCAN")894 devices = self.parse("CARA_T_SOCKETCAN")
892 self.assertEqual(len(devices), 78)895 self.assertEqual(len(devices), 79)
893 self.assertEqual(self.count(devices, "VIDEO"), 0)896 self.assertEqual(self.count(devices, "VIDEO"), 0)
894 self.assertEqual(self.count(devices, "AUDIO"), 0)897 self.assertEqual(self.count(devices, "AUDIO"), 0)
895 self.assertEqual(self.count(devices, "KEYBOARD"), 1)898 self.assertEqual(self.count(devices, "KEYBOARD"), 1)
@@ -904,6 +907,7 @@ E: UDEV_LOG=3
904 self.assertEqual(self.count(devices, "DISK"), 1)907 self.assertEqual(self.count(devices, "DISK"), 1)
905 self.assertEqual(self.count(devices, "CANBUS"), 0)908 self.assertEqual(self.count(devices, "CANBUS"), 0)
906 self.assertEqual(self.count(devices, "SOCKETCAN"), 1)909 self.assertEqual(self.count(devices, "SOCKETCAN"), 1)
910 self.assertEqual(self.count(devices, "WATCHDOG"), 1)
907911
908 def test_IBM_s390x_DASD(self):912 def test_IBM_s390x_DASD(self):
909 devices = self.parse("IBM_s390x_DASD")913 devices = self.parse("IBM_s390x_DASD")
@@ -920,7 +924,7 @@ E: UDEV_LOG=3
920924
921 def test_VESTA_300(self):925 def test_VESTA_300(self):
922 devices = self.parse("VESTA_300")926 devices = self.parse("VESTA_300")
923 self.assertEqual(len(devices), 14)927 self.assertEqual(len(devices), 15)
924 self.assertEqual(self.count(devices, "NETWORK"), 1)928 self.assertEqual(self.count(devices, "NETWORK"), 1)
925 self.assertEqual(self.count(devices, "WIRELESS"), 1)929 self.assertEqual(self.count(devices, "WIRELESS"), 1)
926 self.assertEqual(self.count(devices, "CARDREADER"), 0)930 self.assertEqual(self.count(devices, "CARDREADER"), 0)
diff --git a/checkbox_support/parsers/udevadm.py b/checkbox_support/parsers/udevadm.py
index baee862..a2d884e 100644
--- a/checkbox_support/parsers/udevadm.py
+++ b/checkbox_support/parsers/udevadm.py
@@ -557,6 +557,8 @@ class UdevadmDevice(object):
557 # special device for PiCamera557 # special device for PiCamera
558 if self._environment["SUBSYSTEM"] == "vchiq":558 if self._environment["SUBSYSTEM"] == "vchiq":
559 return "MMAL"559 return "MMAL"
560 if self._environment["SUBSYSTEM"] == "watchdog":
561 return "WATCHDOG"
560562
561 if ('RFKILL_TYPE' in self._environment and563 if ('RFKILL_TYPE' in self._environment and
562 'RFKILL_NAME' in self._environment):564 'RFKILL_NAME' in self._environment):
@@ -1107,6 +1109,9 @@ class UdevadmParser(object):
1107 if device.bus == "vchiq":1109 if device.bus == "vchiq":
1108 return False1110 return False
11091111
1112 if device.category == "WATCHDOG":
1113 return "virtual" in device.path
1114
1110 # Ignore devices without bus information1115 # Ignore devices without bus information
1111 if not device.bus:1116 if not device.bus:
1112 return True1117 return True

Subscribers

People subscribed via source and target branches