Commit graph

999 commits

Author SHA1 Message Date
Vivek R
a2bca5de37 validate: flow: record GstRegionOfInterestMeta
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/206>
2020-06-16 16:23:33 +00:00
Thibault Saunier
f5b44d3128 validateflow: Plug leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/205>
2020-06-10 17:30:34 -04:00
Thibault Saunier
c7630833df scenario: Fix waiting for signal
The signal callback signature was just wrong and not generic leading to
crash if waiting for any signal that didn't match it. This commit fixes
it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/205>
2020-06-10 17:30:34 -04:00
Thibault Saunier
ec41001c80 scenario: Add an option to set properties on all instances
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/205>
2020-06-10 17:30:33 -04:00
Thibault Saunier
83ebecef5c validate:flow: Add a way to dump buffer content as hex
Useful in unit tests with very small buffers

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/205>
2020-06-10 17:30:33 -04:00
Thibault Saunier
3b69b73299 validate: Cleanup implementation of appsrc-push
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/205>
2020-06-10 17:30:33 -04:00
Thibault Saunier
f6e45c8c90 validate: Ensure Scenario isn't NULL when preparing action
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/192>
2020-06-06 06:00:11 +00:00
Thibault Saunier
88fcc580be validate: Make extracheck and flow part of core instead plugins
It makes things more complex and doesn't bring anything!

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/204>
2020-06-03 11:07:15 -04:00
Thibault Saunier
6a305b1e23 validate: Add a parameter to force waiting on the test clock
This allows to wait for a new buffer to reach the sink without
actually cranking that buffer, allowing to quite the test without
waiting for EOS in a 100% reproducible way

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/201>
2020-05-29 21:12:53 -04:00
Thibault Saunier
774a4a8704 validate: Error out when a config hasn't been used at all
It probably means a plugin is not available

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/201>
2020-05-29 18:16:23 -04:00
Thibault Saunier
ca8cdfd736 validate: Fix mixup in quarks usages
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/200>
2020-05-28 17:17:10 -04:00
Thibault Saunier
0f1dffdcc0 validate: Add missing return func when GLib < 2.50
CID 1463854

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/200>
2020-05-28 17:17:10 -04:00
Thibault Saunier
012288910b validate: Update documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/200>
2020-05-28 17:17:10 -04:00
Thibault Saunier
b1cf1ffebd validateflow: Add a way to configure when to generate expectations
By default, generate them whenever the file is missing but adding a way
to override that with `validateflow,generate-expectations=true` to force
regenerating them or setting `validateflow,generate-expectations=false`
to disallow generating them (on CI servers for example)

Also update the validateflow documentation to take that into account
and remove references to pipeline.json file which is now gone!

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/200>
2020-05-28 17:17:10 -04:00
Thibault Saunier
3264de6751 scenario: Minor cleanup around pipeline change state management
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/198>
2020-05-27 19:20:16 +00:00
Thibault Saunier
e1ad840494 scenario: Mark seek as done only when reaching next state
There is a race where following actions could generate a
flush-start/flush-stop dance but the state change resulting from the
seek hasn't been committed yet, leading to the ASYNC_START being
ignored by GstBin since its pending_state is not VOID when receiving
the ASYNC_START message.

Conceptually it is totally correct to consider an action done when
the state change of the pipeline is stabilized..

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/198>
2020-05-27 19:20:16 +00:00
Thibault Saunier
9f11ba5937 validate: Fix loading configs from a caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/197>
2020-05-26 19:16:26 -04:00
Thibault Saunier
cf0f1df314 flow: Use bat to color diffs when possible
Adding a function to check if can output colored logs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/197>
2020-05-26 19:16:26 -04:00
Guillaume Desmottes
f78997ec2e validate: add missing gir annotation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/194>
2020-05-25 14:42:01 +00:00
Edward Hervey
5e2df60422 validate-scenario: Initialize variable correctly
ret needs to be always reset to FALSE *before* checking attempting to load the
individual files. Otherwise there's the possibility it would silently accept an
invalid scenario name

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/196>
2020-05-22 18:00:04 +02:00
Edward Hervey
8697663d8c validate-scenario: Remove unused variable
We only need to check whether the field is present and of a given type

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/196>
2020-05-22 17:56:40 +02:00
Thibault Saunier
fa95de073b validate: Stop using g_file_peek_path
It was introduced in 2.56 so is too recent

