mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-04 22:48:54 +00:00
validate: Allow overidding issue severity from configs
Refactoring sensibly to allow getting configs outside the `core` namespace and outside plugin names. The `GST_VALIDATE_OVERRIDE` env variable should probably be removed all together at some point. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/185>
This commit is contained in:
parent
0e85d15da0
commit
ec2a139246
4 changed files with 64 additions and 29 deletions
|
@ -27,7 +27,7 @@ See [GstValidateVerbosityFlags](GstValidateVerbosityFlags) for possible values.
|
||||||
|
|
||||||
The [action type](gst-validate-action-types.md) to execute, the action type
|
The [action type](gst-validate-action-types.md) to execute, the action type
|
||||||
must be a CONFIG action or the action type must have a `as-config` argument. When the `action`
|
must be a CONFIG action or the action type must have a `as-config` argument. When the `action`
|
||||||
is specified in a parametter, a validate action is executed using the other parametters of the
|
is specified in a parameter, a validate action is executed using the other parameters of the
|
||||||
config as configuration for the validate scenario action.
|
config as configuration for the validate scenario action.
|
||||||
|
|
||||||
#### Example:
|
#### Example:
|
||||||
|
@ -72,7 +72,7 @@ Defaults variables are:
|
||||||
- `$(CONFIG_DIR)`: The directory the running scenario is in.
|
- `$(CONFIG_DIR)`: The directory the running scenario is in.
|
||||||
- `$(CONFIG_NAME)`: The name of the config file
|
- `$(CONFIG_NAME)`: The name of the config file
|
||||||
- `$(LOGSDIR)`: The directory where to place log files. This uses the
|
- `$(LOGSDIR)`: The directory where to place log files. This uses the
|
||||||
`GST_VALIDATE_LOGSDIR` environment variable if avalaible or `$(TMPDIR)` if
|
`GST_VALIDATE_LOGSDIR` environment variable if available or `$(TMPDIR)` if
|
||||||
the variables hasn't been set. (Note that the
|
the variables hasn't been set. (Note that the
|
||||||
[gst-validate-launcher](gst-validate-launcher.md) set the environment
|
[gst-validate-launcher](gst-validate-launcher.md) set the environment
|
||||||
variables).
|
variables).
|
||||||
|
@ -89,3 +89,18 @@ It is also possible to set global variables (also usable from
|
||||||
``` yaml
|
``` yaml
|
||||||
set-globals, TESTSUITE_ROOT_DIR=$(CONFIG_DIR)
|
set-globals, TESTSUITE_ROOT_DIR=$(CONFIG_DIR)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## `change-issue-severity` settings parameters
|
||||||
|
|
||||||
|
You can change issues severity with the `change-issue-severity` configuration
|
||||||
|
with the following parameters:
|
||||||
|
|
||||||
|
* `issue-id`: The GQuark name of the issue, for example: `event::segment-has-wrong-start`,
|
||||||
|
You can use `gst-validate-1.0 --print-issue-types` to list all issue types.
|
||||||
|
* `new-severity`: The new [`severity`](GstValidateReportLevel) of the issue
|
||||||
|
* `element-name` (*optional*): The name of the element the severity
|
||||||
|
change applies to
|
||||||
|
* `element-factory-name` (*optional*): The element factory name of the elements the
|
||||||
|
severity change applies to
|
||||||
|
* `element-classification` (*optional*): The classification of the elements the
|
||||||
|
severity change applies to
|
||||||
|
|
|
@ -62,4 +62,5 @@ G_GNUC_INTERNAL void gst_validate_set_test_file_globals (GstStructure* meta, con
|
||||||
G_GNUC_INTERNAL gboolean gst_validate_get_test_file_scenario (GList** structs, const gchar** scenario_name, gchar** original_name);
|
G_GNUC_INTERNAL gboolean gst_validate_get_test_file_scenario (GList** structs, const gchar** scenario_name, gchar** original_name);
|
||||||
G_GNUC_INTERNAL GstValidateScenario* gst_validate_scenario_from_structs (GstValidateRunner* runner, GstElement* pipeline, GList* structures,
|
G_GNUC_INTERNAL GstValidateScenario* gst_validate_scenario_from_structs (GstValidateRunner* runner, GstElement* pipeline, GList* structures,
|
||||||
gchar* origin_file);
|
gchar* origin_file);
|
||||||
|
G_GNUC_INTERNAL GList* gst_validate_get_config(const gchar *structname);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -263,39 +263,42 @@ _add_override_from_struct (GstStructure * soverride)
|
||||||
|
|
||||||
gboolean registered = FALSE;
|
gboolean registered = FALSE;
|
||||||
|
|
||||||
if (!gst_structure_has_name (soverride, "change-severity")) {
|
if (!gst_structure_has_name (soverride, "change-severity")
|
||||||
GST_ERROR ("Currently only 'change-severity' overrides are supported");
|
&& !gst_structure_has_name (soverride, "change-issue-severity")) {
|
||||||
|
g_error ("Currently only 'change-severity' overrides are supported");
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
str_issue_id = gst_structure_get_string (soverride, "issue-id");
|
str_issue_id = gst_structure_get_string (soverride, "issue-id");
|
||||||
if (!str_issue_id) {
|
if (!str_issue_id) {
|
||||||
GST_ERROR ("No issue id provided in override: %" GST_PTR_FORMAT, soverride);
|
g_error ("No issue id provided in override: %" GST_PTR_FORMAT, soverride);
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
issue_id = g_quark_from_string (str_issue_id);
|
issue_id = g_quark_from_string (str_issue_id);
|
||||||
if (gst_validate_issue_from_id (issue_id) == NULL) {
|
if (gst_validate_issue_from_id (issue_id) == NULL) {
|
||||||
GST_ERROR ("No GstValidateIssue registered for %s", str_issue_id);
|
g_error ("No GstValidateIssue registered for %s", str_issue_id);
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
str_new_severity = gst_structure_get_string (soverride, "new-severity");
|
str_new_severity = gst_structure_get_string (soverride, "new-severity");
|
||||||
if (str_new_severity == NULL) {
|
if (str_new_severity == NULL) {
|
||||||
GST_ERROR ("No 'new-severity' field found in %" GST_PTR_FORMAT, soverride);
|
g_error ("No 'new-severity' field found in %" GST_PTR_FORMAT, soverride);
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
level = gst_validate_report_level_from_name (str_new_severity);
|
level = gst_validate_report_level_from_name (str_new_severity);
|
||||||
if (level == GST_VALIDATE_REPORT_LEVEL_UNKNOWN) {
|
if (level == GST_VALIDATE_REPORT_LEVEL_UNKNOWN) {
|
||||||
GST_ERROR ("Unknown level name %s", str_new_severity);
|
g_error ("Unknown level name %s", str_new_severity);
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
gst_validate_printf (NULL, "**-> Changing issue '%s' severity to: '%s'\n",
|
||||||
|
str_issue_id, str_new_severity);
|
||||||
|
|
||||||
override = gst_validate_override_new ();
|
override = gst_validate_override_new ();
|
||||||
gst_validate_override_change_severity (override, issue_id, level);
|
gst_validate_override_change_severity (override, issue_id, level);
|
||||||
|
@ -385,6 +388,11 @@ gst_validate_override_registry_preload (void)
|
||||||
GModule *module;
|
GModule *module;
|
||||||
int ret, nloaded = 0;
|
int ret, nloaded = 0;
|
||||||
gpointer ext_create_overrides;
|
gpointer ext_create_overrides;
|
||||||
|
GList *tmp, *overrides = gst_validate_get_config ("change-issue-severity");
|
||||||
|
|
||||||
|
for (tmp = overrides; tmp; tmp = tmp->next)
|
||||||
|
_add_override_from_struct (tmp->data);
|
||||||
|
g_list_free_full (overrides, (GDestroyNotify) gst_structure_free);
|
||||||
|
|
||||||
sos = g_getenv ("GST_VALIDATE_OVERRIDE");
|
sos = g_getenv ("GST_VALIDATE_OVERRIDE");
|
||||||
if (!sos) {
|
if (!sos) {
|
||||||
|
|
|
@ -287,11 +287,8 @@ gst_validate_get_testfile_configs (const gchar * suffix)
|
||||||
GList *
|
GList *
|
||||||
gst_validate_plugin_get_config (GstPlugin * plugin)
|
gst_validate_plugin_get_config (GstPlugin * plugin)
|
||||||
{
|
{
|
||||||
GList *plugin_conf = NULL;
|
|
||||||
const gchar *suffix;
|
const gchar *suffix;
|
||||||
const gchar *config;
|
GList *plugin_conf = NULL;
|
||||||
GStrv tmp;
|
|
||||||
guint i;
|
|
||||||
|
|
||||||
if (plugin) {
|
if (plugin) {
|
||||||
if ((plugin_conf =
|
if ((plugin_conf =
|
||||||
|
@ -306,22 +303,7 @@ gst_validate_plugin_get_config (GstPlugin * plugin)
|
||||||
suffix = "core";
|
suffix = "core";
|
||||||
}
|
}
|
||||||
|
|
||||||
plugin_conf = gst_validate_get_testfile_configs (suffix);
|
plugin_conf = gst_validate_get_config (suffix);
|
||||||
config = g_getenv ("GST_VALIDATE_CONFIG");
|
|
||||||
if (!config) {
|
|
||||||
return plugin_conf;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = g_strsplit (config, G_SEARCHPATH_SEPARATOR_S, -1);
|
|
||||||
for (i = 0; tmp[i] != NULL; i++) {
|
|
||||||
GList *l;
|
|
||||||
|
|
||||||
l = create_config (tmp[i], suffix);
|
|
||||||
if (l)
|
|
||||||
plugin_conf = g_list_concat (plugin_conf, l);
|
|
||||||
}
|
|
||||||
g_strfreev (tmp);
|
|
||||||
|
|
||||||
if (plugin)
|
if (plugin)
|
||||||
g_object_set_data_full (G_OBJECT (plugin), GST_VALIDATE_PLUGIN_CONFIG,
|
g_object_set_data_full (G_OBJECT (plugin), GST_VALIDATE_PLUGIN_CONFIG,
|
||||||
plugin_conf, _free_plugin_config);
|
plugin_conf, _free_plugin_config);
|
||||||
|
@ -331,6 +313,35 @@ gst_validate_plugin_get_config (GstPlugin * plugin)
|
||||||
return plugin_conf;
|
return plugin_conf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GList *
|
||||||
|
gst_validate_get_config (const gchar * structname)
|
||||||
|
{
|
||||||
|
|
||||||
|
const gchar *config;
|
||||||
|
GStrv tmp;
|
||||||
|
guint i;
|
||||||
|
GList *configs;
|
||||||
|
|
||||||
|
|
||||||
|
configs = gst_validate_get_testfile_configs (structname);
|
||||||
|
config = g_getenv ("GST_VALIDATE_CONFIG");
|
||||||
|
if (!config) {
|
||||||
|
return configs;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp = g_strsplit (config, G_SEARCHPATH_SEPARATOR_S, -1);
|
||||||
|
for (i = 0; tmp[i] != NULL; i++) {
|
||||||
|
GList *l;
|
||||||
|
|
||||||
|
l = create_config (tmp[i], structname);
|
||||||
|
if (l)
|
||||||
|
configs = g_list_concat (configs, l);
|
||||||
|
}
|
||||||
|
g_strfreev (tmp);
|
||||||
|
|
||||||
|
return configs;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_validate_init_plugins (void)
|
gst_validate_init_plugins (void)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue