mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-05-09 18:04:46 +00:00
validate: Add support for setting a report level for an issue type
Until now we could set report levels to the monitor, this adds support for setting report level for the issue types too.
This commit is contained in:
parent
80cc6f29ef
commit
64560aea32
2 changed files with 29 additions and 8 deletions
|
@ -503,13 +503,19 @@ gst_validate_runner_get_reporting_level_for_name (GstValidateRunner * runner,
|
|||
const gchar * name)
|
||||
{
|
||||
GList *tmp;
|
||||
gchar *fixed_name = g_strdup (name);
|
||||
|
||||
_replace_double_colons (fixed_name);
|
||||
for (tmp = runner->priv->report_pattern_levels; tmp; tmp = tmp->next) {
|
||||
PatternLevel *pattern_level = (PatternLevel *) tmp->data;
|
||||
if (g_pattern_match_string (pattern_level->pattern, name))
|
||||
if (g_pattern_match_string (pattern_level->pattern, fixed_name)) {
|
||||
g_free (fixed_name);
|
||||
|
||||
return pattern_level->level;
|
||||
}
|
||||
}
|
||||
|
||||
g_free (fixed_name);
|
||||
return GST_VALIDATE_SHOW_UNKNOWN;
|
||||
}
|
||||
|
||||
|
@ -535,14 +541,22 @@ void
|
|||
gst_validate_runner_add_report (GstValidateRunner * runner,
|
||||
GstValidateReport * report)
|
||||
{
|
||||
GstValidateReportingDetails reporter_level =
|
||||
gst_validate_reporter_get_reporting_level (report->reporter);
|
||||
GstValidateReportingDetails details, reporter_details, issue_type_details;
|
||||
|
||||
gst_validate_send (json_boxed_serialize (GST_MINI_OBJECT_TYPE (report),
|
||||
report));
|
||||
|
||||
details = reporter_details =
|
||||
gst_validate_reporter_get_reporting_level (report->reporter);
|
||||
issue_type_details =
|
||||
gst_validate_runner_get_reporting_level_for_name (runner,
|
||||
g_quark_to_string (report->issue->issue_id));
|
||||
|
||||
if (reporter_details == GST_VALIDATE_SHOW_UNKNOWN)
|
||||
details = issue_type_details;
|
||||
|
||||
/* Let's use our own reporting strategy */
|
||||
if (reporter_level == GST_VALIDATE_SHOW_UNKNOWN) {
|
||||
if (details == GST_VALIDATE_SHOW_UNKNOWN) {
|
||||
gst_validate_report_set_reporting_level (report,
|
||||
runner->priv->default_level);
|
||||
switch (runner->priv->default_level) {
|
||||
|
@ -560,6 +574,9 @@ gst_validate_runner_add_report (GstValidateRunner * runner,
|
|||
default:
|
||||
break;
|
||||
}
|
||||
} else if (details == GST_VALIDATE_SHOW_NONE) {
|
||||
GST_DEBUG ("Not reporting.");
|
||||
return;
|
||||
}
|
||||
|
||||
GST_VALIDATE_RUNNER_LOCK (runner);
|
||||
|
|
|
@ -206,10 +206,11 @@ _create_issues (GstValidateRunner * runner)
|
|||
gst_object_unref (sinkpad);
|
||||
gst_object_unref (funnel_sink1);
|
||||
gst_object_unref (funnel_sink2);
|
||||
check_destroyed (fakemixer, funnel_sink1, funnel_sink2, NULL);
|
||||
check_destroyed (src1, srcpad1, NULL);
|
||||
check_destroyed (src2, srcpad2, NULL);
|
||||
check_destroyed (sink, sinkpad, NULL);
|
||||
gst_check_objects_destroyed_on_unref (fakemixer, funnel_sink1, funnel_sink2,
|
||||
NULL);
|
||||
gst_check_objects_destroyed_on_unref (src1, srcpad1, NULL);
|
||||
gst_check_objects_destroyed_on_unref (src2, srcpad2, NULL);
|
||||
gst_check_objects_destroyed_on_unref (sink, sinkpad, NULL);
|
||||
}
|
||||
|
||||
#define TEST_LEVELS(name, details, num_issues) \
|
||||
|
@ -245,6 +246,8 @@ TEST_LEVELS
|
|||
/* 2 issues repeated on the fakesink's sink */
|
||||
TEST_LEVELS (none_fakesink_all, "none,fakesink*:all", 2);
|
||||
|
||||
TEST_LEVELS (issue_type, "event::flush-stop-unexpected:none", 0);
|
||||
|
||||
#undef TEST_LEVELS
|
||||
|
||||
static Suite *
|
||||
|
@ -271,6 +274,7 @@ gst_validate_suite (void)
|
|||
tcase_add_test (tc_chain,
|
||||
test_global_level_synthetic_fakesrc1_subchain_fakesrc2_subchain_fakemixer_src_monitor);
|
||||
tcase_add_test (tc_chain, test_global_level_none_fakesink_all);
|
||||
tcase_add_test (tc_chain, test_global_level_issue_type);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue