Commit graph

960 commits

Author SHA1 Message Date
Thibault Saunier
0e85d15da0 validate: Add an option to describe issue types
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/185>
2020-04-29 10:13:51 -04:00
Thibault Saunier
66d29a31fd validate: Show the exact file line when error out in structure files
And minor stdout enhancements

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/185>
2020-04-29 08:33:21 -04:00
Thibault Saunier
640469ce0c validate: Do not check pulling thread when thread is paused
With decodebin3 we have cases where a task has been started in
the `typefind` element but the demuxer is the one pulling (from
its own thread)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/183>
2020-04-28 10:17:02 -04:00
Thibault Saunier
75d30ae2d3 validate: Add a check-position action type
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/182>
2020-04-27 17:00:12 -04:00
Thibault Saunier
47f59ad731 validate:scenario: Enhance failures messages
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/182>
2020-04-27 17:00:12 -04:00
Thibault Saunier
9840417a87 validate: Add a way to run a TestClock in scenarios
A TestClock will be used automatically when a scenario has a
`crank-clock` action.

And make `validate` and `debug-viewer` options features in meson,
no reason they weren't and now we require gst-check to build validate

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/182>
2020-04-27 17:00:12 -04:00
Thibault Saunier
bf952d3c8b validate: Introduce the concept of "Test files"
This way we can have a single file that wraps scenarios,
`gst-validate-1.0` arguments, as well as a configuration.

It changes the name of `description` of scenarios to use `meta`
The goal is to replace tests describes in python with dictionary
to fully self contained `.validatetest` files which look like:

```
meta,
    handles-states=true,
    ignore-eos=true,
    gst-validate-args = {
         "videotestsrc pattern=blue ! video/x-raw,format=I420,framerate=1/1 ! timeoverlay ! $(videosink) name=videosink allocation-meta-flags=0",
    },
    configs = {
         "$(validateflow), pad=videosink:sink, buffers-checksum=true, ignored-fields={\"buffers=meta\", }",
    }

play
seek, start=0.0, stop=5.0, flags=accurate+flush, rate=1.0
crank-clock, expected-elapsed-time=0.0
crank-clock, repeat=4, expected-elapsed-time=1.0
crank-clock, expected-elapsed-time=1.0
stop, on-message=eos
```
2020-04-27 16:03:33 -04:00
Thibault Saunier
9aff82d6bb validate: Fix criticals around NULL structure usage 2020-04-27 10:52:47 -04:00
Thibault Saunier
7d3ada4f4e validate: Fix 'repeat' parameter on non ASYNC action types 2020-04-27 10:52:47 -04:00
Thibault Saunier
05815d4b4f validate:scenario: Do not consider action with 'on-message' as on addition 2020-04-23 19:57:54 -04:00
Thibault Saunier
2b32a68df1 validate: report: Handle when reporting NULL action
And add information about the action repeat state.
2020-04-23 19:57:54 -04:00
Thibault Saunier
449674459a validate: Handle comments in multiline expressions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/179>
2020-04-22 13:02:29 -04:00
Thibault Saunier
bf24fd3d74 validate: Fix multi variable in a single structure field
We were keeping using the GMatchInfo even after modifying the string
which is explicitly stated as invalid in the GRegex documentation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/179>
2020-04-22 12:47:20 -04:00
Thibault Saunier
58de8e5330 validate:scenario: Fix 'on-message' actions execution
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/177>
2020-04-21 20:45:51 -04:00
Thibault Saunier
4f7217b0b3 validate: Add { and [ as line continuation markers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/177>
2020-04-21 15:28:00 -04:00
Nicolas Dufresne
4bc9f73650 utils: Fix double free in error case
This was detected by Coverity. The content point would have been freed gain in
the done: label.

CID 1461289
2020-04-07 18:33:08 -04:00
Thibault Saunier
81770eda7e validate: Use gst_print for validate report messages 2020-03-23 21:28:45 -03:00
Thibault Saunier
9b260a1ec6 validate: Plug some leaks
And add some valgrind suppression for fontconfig
2020-03-12 12:35:45 -03:00
Thibault Saunier
f24ca37794 validate:scenario: Make the action->prepare function return a GstValidateExecuteActionReturn
Implementers might want to report the error themselves
2020-03-12 12:35:45 -03:00
Thibault Saunier
7898d5b347 validate: Add a way to check last frame number
This introduces a new 'timecode-frame-number' in the 'check-last-sample'
action type se we can verify the number of output frames.
2020-03-12 12:35:45 -03:00
Thibault Saunier
ee5e0b396e validate: Enhance debug message on invalid expression function call 2020-03-12 12:35:45 -03:00
Thibault Saunier
987d125c7e validate:utils: Allow plain string in gst_validate_utils_get_strv 2020-03-12 12:35:45 -03:00
Thibault Saunier
4ae29ab7ed validate:ssim: Enhance printing position
Adding a new `gst_validate_print_position` method which also
sends messages to the runner if required.
2020-03-12 12:35:45 -03:00
Thibault Saunier
d654a4049b validate:scenario:Handle GStreamer serialized timestamps 2020-03-11 16:35:23 -03:00
Thibault Saunier
080fdf8e2f validate:launcher: Add support for the imagesequence protocol 2020-03-06 16:05:38 -03:00
Thibault Saunier
bc622ec658 validate:launcher: Batch inspecting scenarios
Removing almost 1 second to start running tests with the default
testsuite
2020-03-06 15:36:10 -03:00
Thibault Saunier
77b6bf2050 meson: remove vs_module_defs
The GST_EXPORT should handle it.
2020-02-26 14:21:52 -03:00
Thibault Saunier
1ee84f7c10 validate: Fix leak parsing structure files 2020-02-26 10:52:12 -03:00
Thibault Saunier
d86fa2c44a validate: Enhance error reporting for errors in struct files
Get a sense of files and line numbers in the parsed GstStructure
and take that information when reporting GstValidateAction errors
by letting the user know where the action comes from in the messages.

And accept non-literal string in printing formats.
2020-02-25 16:22:10 -03:00
Thibault Saunier
cf6fb4a7f2 validate: Add a specific error type for check actions
And mark it as `NO_BACKTRACE | FULL_DETAILS`, same as for
other action failure types.
2020-02-25 11:28:35 -03:00
Thibault Saunier
2036d8292f validate: Enhance error reporting when scenario or configs are invalid 2020-02-25 11:28:35 -03:00
Thibault Saunier
1a6f404c5d validate: Add a flags to issues
Currently those allow registering issue that:
- Won't print backtrace as it is sometimes useless info
- Will repeat the details even in smart mode
2020-02-25 11:28:35 -03:00
Thibault Saunier
a12cb70422 validate: Consider ',' as continuing line marker in struct files
Since `,` is the separator between fields of GstStructure we can
safely consider that if a line ends with it, the following line
is the logical continuity of the serialized GstStructure.

This makes writing those files more convenient and reading them
more pleasant as we do not need to add extra `\` at end of lines
anymore
2020-02-19 22:20:25 -03:00
Thibault Saunier
27fc0d45a2 validate:scenario: Stop rounding up clocktime values
This doesn't make any sense in that context
2020-02-11 15:57:56 -03:00
Thibault Saunier
5b82274f17 validate:flow: Add a way to set the types of events to log/ignore
Added two properties to the plugin:
     * ignored-event-types: A list of event types to be ignored when logging events
     * logged-event-types: A list of event types to be logged when logging events

This commits also moves the "ignored-event-fields" property to using a proper
GstValueList for the list of event fields to be taken into account, instead
of the home grown separated by comas list of string, making the API more
uniform.

This also adds a simple helper method: `gst_validate_utils_get_strv`
2020-02-04 16:09:36 -03:00
Thibault Saunier
0b3ce37eea validate:scenario: fix some typos 2019-12-30 10:25:55 -03:00
Thibault Saunier
bba35fccf2 validate:scenario: Implement an action to check property value 2019-12-30 10:25:55 -03:00
Edward Hervey
43815541d8 validate-scenario: Initialize variable
We could end up using it uninitialized

CID: 1444920
2019-11-27 15:33:14 +01:00
Edward Hervey
4f0bfcc7bb validate: Fix memory leaks
Various structures were being leaked.
2019-11-20 10:19:00 +01:00
Alicia Boya García
56d82af7b1 gst-validate-bin-monitor: Remove unused field. 2019-11-02 17:07:02 +01:00
Tim-Philipp Müller
280321dee1 validate: remove autotools build 2019-10-15 00:24:00 +01:00
Thibault Saunier
1f68027942 validate: Check that pull_range is called from the streaming thread
`gst_pad_pull_range` should always be called from the streaming thread,
we now check that when pull_range is called, and if the sinkpad calling
the function has a GstTask with a running thread, the function is called
from that thread.
2019-10-02 19:22:31 +00:00
Nicolas Dufresne
50971aa2c6 validate-scanario: Fix crash when using installed validate
When installed, the lookup path will endup on the very last try, but the
scenario_file was left unset, which lead to a crash.
2019-09-27 16:52:51 -04:00
Matthew Waters
e3f4d51771 validate: fix build with newer gcc
In file included from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gst.h:55,
                 from ../validate/gst/validate/gst-validate-scenario.c:45:
../validate/gst/validate/gst-validate-scenario.c: In function ‘gst_validate_scenario_load’:
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:645:5: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  645 |     gst_debug_log ((cat), (level), __FILE__, GST_FUNCTION, __LINE__, \
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  646 |         (GObject *) (object), __VA_ARGS__);    \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:1067:26: note: in expansion of macro ‘GST_CAT_LEVEL_LOG’
 1067 | #define GST_ERROR(...)   GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_ERROR,   NULL, __VA_ARGS__)
      |                          ^~~~~~~~~~~~~~~~~
../validate/gst/validate/gst-validate-scenario.c:3615:5: note: in expansion of macro ‘GST_ERROR’
 3615 |     GST_ERROR ("Invalid name for scenario '%s'", scenario_name);
      |     ^~~~~~~~~
../validate/gst/validate/gst-validate-scenario.c:3615:44: note: format string is defined here
 3615 |     GST_ERROR ("Invalid name for scenario '%s'", scenario_name);
      |                                            ^~
2019-09-24 11:45:34 +10:00
Matthew Waters
cca6ae3fdb validate: fix -Werror=format-nonliteral build with clang
[3470/4053] Compiling C object 'subprojects/gst-devtools/validate/gst/validate/28db7b6@@gstvalidatetracer@sha/gst-validate-reporter.c.o'.
../subprojects/gst-devtools/validate/gst/validate/gst-validate-reporter.c:186:31: warning: format string is not a string literal [-Wformat-nonliteral]
  message = g_strdup_vprintf (format, vacopy);
                              ^~~~~~
[3487/4053] Compiling C object 'subprojects/gst-devtools/validate/gst/validate/28db7b6@@gstvalidatetracer@sha/gst-validate-report.c.o'.
../subprojects/gst-devtools/validate/gst/validate/gst-validate-report.c:1007:34: warning: format string is not a string literal [-Wformat-nonliteral]
  tmp = gst_info_strdup_vprintf (format, args);
                                 ^~~~~~
[76/151] Compiling C object 'subprojects/gst-devtools/validate/plugins/flow/697521d@@gstvalidateflow@sha/gstvalidateflow.c.o'.
../subprojects/gst-devtools/validate/plugins/flow/gstvalidateflow.c:125:65: warning: format string is not a string literal [-Wformat-nonliteral]
  if (!flow->error_writing_file && vfprintf (flow->output_file, format, ap) < 0) {
                                                                ^~~~~~
2019-08-26 12:14:47 +00:00
Aaron Boxer
e1129d2516 validate: add missing G_BEGIN/END_DECLS in validate.h 2019-08-03 20:09:32 -04:00
Tim-Philipp Müller
d8d35241fe validate: fix build with older GLib versions
g_enum_to_string() is only available in newer ones.

Add compatibility workaround for the time being to decouple
this from the decision whether to bump the GLib requirement
and what to bump it to.

https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/199

Fixes #45
2019-07-29 10:08:51 +01:00
Mathieu Duponchelle
7c255a9015 scenario: fix PAUSED position check
The way this was implemented was simply wrong, first of all checking
the position against the segment after a seek in PAUSED by a query
of the pipeline position is of limited interest, and can only work
in forward playback.

Furthermore the check was a huge blob of code that didn't even look
like it was pretending to do a good job at checking the position in
reverse playback.
2019-07-26 02:34:55 +02:00
Thibault Saunier
aea1082116 scenario: Do not dereference NULL pointer 2019-07-08 23:36:52 -04:00
Thibault Saunier
8498861a28 validate:pipeline-monitor: Connect deep properties notification only when required
This is quite expensive and can lead to an overwhelm mainloop.
2019-07-03 15:42:32 -04:00