Message ID | 20180620121446.31470-8-info@marcellobauer.com |
---|---|
State | Accepted |
Headers | show |
Series | coreboot test intergration | expand |
On 20/06/18 13:14, Marcello Sylvester Bauer wrote: > Note: log message name and fallback advice has been added as arguments. > > Signed-off-by: Marcello Sylvester Bauer <info@marcellobauer.com> > --- > src/lib/include/fwts_log_scan.h | 1 + > src/lib/src/fwts_klog.c | 52 +++---------------------------------- > src/lib/src/fwts_log_scan.c | 57 +++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 62 insertions(+), 48 deletions(-) > > diff --git a/src/lib/include/fwts_log_scan.h b/src/lib/include/fwts_log_scan.h > index ac56dba2..0f03d336 100644 > --- a/src/lib/include/fwts_log_scan.h > +++ b/src/lib/include/fwts_log_scan.h > @@ -46,5 +46,6 @@ fwts_list *fwts_log_find_changes(fwts_list *log_old, fwts_list *log_new); > char *fwts_log_remove_timestamp(char *text); > int fwts_log_scan(fwts_framework *fw, fwts_list *log, fwts_log_scan_func callback, fwts_log_progress_func progress, void *private, int *errors, bool remove_timestamp); > char *fwts_log_unique_label(const char *str, const char *label); > +void fwts_log_scan_patterns(fwts_framework *fw, char *line, int repeated, char *prevline, void *private, int *errors, const char *name, const char *advice); > > #endif > diff --git a/src/lib/src/fwts_klog.c b/src/lib/src/fwts_klog.c > index cfb76d7f..48ebf13b 100644 > --- a/src/lib/src/fwts_klog.c > +++ b/src/lib/src/fwts_klog.c > @@ -113,55 +113,11 @@ void fwts_klog_scan_patterns(fwts_framework *fw, > void *private, > int *errors) > { > - fwts_log_pattern *pattern = (fwts_log_pattern *)private; > - static char *advice = > - "This is a bug picked up by the kernel, but as yet, the " > - "firmware test suite has no diagnostic advice for this particular problem."; > - > - FWTS_UNUSED(prevline); > - > - while (pattern->pattern != NULL) { > - bool matched = false; > - switch (pattern->compare_mode) { > - case FWTS_COMPARE_REGEX: > - if (pattern->compiled_ok) { > - int ret = regexec(&pattern->compiled, line, 0, NULL, 0); > - if (!ret) { > - /* A successful regular expression match! */ > - matched = true; > - } else if (ret != REG_NOMATCH) { > - char msg[1024]; > - > - regerror(ret, &pattern->compiled, msg, sizeof(msg)); > - fwts_log_info(fw, "regular expression engine error: %s.", msg); > - } > - } > - break; > - case FWTS_COMPARE_STRING: > - default: > - matched = (strstr(line, pattern->pattern) != NULL) ; > - break; > - } > + static char *advice = > + "This is a bug picked up by the kernel, but as yet, the " > + "firmware test suite has no diagnostic advice for this particular problem."; > > - if (matched) { > - if (pattern->level == LOG_LEVEL_INFO) > - fwts_log_info(fw, "Kernel message: %s", line); > - else { > - fwts_failed(fw, pattern->level, pattern->label, > - "%s Kernel message: %s", fwts_log_level_to_str(pattern->level), line); > - fwts_error_inc(fw, pattern->label, errors); > - } > - if (repeated) > - fwts_log_info(fw, "Message repeated %d times.", repeated); > - > - if ((pattern->advice) != NULL && (*pattern->advice)) > - fwts_advice(fw, "%s", pattern->advice); > - else > - fwts_advice(fw, "%s", advice); > - return; > - } > - pattern++; > - } > + fwts_log_scan_patterns(fw, line, repeated, prevline, private, errors, "Kernel", advice); > } > > /* > diff --git a/src/lib/src/fwts_log_scan.c b/src/lib/src/fwts_log_scan.c > index d9c2ac1e..40611a36 100644 > --- a/src/lib/src/fwts_log_scan.c > +++ b/src/lib/src/fwts_log_scan.c > @@ -239,3 +239,60 @@ char *fwts_log_unique_label(const char *str, const char *label) > *dst = '\0'; > return buffer; > } > + > +void fwts_log_scan_patterns(fwts_framework *fw, > + char *line, > + int repeated, > + char *prevline, > + void *private, > + int *errors, > + const char *name, > + const char *advice) > +{ > + fwts_log_pattern *pattern = (fwts_log_pattern *)private; > + > + FWTS_UNUSED(prevline); > + > + while (pattern->pattern != NULL) { > + bool matched = false; > + switch (pattern->compare_mode) { > + case FWTS_COMPARE_REGEX: > + if (pattern->compiled_ok) { > + int ret = regexec(&pattern->compiled, line, 0, NULL, 0); > + if (!ret) { > + /* A successful regular expression match! */ > + matched = true; > + } else if (ret != REG_NOMATCH) { > + char msg[1024]; > + > + regerror(ret, &pattern->compiled, msg, sizeof(msg)); > + fwts_log_info(fw, "regular expression engine error: %s.", msg); > + } > + } > + break; > + case FWTS_COMPARE_STRING: > + default: > + matched = (strstr(line, pattern->pattern) != NULL) ; > + break; > + } > + > + if (matched) { > + if (pattern->level == LOG_LEVEL_INFO) > + fwts_log_info(fw, "%s message: %s", name, line); > + else { > + fwts_failed(fw, pattern->level, pattern->label, > + "%s %s message: %s", fwts_log_level_to_str(pattern->level), name, line); > + fwts_error_inc(fw, pattern->label, errors); > + } > + if (repeated) > + fwts_log_info(fw, "Message repeated %d times.", repeated); > + > + if ((pattern->advice) != NULL && (*pattern->advice)) > + fwts_advice(fw, "%s", pattern->advice); > + else > + fwts_advice(fw, "%s", advice); > + return; > + } > + pattern++; > + } > +} > Acked-by: Colin Ian King <colin.king@canonical.com>
On 2018-06-20 05:14 AM, Marcello Sylvester Bauer wrote: > Note: log message name and fallback advice has been added as arguments. > > Signed-off-by: Marcello Sylvester Bauer <info@marcellobauer.com> > --- > src/lib/include/fwts_log_scan.h | 1 + > src/lib/src/fwts_klog.c | 52 +++---------------------------------- > src/lib/src/fwts_log_scan.c | 57 +++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 62 insertions(+), 48 deletions(-) > > diff --git a/src/lib/include/fwts_log_scan.h b/src/lib/include/fwts_log_scan.h > index ac56dba2..0f03d336 100644 > --- a/src/lib/include/fwts_log_scan.h > +++ b/src/lib/include/fwts_log_scan.h > @@ -46,5 +46,6 @@ fwts_list *fwts_log_find_changes(fwts_list *log_old, fwts_list *log_new); > char *fwts_log_remove_timestamp(char *text); > int fwts_log_scan(fwts_framework *fw, fwts_list *log, fwts_log_scan_func callback, fwts_log_progress_func progress, void *private, int *errors, bool remove_timestamp); > char *fwts_log_unique_label(const char *str, const char *label); > +void fwts_log_scan_patterns(fwts_framework *fw, char *line, int repeated, char *prevline, void *private, int *errors, const char *name, const char *advice); > > #endif > diff --git a/src/lib/src/fwts_klog.c b/src/lib/src/fwts_klog.c > index cfb76d7f..48ebf13b 100644 > --- a/src/lib/src/fwts_klog.c > +++ b/src/lib/src/fwts_klog.c > @@ -113,55 +113,11 @@ void fwts_klog_scan_patterns(fwts_framework *fw, > void *private, > int *errors) > { > - fwts_log_pattern *pattern = (fwts_log_pattern *)private; > - static char *advice = > - "This is a bug picked up by the kernel, but as yet, the " > - "firmware test suite has no diagnostic advice for this particular problem."; > - > - FWTS_UNUSED(prevline); > - > - while (pattern->pattern != NULL) { > - bool matched = false; > - switch (pattern->compare_mode) { > - case FWTS_COMPARE_REGEX: > - if (pattern->compiled_ok) { > - int ret = regexec(&pattern->compiled, line, 0, NULL, 0); > - if (!ret) { > - /* A successful regular expression match! */ > - matched = true; > - } else if (ret != REG_NOMATCH) { > - char msg[1024]; > - > - regerror(ret, &pattern->compiled, msg, sizeof(msg)); > - fwts_log_info(fw, "regular expression engine error: %s.", msg); > - } > - } > - break; > - case FWTS_COMPARE_STRING: > - default: > - matched = (strstr(line, pattern->pattern) != NULL) ; > - break; > - } > + static char *advice = > + "This is a bug picked up by the kernel, but as yet, the " > + "firmware test suite has no diagnostic advice for this particular problem."; > > - if (matched) { > - if (pattern->level == LOG_LEVEL_INFO) > - fwts_log_info(fw, "Kernel message: %s", line); > - else { > - fwts_failed(fw, pattern->level, pattern->label, > - "%s Kernel message: %s", fwts_log_level_to_str(pattern->level), line); > - fwts_error_inc(fw, pattern->label, errors); > - } > - if (repeated) > - fwts_log_info(fw, "Message repeated %d times.", repeated); > - > - if ((pattern->advice) != NULL && (*pattern->advice)) > - fwts_advice(fw, "%s", pattern->advice); > - else > - fwts_advice(fw, "%s", advice); > - return; > - } > - pattern++; > - } > + fwts_log_scan_patterns(fw, line, repeated, prevline, private, errors, "Kernel", advice); > } > > /* > diff --git a/src/lib/src/fwts_log_scan.c b/src/lib/src/fwts_log_scan.c > index d9c2ac1e..40611a36 100644 > --- a/src/lib/src/fwts_log_scan.c > +++ b/src/lib/src/fwts_log_scan.c > @@ -239,3 +239,60 @@ char *fwts_log_unique_label(const char *str, const char *label) > *dst = '\0'; > return buffer; > } > + > +void fwts_log_scan_patterns(fwts_framework *fw, > + char *line, > + int repeated, > + char *prevline, > + void *private, > + int *errors, > + const char *name, > + const char *advice) > +{ > + fwts_log_pattern *pattern = (fwts_log_pattern *)private; > + > + FWTS_UNUSED(prevline); > + > + while (pattern->pattern != NULL) { > + bool matched = false; > + switch (pattern->compare_mode) { > + case FWTS_COMPARE_REGEX: > + if (pattern->compiled_ok) { > + int ret = regexec(&pattern->compiled, line, 0, NULL, 0); > + if (!ret) { > + /* A successful regular expression match! */ > + matched = true; > + } else if (ret != REG_NOMATCH) { > + char msg[1024]; > + > + regerror(ret, &pattern->compiled, msg, sizeof(msg)); > + fwts_log_info(fw, "regular expression engine error: %s.", msg); > + } > + } > + break; > + case FWTS_COMPARE_STRING: > + default: > + matched = (strstr(line, pattern->pattern) != NULL) ; > + break; > + } > + > + if (matched) { > + if (pattern->level == LOG_LEVEL_INFO) > + fwts_log_info(fw, "%s message: %s", name, line); > + else { > + fwts_failed(fw, pattern->level, pattern->label, > + "%s %s message: %s", fwts_log_level_to_str(pattern->level), name, line); > + fwts_error_inc(fw, pattern->label, errors); > + } > + if (repeated) > + fwts_log_info(fw, "Message repeated %d times.", repeated); > + > + if ((pattern->advice) != NULL && (*pattern->advice)) > + fwts_advice(fw, "%s", pattern->advice); > + else > + fwts_advice(fw, "%s", advice); > + return; > + } > + pattern++; > + } > +} > Acked-by: Alex Hung <alex.hung@canonical.com>
diff --git a/src/lib/include/fwts_log_scan.h b/src/lib/include/fwts_log_scan.h index ac56dba2..0f03d336 100644 --- a/src/lib/include/fwts_log_scan.h +++ b/src/lib/include/fwts_log_scan.h @@ -46,5 +46,6 @@ fwts_list *fwts_log_find_changes(fwts_list *log_old, fwts_list *log_new); char *fwts_log_remove_timestamp(char *text); int fwts_log_scan(fwts_framework *fw, fwts_list *log, fwts_log_scan_func callback, fwts_log_progress_func progress, void *private, int *errors, bool remove_timestamp); char *fwts_log_unique_label(const char *str, const char *label); +void fwts_log_scan_patterns(fwts_framework *fw, char *line, int repeated, char *prevline, void *private, int *errors, const char *name, const char *advice); #endif diff --git a/src/lib/src/fwts_klog.c b/src/lib/src/fwts_klog.c index cfb76d7f..48ebf13b 100644 --- a/src/lib/src/fwts_klog.c +++ b/src/lib/src/fwts_klog.c @@ -113,55 +113,11 @@ void fwts_klog_scan_patterns(fwts_framework *fw, void *private, int *errors) { - fwts_log_pattern *pattern = (fwts_log_pattern *)private; - static char *advice = - "This is a bug picked up by the kernel, but as yet, the " - "firmware test suite has no diagnostic advice for this particular problem."; - - FWTS_UNUSED(prevline); - - while (pattern->pattern != NULL) { - bool matched = false; - switch (pattern->compare_mode) { - case FWTS_COMPARE_REGEX: - if (pattern->compiled_ok) { - int ret = regexec(&pattern->compiled, line, 0, NULL, 0); - if (!ret) { - /* A successful regular expression match! */ - matched = true; - } else if (ret != REG_NOMATCH) { - char msg[1024]; - - regerror(ret, &pattern->compiled, msg, sizeof(msg)); - fwts_log_info(fw, "regular expression engine error: %s.", msg); - } - } - break; - case FWTS_COMPARE_STRING: - default: - matched = (strstr(line, pattern->pattern) != NULL) ; - break; - } + static char *advice = + "This is a bug picked up by the kernel, but as yet, the " + "firmware test suite has no diagnostic advice for this particular problem."; - if (matched) { - if (pattern->level == LOG_LEVEL_INFO) - fwts_log_info(fw, "Kernel message: %s", line); - else { - fwts_failed(fw, pattern->level, pattern->label, - "%s Kernel message: %s", fwts_log_level_to_str(pattern->level), line); - fwts_error_inc(fw, pattern->label, errors); - } - if (repeated) - fwts_log_info(fw, "Message repeated %d times.", repeated); - - if ((pattern->advice) != NULL && (*pattern->advice)) - fwts_advice(fw, "%s", pattern->advice); - else - fwts_advice(fw, "%s", advice); - return; - } - pattern++; - } + fwts_log_scan_patterns(fw, line, repeated, prevline, private, errors, "Kernel", advice); } /* diff --git a/src/lib/src/fwts_log_scan.c b/src/lib/src/fwts_log_scan.c index d9c2ac1e..40611a36 100644 --- a/src/lib/src/fwts_log_scan.c +++ b/src/lib/src/fwts_log_scan.c @@ -239,3 +239,60 @@ char *fwts_log_unique_label(const char *str, const char *label) *dst = '\0'; return buffer; } + +void fwts_log_scan_patterns(fwts_framework *fw, + char *line, + int repeated, + char *prevline, + void *private, + int *errors, + const char *name, + const char *advice) +{ + fwts_log_pattern *pattern = (fwts_log_pattern *)private; + + FWTS_UNUSED(prevline); + + while (pattern->pattern != NULL) { + bool matched = false; + switch (pattern->compare_mode) { + case FWTS_COMPARE_REGEX: + if (pattern->compiled_ok) { + int ret = regexec(&pattern->compiled, line, 0, NULL, 0); + if (!ret) { + /* A successful regular expression match! */ + matched = true; + } else if (ret != REG_NOMATCH) { + char msg[1024]; + + regerror(ret, &pattern->compiled, msg, sizeof(msg)); + fwts_log_info(fw, "regular expression engine error: %s.", msg); + } + } + break; + case FWTS_COMPARE_STRING: + default: + matched = (strstr(line, pattern->pattern) != NULL) ; + break; + } + + if (matched) { + if (pattern->level == LOG_LEVEL_INFO) + fwts_log_info(fw, "%s message: %s", name, line); + else { + fwts_failed(fw, pattern->level, pattern->label, + "%s %s message: %s", fwts_log_level_to_str(pattern->level), name, line); + fwts_error_inc(fw, pattern->label, errors); + } + if (repeated) + fwts_log_info(fw, "Message repeated %d times.", repeated); + + if ((pattern->advice) != NULL && (*pattern->advice)) + fwts_advice(fw, "%s", pattern->advice); + else + fwts_advice(fw, "%s", advice); + return; + } + pattern++; + } +}
Note: log message name and fallback advice has been added as arguments. Signed-off-by: Marcello Sylvester Bauer <info@marcellobauer.com> --- src/lib/include/fwts_log_scan.h | 1 + src/lib/src/fwts_klog.c | 52 +++---------------------------------- src/lib/src/fwts_log_scan.c | 57 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 48 deletions(-)