Commit graph

397 commits

Author SHA1 Message Date
Charlie Turner
a443b921a2 validateflow: interpolate folder directories into pipeline descriptions.
Allow 'pipeline' fields in validateflow to be interpolated with
directory keys like $(medias)s.
2019-02-21 13:57:17 +00:00
Guillaume Desmottes
da22878a5f validate: baseclasses: include env variable in logged command
We were missing the env variables in the command written to the log
file, making it impossible to re-run the test later from the logs.
2019-02-11 15:17:33 +00:00
Thibault Saunier
3d3264b342 Revert "validate:launcher: Cache the result of meson introspect"
This reverts commit 05ce6d3b92.

We can't do that as it breaks meson logic to set envvars
2019-02-10 01:25:52 -03:00
Thibault Saunier
5a6307f913 validate:launcher: Do not sort tests all the time
Do it once only once it is fully populated
2019-02-09 17:25:03 -03:00
Thibault Saunier
05ce6d3b92 validate:launcher: Cache the result of meson introspect
Running it takes quite some time and we can easily cache it.
2019-02-09 17:24:13 -03:00
Alicia Boya García
e96f2ca714 New validate plugin: validateflow
validateflow can be used to check the buffers and events flowing through
a custom pipeline match an expectation file. This can be used to test
non-regular-playback use cases like demuxers handling adaptive streaming
fragment pushing.

This patch includes also new actions used for these cases:
`appsrc-push`, `appsrc-eos` and `flush` (plus `checkpoint`, which is
only available with validateflow).
2019-02-07 18:19:22 +00:00
Guillaume Desmottes
0c83ff56dd baseclass: add_validate_config: don't use self.proc_env
self.proc_env is created when starting the test but this API can be call
by generator when creating the test.
2019-02-07 17:13:02 +01:00
Thibault Saunier
e8162cc957 validate:launcher: Error out in the check testsuite if rebuilding failed 2019-02-06 21:14:13 +00:00
Mathieu Duponchelle
90c2d32030 Scenarios: override seek flags for RTSP tests
Our RTSP server is not accurate, it makes no sense to perform
accuracy checks on the client-side segments.
2019-02-02 02:08:58 +01:00
Thibault Saunier
71d2e3f418 validate: Let people know the testsuite starts running
Now that we do not print infos about successful tests when redirecting.
2019-02-01 01:24:33 -03:00
Thibault Saunier
35003bc25b validate:launcher: Do not print passing tests if not running in a tty 2019-01-31 23:47:11 -03:00
Thibault Saunier
78781de913 validate:launcher:punittest: Raise an exception if a testsuite can't be loaded 2019-01-30 15:57:13 -03:00
Mathieu Duponchelle
d5e3f4d31c TestsManager: stop displaying blacklisted tests on stdout
It's basically spam, better suited to the debug logs
2019-01-30 00:27:32 +00:00
Thibault Saunier
440055214a validate:launcher: Never print lines larger than the terminal 2019-01-29 16:09:30 -03:00
Jordan Petridis
31164cf0a6 validate: Report the full test name in the xunit file
Looks like gitlab prefers this way of representing tests as it
displays only the name field in its junit reports.

Close #32
2019-01-26 16:55:23 +00:00
Thibault Saunier
2551e8750e validate:launcher: Make baseclasses.py pep8 compliant 2019-01-26 15:54:00 +00:00
Thibault Saunier
9b69bcad08 validate:launcher: Handle launching launching a sub launcher
If you use validate-launcher in a meson testsuite, those test now
gets integrated as one unique testsuite (with a pretty long namespace).
2019-01-26 15:54:00 +00:00
Thibault Saunier
6665652cff validate:launcher: Refactor the "main" function
- Move the parser code into a `LauncherConfig.create_parser()` method
- Remove the need to pass libsdir to the _TestsLauncher object
- Extract out a `setup_launcher_from_args` function
2019-01-26 15:54:00 +00:00
Thibault Saunier
1b3867b82d launcher: Move http serveur and xvfb server to the main test runner object
No good reason for it to be in the main function
2019-01-26 15:54:00 +00:00
Thibault Saunier
3f4f815500 launcher: Cleanup the way we find python test command line
By setting it before the test base class adds the current testsuite name in the classname
2019-01-26 15:54:00 +00:00
Thibault Saunier
9cf213dee0 launcher: Fix test listing in meson VS gstcheck tests
You might select tests that match Meson but not gstcheck in which
case the 'meson only' variant is exposed but those should never exist.
2019-01-26 15:54:00 +00:00
Thibault Saunier
a3bab7c66e validate:launcher: Add %(config_path)s in the pipeline desc vars
When defining pipelines_descriptions to run test on in a `.json` file, you might
need to point to paths in the testsuite directory (for media files URIs
for example), you can now do

 `"pipeline": "filesrc location="$(config_path)s/../medias/some/file.mkv...`
2019-01-26 10:11:24 -03:00
Thibault Saunier
7befe3d033 validate:launcher: Display unix nickname of signals leading to test failure 2019-01-15 16:55:32 -03:00
Thibault Saunier
5692f8d74d validate:launcher: Fix error message about 'crashed' test 2019-01-15 16:05:41 -03:00
Guillaume Desmottes
b1f22e7130 validate: fix crash if timeout when media_descriptor is None
Some tests may not have any media_descriptor. If those were failing to
shutdown after EOS we were calling get_protocol() on None.
2018-12-17 10:34:43 +01:00
Alexandru Băluț
9a04ba5000 validate:launcher: Fix error message 2018-12-14 12:00:18 +01:00
Alexandru Băluț
b280850718 validate:launcher: Fix discovery of commands 2018-12-14 11:17:41 +01:00
Thibault Saunier
b0c0c2d846 validate:launcher: Do not CK_FORK on our test
Otherwise the process can't cleanly quit on assertion because of the way libcheck runner is implemented
2018-12-07 09:06:50 -03:00
Thibault Saunier
72995d5bbe validate: launcher: Add a way to retrieve trace without coredumpctl
Simply spnning on segfaults (like gst-launch) and catch that in
the launcher to transform the timeout into a segfault and grab a gdb
backtrace
2018-12-07 09:06:50 -03:00
Thibault Saunier
21e23c72fc validate:launcher: Do not take CK_DEFAULT_TIMEOUT into account to set the timeout
The timeout is what is set in the meson build definition otherwise we will not behave as 'meson test' which we should avoid
2018-12-06 23:17:29 -03:00
Thibault Saunier
5767d553a6 validate:launcher: Make failure as <failure> in our xunit reporter
I think it was a mistake to call them <error> as the two notions are
different (we marked failed test as "failures" in the <testuite> node).

Should make gitlab happy with our file!
2018-12-06 15:51:43 -03:00
Thibault Saunier
1c51d3499e validate:launcher: Add a GST_VALIDATE_LAUNCHER_MAIN_DIR env variable
This is generally usefull so we do not have to pass -M every time we launch the launcher

And it adds support for nesting launcher calls always respecting the provided main directory

+ Fix some new pep8 errors
2018-11-30 11:00:10 -03:00
Thibault Saunier
ec9464dd90 validate:launcher: Don't about unexisting tests when filtering tests
It was wrong
2018-11-28 10:19:52 -03:00
Thibault Saunier
b971a7cd23 validate:launcher: Fix setting meson tests as "parallel" 2018-11-28 10:11:00 -03:00
Thibault Saunier
9ab1d3b6fb validate:launcher: Avoid using not yet set variables
And make the file pep8 compliant with latest pep8 checker.
2018-11-26 10:16:12 -03:00
Thibault Saunier
4bb2648154 validate: launcher: Add a way to load pipeline tests from a scenario 2018-11-25 12:01:12 -03:00
Thibault Saunier
a28ce1b0c9 validate: Update default testsuite git repository 2018-11-22 21:06:36 -03:00
Thibault Saunier
64afff0c3e launcher:scenario: Fix the way we compute scenario path/name when paths supplied
We were just iterating over the list without any check and could end
up with a patch that was not corresponding to the actual scenario.
2018-09-08 11:13:19 -03:00
Thibault Saunier
1623f7111c validate:launcher: Just wait for a while before considering Xvfb is ready if xset is not present
This is what xvfb-run so let's consider it good enough
2018-09-07 16:19:50 -03:00
Thibault Saunier
f0cfdf9d14 validate:launcher: Use fakevideosink everywhere it makes sense. 2018-09-07 16:19:40 -03:00
Alicia Boya García
5ff299f4e7 gst-validate-launcher: Print copypaste-friendlier commands
This patch removes the quotes surrounding the command shown by
gst-validate to reproduce the issues -- which were troublesome when
copying and pasting.

It also introduces escaping for the arguments, so that the command line
can be copied and pasted in the terminal without further changes.

https://bugzilla.gnome.org/show_bug.cgi?id=796897
2018-07-30 16:13:25 -04:00
Thibault Saunier
615a372274 validate: launcher: Print some ERROR log when inspecting scenario fails 2018-07-21 11:43:40 -04:00
Thibault Saunier
4f009f4098 validate:launcher: Minor output string message 2018-07-12 19:13:21 -04:00
Edward Hervey
e0f683dde9 validate: Use 'skipped' keyword in xunit xml
It was always meant to be 'skipped' to be 100% compatible with xunit
xsl.

Makes jenkins happy again
2018-07-10 13:23:46 +02:00
Thibault Saunier
29ef55c469 validate:launcher: Stop spamming envvars in unit tests command printing.
We used to print the whole environment, making it ugly and hard to
read.
2018-07-08 17:04:25 -04:00
Thibault Saunier
69ec48feef validate:launcher: Allow retrieving coredumps from within flatpak 2018-07-01 12:55:06 -04:00
Thibault Saunier
acb3a276c8 validate:launcher: Fix the --forever switch
It was not stopping on error.

https://bugzilla.gnome.org/show_bug.cgi?id=796608
2018-06-17 08:45:23 -04:00
Thibault Saunier
d80fb50c4b validate:launcher: Add a TestManager to run python tests
Add a stupid simple testsuite made to be configured from the outside
2018-06-15 17:57:24 -04:00
Thibault Saunier
58c90448ca validate: launcher: Add support for running tests with a pushfile source
Introducing the `.media_info.push` media info extension, which is meant
to let the launcher know that those file should run with the "pushfile://"
protocol.

And allow symlinking "normal" `.media_info` to their `.pushfile` variant
so that both can share the exact same content.
2018-06-15 12:05:14 -04:00
Thibault Saunier
b2e71e1404 validate: media-check: Add a way to skip pluggin parsers
This is useful when you want to check only the demuxer output.

- Keep the information in the media file so that we can launch media-check
  with the proper arguments in the launcher. Update it accordingly.
- Refactor compare_streams to simplify it, which in the end leads to
  reporting all the issues instead of exiting on the first one.
2018-06-15 12:05:14 -04:00
Alicia Boya García
40dfb7174e gst-validate-launcher: let gdb handle SIGINT itself
Otherwise both gdb and gst-validate-launcher will react to ^C at the
same time, gdb will be killed by SIGHUP (because gst-validate-launcher
quitted in consequence of the ^C) and the terminal state will be left
garbled because readline inside gdb had disabled echo.

https://bugzilla.gnome.org/show_bug.cgi?id=796396
2018-05-25 12:59:41 +02:00
Alicia Boya García
bfa143caa9 gst-validate-launcher: disable timeouts when debugging in gdb interactively
An interactive debugging session can be going for a long time, we don't
want any timeouts in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=796397
2018-05-25 12:59:40 +02:00
Alicia Boya García
2c32ccd7a7 gst-validate-launcher: Stop in --gdb by default, add --gdb-non-stop
This patch modifies the default behavior of --gdb to not run and quit
automatically the test, but rather wait for user input. This is
usually much more convenient to debug all kinds of bugs.

The automatic run behavior has been moved to a new command switch:
--gdb-non-stop

https://bugzilla.gnome.org/show_bug.cgi?id=796389
2018-05-25 12:59:38 +02:00
Thibault Saunier
bb71fd9944 validate:launcher: Error out loudly if the testlist changes
When --fail-on-testlist-change is set.
2018-05-15 14:45:54 -04:00
Thibault Saunier
1055540d55 validate:launcher: Do not print time spent if the testsuite never started 2018-05-15 14:45:52 -04:00
Thibault Saunier
2dc7dd1257 validate: launcher: Make sure testsuites are used/configured once only 2018-05-13 19:10:59 -04:00
Thibault Saunier
ef9ff93405 validate:launcher: Add a way to check if a gst feature is present
And make sure iqa is present to run IQA tests.
2018-05-13 16:35:41 -04:00
Thibault Saunier
b00ab02254 validate:launcher: Cleanup the way we find where -validate tools are 2018-05-13 09:44:17 -04:00
Thibault Saunier
c1f89b4acb validate: launcher: Add a way to simply run SSIM checks on rendered files
We will run a simple pipeline with the IQA element to run ssim (dssim)
tests on the rendered files, comparing it with a reference file.

For now we use the very empiric 1.0 value as a ssim error threshold and
the goal is basically to detect completely broken renderings.
2018-05-13 09:44:17 -04:00
Thibault Saunier
c93f1704f8 validate: Add support for the new testbin protocol 2018-05-13 09:44:17 -04:00
Edward Hervey
58fb4f9354 validate: Remove hls.*seek_with_stop blacklisting
The issue is closed upstream (because of concentrating on decodebin3
instead), and initial forever testing seems to show the issue doesn't
happen anymore
2018-05-07 17:30:13 +02:00
Thibault Saunier
77ee198b1b validate:launcher: Add support for specifying a workdir in tests 2018-04-15 20:50:22 -03:00
Thibault Saunier
25e3b90225 validate:launcher: printc is accepting object as arguments
Make sure in all code paths those are converted to strings
2018-04-15 20:07:19 -03:00
Thibault Saunier
8382fddbe9 validate:launcher: Add a method to find tests in a TestManager 2018-04-12 23:30:19 -03:00
Thibault Saunier
55dee0b8a6 validate:launcher: Extract method to set a validate configuration on tests 2018-04-12 23:07:16 -03:00
Thibault Saunier
a70658a464 launcher: Print test number in the order they finish
Instead of the test index in the list of tests as it is
meaningless to the user and feels weird.

Also minor fix in the test name display when running with --forever.
2018-03-23 21:04:46 -03:00
Thibault Saunier
cd1c4eb44d launcher: Minor indentation issue fixes 2018-03-23 18:12:16 -03:00
Thibault Saunier
2b40c6c306 launcher: Clean up outpout
Make our stdout output simpler to follow by:
  - Not printing the tests we launch (it is not really useful in the end)
  - Using `\r` when printing the passed tests
  - Not reprinting all the test in a now useless summary
2018-03-23 18:12:16 -03:00
Thibault Saunier
3f66772fa1 check: Use meson introspect to list meson tests 2018-03-20 08:51:04 -03:00
Edward Hervey
d71d28523d validate/baseclasses: Release un-needed data when test ends
This was keeping around 500-700kB of data for each test, which was
gradually raising memory usage of a full run by 100MB+

The reports are definitely not needed, and we only need to keep
information from the subprocess env variable that we might need
later on for final reporting
2017-12-18 10:51:05 +01:00
Edward Hervey
cb04515cbd validate/baseclasses: Don't leak several hundred MB of XML
The xml-based MediaDescriptor were keeping open the XML file and the
associated ElementTree structures, resulting in memory usage of several
hundred megabytes.

Instead cache the information we need immediately and release the
XML structure
2017-12-18 09:48:21 +01:00
Edward Hervey
01a54641f9 validate: Remove protocol-specific timeouts
Since we now check position/status of pipeline at regular intevals,
we no longer need to impose a different timeout based on the
protocol used.

Avoids having 4min long timeouts for no reason (30s is enough)
2017-12-03 12:23:51 +01:00
Edward Hervey
92285ef261 validate: Use a single TCPServer for subprocess communication
Instead of creating a separate TCPServer for each test, just create
one which handles all connections in a threaded fashion.

Shaves off ~500ms per test

https://bugzilla.gnome.org/show_bug.cgi?id=791159
2017-12-03 12:23:29 +01:00
Edward Hervey
58e62f651c validate-launcher: Allow running tests out-of-order
When the --shuffle option is used, the tests will be run out of order.
This optimizes CPU utilization since it allows running synchronized
and unsynchronized tests at the same.
2017-12-03 11:42:18 +01:00
Edward Hervey
1a95559045 validate: Reduce time waiting for subprocess to stop
stopping the subprocess is done from the main thread, this would
throttle starting/stopping any tests by one second.
Start with 50ms, and gradually increase the wait between iterations
2017-12-03 11:38:08 +01:00
Edward Hervey
65e2c1567a gstvalidate: Lower timeout to check for rtsp-server to be up
Check every 100ms, avoids throttling all rtsp tests by 500ms
2017-12-03 11:38:08 +01:00
Thibault Saunier
f16b900643 validate:launcher: Launch tests in _TestsLauncher not in TestsManagaer
So that Test from several TestManager can run in parallel and thus avoid
waiting for tests from one TestManager to run the following one.,

Also by design TestsLauncher should always have been the responsible for
... launching tests.
2017-12-02 09:42:19 -03:00
Thibault Saunier
4fac7bf9fd validate: launcher: Run rtsp tests against both V1 and V2
https://bugzilla.gnome.org/show_bug.cgi?id=781446
2017-09-22 16:31:56 -03:00
Thibault Saunier
e9862b9fda validate:launcher: Allow disabling using the number of failed tests as exitcode
This is usefull on CI servers where the test results will be inspected
and the status of the build built from it.
2017-09-06 16:38:39 -03:00
Jimmy Ohn
bd0e8e410e validate: launcher: Modify the order of the parser argument
Modify the order of the parser argument before setting dir_group

https://bugzilla.gnome.org/show_bug.cgi?id=786715
2017-08-28 17:01:39 -03:00
Thibault Saunier
4dc95f0fc2 launcher: Automatically disable output coloration if not supported 2017-08-26 10:52:25 -03:00
Thibault Saunier
598128fc0c meson: Fix the way we set the testsuite version 2017-08-26 09:28:51 -03:00
Thibault Saunier
2c6c25d4bf validate:launcher: Use the number of failed test as exit code
We used to always return 0, which was not right!
2017-08-18 11:37:28 -03:00
Thibault Saunier
cb99482b9a launcher: Avoid exceptions when inspecting renders files
We were a bit to strict on the Exception types which lead to
the launcher failling itself when it shouldn't
2017-08-14 16:57:50 -03:00
Tim-Philipp Müller
6b661f394f meson: fix a few meson warnings
WARNING: The variable(s) 'DATADIR', 'LIBDIR' in the input file
  'subprojects/gst-devtools/validate/launcher/config.py.in' are not
  present in the given configuration data
WARNING: Passed invalid keyword argument "scanobj_args". This will
  become a hard error in the future.
WARNING: Keyword argument "install" defined multiple times. This
  will be a an error in future Meson releases.
2017-08-10 14:35:09 +01:00
Edward Hervey
9ae20ee3e0 validate: Re-enable mxf op2b tests
https://bugzilla.gnome.org/show_bug.cgi?id=785119
2017-07-25 09:55:02 +02:00
Thibault Saunier
8ab723b153 validate:launcher:check: Make sure to register tests from the testsuite
Instead of having them listed from the app manager. This is needed
to avoid backtrace as tests now have to be register when setting up
the testsuite.
2017-07-19 11:49:54 -04:00
Thibault Saunier
1a28e7b043 validate: Factor out a method to set properties on elements in utils
Make sure to use it where appropriate and add some logging when
setting an object property from an action.

And use the valgrind.conf to set all the properties instead of having
a mixture of a config scenario and the config file (making sure the
max-lateness is set on any sink)
2017-07-19 11:34:19 -04:00
Edward Hervey
1cfe980044 validate: Blacklist op2b mxf files
See https://bugzilla.gnome.org/show_bug.cgi?id=785119
2017-07-19 15:47:28 +02:00
Thibault Saunier
2177d8589c validate:launcher: Error out if no testsuite could be loaded 2017-07-18 12:09:13 -04:00
Thibault Saunier
2cf93f491b validate: launcher: Namespace test name with the testsuite name
Also allowing users to pass test names directly
2017-07-18 10:54:53 -04:00
Thibault Saunier
f9ef2bc56a validate: launcher: Properly use TestsLauncher.list_test to load tests
Otherwise we might skip check_defined_tests.
2017-07-18 10:54:21 -04:00
Sebastian Dröge
c8cd695bb9 validate: Un-blacklist scrub_forward_seeking.op2b-mpeg2-wave_hd_mxf
It works now after various mxfdemux changes.

https://bugzilla.gnome.org/show_bug.cgi?id=764025
2017-07-14 10:37:31 +03:00
Edward Hervey
ee72ae8913 gstvalidate: Re-allow tests that should be fixed 2017-07-13 08:46:05 +02:00
Thibault Saunier
40a08e6080 validate: launcher: Add some missing env variables in command to launch test 2017-07-11 10:11:49 -04:00
Thibault Saunier
c540601ed0 validate:launcher: Do not check ModuleNotFound exception
It is a subclass of ImportError and is avalaible only since 3.6
https://ci.gstreamer.net/job/pitivi-flatpak/626/console
2017-06-28 15:54:13 -04:00
Thibault Saunier
3b20a1ccde validate:launcher: Disable seek with stop on RTSP streams
It is actually not supported
2017-06-28 13:02:33 -04:00
Thibault Saunier
831464d96f validate:launcher: Avoid useless and expensive deep copies 2017-06-27 16:50:35 -04:00
Thibault Saunier
8ea68e9e06 validate:launcher: Speed up xml parsing using lxml if avalaible 2017-06-27 16:50:35 -04:00
Thibault Saunier
2f35acf558 validate:launcher: Enhance command printing when using a server
So it can be copy pasted and work
2017-06-20 15:46:15 -04:00