Runtime oeqa test parselogs.py checks dmesg output for errors. It has hard coded machine specific exceptions for errors which can be ignored. To re-use of this test on other machine targets and images, use get_data() function to get the list of error strings to ignore "ignore_errors" from image specific "testimage_data.json" file. The json file stores this data as list under test method name and key "ignore_errors. For example:
{"test_parselogs":{"ignore_errors":[ "error strings which will be ignored", "another error strings which will be ignored" ]}} If the json file does not exist, parselogs.py still falls back to using the hardcoded defaults. Signed-off-by: Mikko Rapeli <mikko.rap...@linaro.org> --- meta/lib/oeqa/runtime/cases/parselogs.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/meta/lib/oeqa/runtime/cases/parselogs.py b/meta/lib/oeqa/runtime/cases/parselogs.py index e67d3750da..c1d92db5d6 100644 --- a/meta/lib/oeqa/runtime/cases/parselogs.py +++ b/meta/lib/oeqa/runtime/cases/parselogs.py @@ -12,6 +12,7 @@ from oeqa.runtime.case import OERuntimeTestCase from oeqa.core.decorator.depends import OETestDepends from oeqa.core.decorator.data import skipIfDataVar from oeqa.runtime.decorator.package import OEHasPackage +from oeqa.utils.data import get_data #in the future these lists could be moved outside of module errors = ["error", "cannot", "can\'t", "failed"] @@ -316,10 +317,18 @@ class ParseLogsTest(OERuntimeTestCase): grepcmd += '" ' + str(log) + " | grep -Eiv \'" try: - errorlist = ignore_errors[self.getMachine()] - except KeyError: - self.msg += 'No ignore list found for this machine, using default\n' - errorlist = ignore_errors['default'] + # get list of strings to ignore from image specific testimage_data.json with format: + # {"test_parselogs": {"ignore_errors":["string to ignore", "second string to ignore"]}} + errorlist = get_data(self, key = "ignore_errors") + except Exception as e: + self.logger.debug("%s: Exception e = %s" % (__file__, e)) + try: + errorlist = ignore_errors[self.getMachine()] + except KeyError: + warning_string = 'No ignore list found for this machine and no valid testimage_data.json, using defaults' + self.msg += '%s\n' % (warning_string) + self.logger.warn("%s" % (warning_string)) + errorlist = ignore_errors['default'] for ignore_error in errorlist: ignore_error = ignore_error.replace('(', r'\(') -- 2.34.1
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#173406): https://lists.openembedded.org/g/openembedded-core/message/173406 Mute This Topic: https://lists.openembedded.org/mt/95085494/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-