Fixes https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/issues/51

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/195>
2020-05-15 11:28:10 -04:00
Thibault Saunier
0ffcacf325 validate: Add including support in the structure file parser
Adding proper error reporting support

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/191>
2020-05-11 17:03:49 -04:00
Thibault Saunier
d203f4251b validate: utils: Do not try to replace vars in debug info fields
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/190>
2020-05-08 20:21:16 -04:00
Thibault Saunier
dcb719d6cc validate: Fix parsing validate tests files with vars on windows
And ensure that we escape windows path in variables

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/190>
2020-05-08 20:21:16 -04:00
Thibault Saunier
b669bb0327 validate: Add support for known-issues in the .validatetest
And add some tests about remaining actions failures

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/189>
2020-05-07 09:36:03 -04:00
Thibault Saunier
da390689c9 validate: Ensure a meta structure is found in test files
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/189>
2020-05-07 00:31:45 -04:00
Thibault Saunier
619efa56a7 validate:scenario: Check remaining action on stop, not EOS
When ignoring EOS, on addition action could end up not being executed
and no error was reported which was wrong.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/189>
2020-05-07 00:31:45 -04:00
Thibault Saunier
af3006dc12 validate: Plug some leaks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/187>
2020-05-06 22:54:59 +00:00
Thibault Saunier
bb0d81fd4c validate: Add details on all g_log message reports.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/187>
2020-05-06 22:54:59 +00:00
Thibault Saunier
b65b2bc2fe validate: Add a mechanism to mark tests as skipped
And use it when a plugin is missing and the user didn't ask for
failure when it happens

And use the TAP[0] synthax to report it

[0]: https://testanything.org

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/187>
2020-05-06 22:54:59 +00:00
Thibault Saunier
b1e9e409fd validate: Enhance issue reporting from structures
And properly bail out when required
This is preparatory work for gst-test in core which will use the TAP
protocol

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/187>
2020-05-06 22:54:59 +00:00
Edward Hervey
fb71bf8fab validate-scenario: Refactor seek handling
* Store all seek values into a list of pending seeks instead
  of hardcoding some values
* Store all segments that sinks received
* Match segments to seeks when all sinks received segments with
  the same seqnum
* Detect when a seek did *not* result in segments with identical
  matching seqnums

Should allow checking for all types of seek handling, including
flush-less seeks

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/174>
2020-04-30 12:40:12 -04:00
Edward Hervey
5dafe4bb64 validate-report: Add new check for top-level seek
This issue is to detect seeks that don't result in segments
with identical seqnums. This check can be done at the top-level
scenario

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/174>
2020-04-30 12:40:12 -04:00
Edward Hervey
e05d4ac8f5 validate-pad-monitor: Post GstBaseSink SEGMENT on the bus
Allows higher-level bin or app (like validate-scenario) to know
what each sink currently has in terms of SEGMENT.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/174>
2020-04-30 12:40:12 -04:00
Edward Hervey
854826501c validate-element-monitor: Detect basesink elements
And add a macro

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/174>
2020-04-30 12:40:12 -04:00
Edward Hervey
4080cd9749 validate-scenario: Add logging for scenario lock taking/releasing
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/174>
2020-04-30 12:40:12 -04:00
Thibault Saunier
1e8a0dac2a pad-monitor: Reliably track pending seeks
Instead of overriding all values when receiving a seek, store
them as a list of expected values.

This allows handling several seeks in a row, like non-flushing
seeks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-devtools/-/merge_requests/174>
2020-04-30 12:40:12 -04:00
Thibault Saunier
ec2a139246 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>
2020-04-29 10:13:51 -04:00
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