diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/oeqa/runtime/cases/microcode.py | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/oeqa/runtime/cases/microcode.py b/lib/oeqa/runtime/cases/microcode.py new file mode 100644 index 00000000..6ce36a6f --- /dev/null +++ b/lib/oeqa/runtime/cases/microcode.py | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | from oeqa.runtime.case import OERuntimeTestCase | ||
| 2 | from oeqa.runtime.decorator.package import OEHasPackage | ||
| 3 | import re | ||
| 4 | |||
| 5 | class MicrocodeTest(OERuntimeTestCase): | ||
| 6 | |||
| 7 | def get_revision_from_microcode_string_list(self, microcode_string_list, re_pattern): | ||
| 8 | re_compile = re.compile(re_pattern) | ||
| 9 | rev_list = [] | ||
| 10 | for s in microcode_string_list: | ||
| 11 | matched_revs = re_compile.findall(s) | ||
| 12 | if matched_revs: | ||
| 13 | for mr in matched_revs: | ||
| 14 | rev_list.append(int(mr, 16)) | ||
| 15 | return rev_list | ||
| 16 | |||
| 17 | @OEHasPackage(["iucode-tool"]) | ||
| 18 | def test_microcode_update(self): | ||
| 19 | (status, output) = self.target.run('iucode_tool /lib/firmware/intel-ucode/ -tb -lS | grep rev') | ||
| 20 | if status: | ||
| 21 | self.skipTest("The iucode_tool detected no microcode for update.") | ||
| 22 | |||
| 23 | selected_microcodes = output.splitlines() | ||
| 24 | selected_rev_list = self.get_revision_from_microcode_string_list(selected_microcodes, "rev (\w*)") | ||
| 25 | self.assertTrue(selected_rev_list, msg="Could not find any rev from iucode_tool selected microcode.") | ||
| 26 | |||
| 27 | (status, output) = self.target.run('dmesg | grep microcode') | ||
| 28 | self.assertEqual(status, 0, msg='status and output: %s and %s' % (status, output)) | ||
| 29 | |||
| 30 | updated_microcodes = output.splitlines() | ||
| 31 | updated_rev_list = self.get_revision_from_microcode_string_list(updated_microcodes, "revision=(\w*)") | ||
| 32 | self.assertTrue(updated_rev_list, msg="Could not find any updated revision from microcode dmesg.") | ||
| 33 | |||
| 34 | for ul in updated_rev_list: | ||
| 35 | self.assertTrue(ul in selected_rev_list, msg="Updated revision, %s, not in selected revision list (%s)" % | ||
| 36 | (ul, selected_rev_list)) | ||
