Commit graph

589 commits

Author SHA1 Message Date
Thibault Saunier
36f9ba8f52 launcher: Allow user to set media-files directory
That was broken by 71dee6c384
2014-03-19 18:43:38 +01:00
Thibault Saunier
6d8ff8a92a tools:validate: Start printing position on ASYNC_DONE
As this is what is done in the scenarios.
2014-03-19 17:45:36 +01:00
Edward Hervey
12ccebe0a9 launcher: Don't hardcode option defaults
Since they are relative to other options, we need to post-process them
to get the proper value.

Fixes using the launcher with non-default MAIN_DIR
2014-03-19 18:09:09 +01:00
Edward Hervey
c39a44441e launcher: Warn if MAIN_DIR isn't present
And move blacklist file listing to further down
2014-03-19 17:13:14 +01:00
Edward Hervey
e62a2ce4c4 launcher: No need to start a web server when listing tests
It's not needed and makes listing faster.
Also sort the list of tests
2014-03-19 17:04:14 +01:00
Edward Hervey
71dee6c384 launcher: --sync: Only update/clone git repo if specified
Allows:
  * handling non-git-based asset directory
  * working offline
  * working without forcing updates
2014-03-19 17:03:05 +01:00
Edward Hervey
34a5946e6b validate-scenario: Handle non-set env variable
Nothing guarantees it's present/set
2014-03-19 17:02:03 +01:00
Thibault Saunier
50d3d08ab5 validate:scenario: Do not be strict about position after not accurate seek 2014-03-12 15:23:33 +01:00
Thibault Saunier
fbf787889f validate:scenario: Cleanup output and pass into gst-indent 2014-03-12 14:24:02 +01:00
Thibault Saunier
1bc0a687ee validate:scenario: Cleanup output of --list-scenarios 2014-03-12 12:21:38 +01:00
Thibault Saunier
e355a17f71 validate: scenario: Load scenario if the name is actually a path to a file 2014-03-12 12:04:52 +01:00
Thibault Saunier
e75e7df0ac validate: tools: Fix path to media folder 2014-02-19 14:39:30 +01:00
Thibault Saunier
07b968a4f6 validate:tools: Clean test between runs when running forever 2014-02-19 14:34:10 +01:00
Thibault Saunier
f6bf92cbc9 validate: Do not check result furthers if alredy set as passing 2014-02-19 14:34:10 +01:00
Thibault Saunier
33aae792f6 validate:scenario: Pass into gst-indent 2014-02-19 14:34:08 +01:00
Thibault Saunier
5e0e092112 validate: Add actions to the actions list only when they are fully parsed
Otherwize in some corner cases they can be executed before they are actually parsed
2014-02-19 14:32:47 +01:00
Thibault Saunier
2f44d15e0b validate: Ignore EOS actions that can not be executed 2014-02-19 14:32:47 +01:00
Thibault Saunier
68cbc15f35 validate: Handle various paths in GST_VALIDATE_SCENARIOS_PATH 2014-02-18 21:07:31 +01:00
Thibault Saunier
63f8034bec validate:scenario: Make GstValidateAction a GstMiniObject 2014-02-18 21:07:31 +01:00
Thibault Saunier
04029cb065 validate: Move enums and flags deserialization from scenario to utilities
This way it can be reused.
2014-02-18 21:07:31 +01:00
Thibault Saunier
5cfafb4910 validate:scenario: Make the pipeline puiblic
This way people can access it from outside the main action implementation.
2014-02-18 21:07:31 +01:00
Thibault Saunier
1189c48ff8 validate:launcher: Avoid running useless tests
For example we should not check if duration are equal when transcoding
with scenario set.

Also checking if position is in the seeked segment should be done at
a lower level
2014-02-18 21:07:31 +01:00
Thibault Saunier
d377158b42 validate:launcher: Avoid seeking in output files to parse them
Tihs creates issue and missing content.
2014-02-18 21:07:31 +01:00
Thibault Saunier
32d9d5dc44 validate:launcher: Properly classify test for media check 2014-02-18 21:07:31 +01:00
Thibault Saunier
0449817c11 validate:launcher: Handle issue with unknown framerate in HLS while transcoding 2014-02-18 21:07:31 +01:00
Thibault Saunier
c3adb05b2a validate:tools: Handle cases were EOS does not stop the pipeline in the launcher
+ Fix parsing of GstClockTime
+ Avoid using play_15s scenario when not necessary
2014-02-18 21:07:31 +01:00
Thibault Saunier
90d9a686d7 validate: tools: Use the new scenario discovering fearure in the launcher 2014-02-18 21:07:31 +01:00
Thibault Saunier
ba717f6237 validate: Update all scenario to use the new description feature
+ Fix minor issues in scenario files
2014-02-18 21:07:31 +01:00
Thibault Saunier
4467b27b9f validate: Add a way to save details about avalaible scenarios in a file 2014-02-18 21:07:31 +01:00
Thibault Saunier
9e66ac00f6 validate: Add a way to add a "description" to scenario files
Print details about the descriptions when listing scenario in a KeyFile
format

The description can contain any information about the scenario such as its duration before
EOS, how long the pipeline needs to be so the scenario can be applied...etc
2014-02-18 21:07:31 +01:00
Thibault Saunier
efc6938d01 validate: tools: Init gst-validate before listing scenarios
And return 0 when only listing scenarios
2014-02-18 21:07:31 +01:00
Thibault Saunier
6ab7f17386 validate:scenario: Handle backslashes in scenario files 2014-02-18 21:07:31 +01:00
Thibault Saunier
904cdd6411 validate:tools: Rework the way we handle options
Make groups so it is easier for users to find what they look for
By default have 1 single directory where everything is oututed
(main-dir)
Add a way to specify how and where to look for remote assets
2014-02-18 21:07:31 +01:00
Thibault Saunier
ead3eb98a4 validate:tools:launcher: Take into account the position value when rendering
When rendering a files we try to use the size of the outputed file to
determine wether we are timeout or not, but if that fails
try to check the position
2014-02-18 21:07:31 +01:00
Thibault Saunier
10c192f693 validate: Better organize rendered files 2014-02-18 21:07:31 +01:00
Thibault Saunier
ca12b78be3 validate:tools: Use regex for parsing when appropriate 2014-02-18 21:07:31 +01:00
Thibault Saunier
df712e9404 validate:toold: Add a --output-dir parametter 2014-02-18 21:07:31 +01:00
Thibault Saunier
27e3758918 validate:tools: Keep file extension in test classnames
+ add test "namespace" in transcoded files
2014-02-18 21:07:31 +01:00
Thibault Saunier
2718923ae5 validate:tools: Add a class to back pipeline creation in gst-validate 2014-02-18 21:07:31 +01:00
Thibault Saunier
5927a6d8d8 validate:tools: Define supported protocols in an enum 2014-02-18 21:07:31 +01:00
Thibault Saunier
2f689fab73 validate: toold: Properly define scenario properties 2014-02-18 21:07:30 +01:00
Thibault Saunier
cd18609763 validate: Rename simple_backward to reverse_playback as this is what it does 2014-02-18 21:07:30 +01:00
Thibault Saunier
1ecd26eef6 validate:tools: Add namespace in apps global variables
Avoiding conflicts
2014-02-18 21:07:30 +01:00
Thibault Saunier
932fcaf9b8 validate:tools: Allow user to append paths to medias 2014-02-18 21:07:30 +01:00
Thibault Saunier
5e96c79000 validate:tools: Make use of the new seek_with_stop scenario 2014-02-18 21:07:30 +01:00
Thibault Saunier
cd098eb28c validate:tools: Implement the logic of validate ouput parsing in the baseclass
+ Add some logic to check that we are mot playing outside wanted segment
2014-02-18 21:07:30 +01:00
Thibault Saunier
2c52d6374c tools:validate: Make default blacklist handled by managers themselves 2014-02-18 21:07:30 +01:00
Thibault Saunier
7eb1ebde6d validate: data: Avoid using seek.stop time when not necessary
Instead send an EOS.
And add a seek_with_stop scenario to test that particular feature
2014-02-18 21:07:30 +01:00
Thibault Saunier
7ab0447227 validate:tools: Only discover files with media-check 2014-02-18 21:07:30 +01:00
Thibault Saunier
a406ebb4c2 validate:tools: Add a 'discover-only' option to media-check 2014-02-18 21:07:30 +01:00
Thibault Saunier
a61ebe671e data: Let playback until the end on last seek of seek_forward if duration < 30s 2014-02-18 21:07:30 +01:00
Thibault Saunier
1a9119cb33 validate: tools: Add a --fatal-error option to the launcher 2014-02-12 11:23:25 +01:00
Thibault Saunier
2520f4f110 validate: tools: Implement the notion of hard timeout
Allowing to define timeout that is not relative to the last observed number.
2014-02-12 11:23:25 +01:00
Thibault Saunier
2391a56714 validate: tools: Create a class for scenarios 2014-02-12 11:23:25 +01:00
Thibault Saunier
ba1f428351 validate: tools: Change timeouts depending on used protocol 2014-02-12 11:23:25 +01:00
Thibault Saunier
8b8562ea85 validate:tools: Implement Buffering support in the various tools 2014-02-12 11:23:23 +01:00
Thibault Saunier
b3c71bba02 validate:tools: Blacklist some scenario/protocol combinations
And add the option for user to easilly blacklist tests
2014-02-06 12:02:59 +01:00
Thibault Saunier
a88d54aec2 validate: Plug a leak in validate-reporter 2014-02-06 12:02:59 +01:00
Thibault Saunier
7b236c96bf validate:tools: Do not forget to give a ref for reporter's reports
Also enhance a bit report 'wording'
2014-02-06 12:02:59 +01:00
Thibault Saunier
3bce8f8966 validate:tools: Print test result in the terminal after the end of each test 2014-02-06 12:02:59 +01:00
Thibault Saunier
5d172e159e scenario: Enhance explanation about seek execution failure 2014-02-06 12:02:59 +01:00
Thibault Saunier
299a677f09 validate:tools: Add an option to run testforever 2014-02-06 12:02:59 +01:00
Thibault Saunier
d9386f7542 validate: tools: Cleanup the way we return code in position query 2014-02-06 12:02:59 +01:00
Thibault Saunier
d000ca62a4 validate:tools: Use the same semantic for all tests classnames 2014-02-06 12:02:59 +01:00
Thibault Saunier
ac92d5b428 scenario: Do not remove GSource if it has never been set 2014-02-06 12:02:59 +01:00
Thibault Saunier
705f8e7766 data: Add a scenario where we send EOS after 15secs if the duration is > to that 2014-02-06 12:02:59 +01:00
Thibault Saunier
c0673d7eea validate:tools: Add support for testing http streams locally 2014-02-06 12:02:59 +01:00
Thibault Saunier
c2e5c10767 validate:tools: Some cleanup in gst-validate test launcher 2014-02-06 12:02:59 +01:00
Thibault Saunier
33a744b688 validate:tools: Add actuall tests for media checking 2014-02-06 12:02:58 +01:00
Thibault Saunier
a3e7342eef validate: tools: media-check: When comparing with a file just compare
We do not want to know if the file is seekable etc, but in that case we
want to see that the results are stable throughout the various runs

Also make sure to report an understandable error if the media file info
could not be parsed
2014-02-06 12:02:58 +01:00
Thibault Saunier
677e111f0b validate: tools: Do not dot the pipeline every 50ms, it is a bit exessive 2014-02-06 12:02:58 +01:00
Thibault Saunier
d485180074 validate:tools: Return an exit code != 0 if pipeline can't go to playing
And give some information to the user about why the return code is !=0
everywhere it happens
2014-02-06 12:02:58 +01:00
Thibault Saunier
1c614b9ed9 validate:tools: Add informations about the test in the log files 2014-02-06 12:02:58 +01:00
Thibault Saunier
a6f3d5270c validate:tools: Remove reference to get_backtrace which is not implemented
+ Enhance Message about launched apps
2014-02-06 12:02:58 +01:00
Thibault Saunier
26e3a9e3c5 validate:tools: Do not duplicated name in the classname in xunit reports 2014-02-06 12:02:58 +01:00
Thibault Saunier
654bacebc9 validate:tools: Do not check if position > duration
This is actually done by the scenario themselve. Instead if it is the
case, we return 0, this way it will timeout if it happens too many times
concecutively
2014-02-06 12:02:58 +01:00
Thibault Saunier
6bd9177205 validate:tools: Properly inform the user about the log location when test fails 2014-02-06 12:02:58 +01:00
Thibault Saunier
eb23274a5b validate:tools: Add an option to generate .media_info files
So we can properly choose what media should be tested only placing
media_file as needed.
2014-02-06 12:02:58 +01:00
Thibault Saunier
32e1acbf88 validate:tools: use more scenarios in gst-validate launcher
And ensure that the list does not get mixed up with as we are sharing
"symboles" between all the files
2014-02-06 12:02:58 +01:00
Thibault Saunier
49cca6a329 validate:tools: Play the entire file in simple_backward 2014-02-06 12:02:58 +01:00
Thibault Saunier
6fcd2173eb validate:tools: Fix the fast forward scenario to handle any file duration 2014-02-06 12:02:58 +01:00
Thibault Saunier
8e81727b87 validate:tools: Do not try to transcode images 2014-02-06 12:02:58 +01:00
Thibault Saunier
9eb665dddf validate: Properly handle images in the media-info helper
In the case of images we should not check reverse playback, fast
forward etc...

We also should keep the information
2014-02-06 12:02:58 +01:00
Thibault Saunier
32e7b9a55e validate:tools: Minor cleanups 2014-02-06 12:02:58 +01:00
Thibault Saunier
38615bcae2 validate:tools: Fix classname in gst-launch transcoding tests 2014-02-06 12:02:58 +01:00
Thibault Saunier
dc29cc2857 validate:tools: Properly name the project launcher in the report 2014-02-06 12:02:58 +01:00
Thibault Saunier
0b3b456f6a validate:tools: Create the rendering directory if it does not exist 2014-02-06 12:02:58 +01:00
Thibault Saunier
8697dd3da4 validate:tools: Add an option to desativate ANSI colors
And enhance some debugging output
2014-02-06 12:02:58 +01:00
Thibault Saunier
eae7e94f44 validate:tools: Remove our dependency to PyGobject 2014-02-06 12:02:58 +01:00
Thibault Saunier
0c535ef9cf validate:tools: Do not forget to add Makefile.am and main.py 2014-02-06 12:02:58 +01:00
Thibault Saunier
bd3aaded49 validate:tools: Enhance the way we detect if ges-launch can be used
We make sure it has been compiled against gst-validate
2014-02-06 12:02:58 +01:00
Thibault Saunier
c7aa259c78 validate:tools: Set video/webm instead of video/x-matroska as caps for webm
+ some mirore indentation cleanups
2014-02-06 12:02:58 +01:00
Thibault Saunier
384dd33843 validate:tools: Do not forget to keep our ref to file_info g-v-transcode 2014-02-06 12:02:57 +01:00
Thibault Saunier
446e5c88c2 validate:tools: Cleanup how we check result of rendering test
Factor out a method in the utils, and make use of it for both ges-launch and
gst-validate-transcode
2014-02-06 12:02:57 +01:00
Thibault Saunier
ff30c6ba3c validate:tools: Don't give file duration as timeout for gst-validate
We use the other mean letting us actually control the process
advancement.
2014-02-06 12:02:57 +01:00
Thibault Saunier
cdff1c93ca validate:tools: Veryfy test manager are operationnal before using them 2014-02-06 12:02:57 +01:00
Thibault Saunier
e30f6372f9 validate:tools: Move the main function in a dedictaed file 2014-02-06 12:02:57 +01:00
Thibault Saunier
c33d10470f validate:tools: Print some statistic at the end of the test run 2014-02-06 12:02:57 +01:00
Thibault Saunier
d8fc68479c validate:tools: Print position every 50ms in gst-validate 2014-02-06 12:02:57 +01:00
Thibault Saunier
ea7ae57d3b validate:tools: Rename files around and integrate into autotools
File distribution used to be messy, clean it all up. Also make sure the
launcher is integrated into the autotools.
2014-02-06 12:02:57 +01:00
Thibault Saunier
ac9820a435 validate: tools: Enhance error message for GstValidate tests 2014-02-06 12:02:57 +01:00
Thibault Saunier
1f3432a33e validate: tools: Concider timeouts as errors when printing tests 2014-02-06 12:02:57 +01:00
Thibault Saunier
dac5b38a4d validate: tools: Refactor and add a GstValidateTranscodeTest class 2014-02-06 12:02:57 +01:00
Thibault Saunier
e591882794 validate: launcher: add the debug logger from pitivi
It is way more powerfull, simple to use and usefull
than the stock python one and has been proved to work reliably
2014-02-06 12:02:57 +01:00
Thibault Saunier
b51e143fdf validate: tools: Unref the pipeline before the runner and monitor
Avoids segfault in some cases, and monitors and runners have week ref on
their targets.
2014-02-06 12:02:57 +01:00
Thibault Saunier
0d6d397e30 validate: tools: Add a gst-validate test manager 2014-02-06 12:02:57 +01:00
Thibault Saunier
7d0a6efaff validate: tools: media-info: Fixes in the media file descriptor parsing code
We used to always fail when the user was passing something not NULL as err
2014-02-06 12:02:57 +01:00
Thibault Saunier
e9b2967504 validate: tools: Cleanup test launcher tool
Previous commit was not meant to be pushed and those two should have
been fixed up together, sorry for the mistake
2014-02-06 12:02:57 +01:00
Reynaldo H. Verdejo Pinochet
8c39dbfaa8 validate: fix parallel build
Without this, parallel building with > 2 jobs fails.
Also, LDFLAGS should not contain -l flags but _LIBADD.
2014-01-30 17:26:16 -03:00
Reynaldo H. Verdejo Pinochet
463ca62ab2 validate: drop unneeded stdio include 2014-01-30 15:47:15 -03:00
Thibault Saunier
b4a2ca6286 Add a test launcher tool 2013-12-31 11:45:07 +01:00
Lubosz Sarnecki
e8db3c67b9 validate: fix installation
* install headers
* fix libname in pk file
2013-11-25 16:56:11 -03:00
Vincent Penquerc'h
70931813ad validate-scenarios: list scenarios in GST_VALIDATE_SCENARIOS_PATH
GST_VALIDATE_SCENARIOS_PATH was used only for loading scenarios,
so any in that path would not be listed by -l.

Change-Id: If3cb94867ef3876933bda02477675c8ccf67baaf
2013-11-25 16:56:11 -03:00
Thibault Saunier
e9dee065f7 tools: transcoding: Avoid reencoding unless explicitely specified 2013-11-25 16:56:09 -03:00
Thibault Saunier
a8ae32df6d pad-monitor: Do not concider TIME_NONE as 0 for serialized events
In case we have serialized events right after a buffer that had no
timestamp set we concider that last timestamp was 0, but we can
actually not concider the timestamp at all in that case as it is
only "meaningless value".
2013-11-25 16:55:25 -03:00
Thibault Saunier
1c3340ecbb tools: Simplify the setting of action scenario vs config scenario
This make it easier for user to understand the difference between
the two concepts and avoids confusion.

Change-Id: Ib42913722c93a1e7e3c8b156173c458230946592

Conflicts:
	validate/tools/gst-validate-transcoding.c
	validate/tools/gst-validate.c
2013-11-25 16:55:25 -03:00
Thibault Saunier
9dfee4dffa scenario: Do not execute anything when listing scenarios 2013-11-25 16:55:25 -03:00
Thibault Saunier
71758d49da scenario: Add a "set-feature-rank" config action
This action can be used to change the rank of a particular element,
so you can force a particular element to be used when using
autoplugging elements (such as decodebin, encodebin, and friends)
2013-11-25 16:55:25 -03:00
Thibault Saunier
77bba657d1 scenario: Add support for "config" actions, actions executed at parse time
This type of actions is used to change some parametter on GStreamer
core and it plugins, it can be fore example, to change the rank of a
plugin or things like that.
2013-11-25 16:55:25 -03:00
Thibault Saunier
684eb19267 validate-transcoding: Dot pipeline on error 2013-11-13 18:46:15 -03:00
Thibault Saunier
74b86f7793 Properly link against gstreamer-video as it is now needed 2013-10-14 11:25:39 -03:00
Thibault Saunier
123ecb57c1 media-info: Do not use GST_PTR_FORMAT with g_print
Fix compilation
2013-10-14 11:20:03 -03:00
Thibault Saunier
3990d7716c data: Avoid races in the scrub_forward seeking scenario
Make sure that it does not last too long if the file is long (scrubing
on 10 secs maximum), and make sure that we do not end up seeking after
the max duration
2013-10-14 11:07:03 -03:00
Thibault Saunier
182f4e9a41 report: Set refcount=1 when creating a report
As it should start with 1 reference, not 0
2013-10-14 11:05:58 -03:00
Thibault Saunier
f8b4235e33 scenario: Add an action that checks the "force-key-unit" event execution 2013-10-09 14:24:42 -03:00
Thibault Saunier
10d1c4560e scenario: Make the get_clocktime helper a public method
So it can be reused outside of the core code
2013-10-09 09:33:06 -03:00
Thibault Saunier
4d59a2720e pad-monitor: Do not try to compare 2 not fixed values
There is no reliable way of checking those values in the case they
are not fixed, let's just make sure we get fixed values before
executing the check
2013-10-07 19:47:15 -03:00
Thibault Saunier
c2b58f347e data: Add an adaptive video framerate and size scenario 2013-10-07 17:40:54 -03:00
Thibault Saunier
464b008421 data: Add an adaptive video framerate scenario 2013-10-07 17:18:37 -03:00
Thibault Saunier
2580de34c5 data: Add a scenario where we change the video size on during playback 2013-10-07 15:57:30 -03:00
Thibault Saunier
10442def2f transcoding: Add a new action to change restriction caps at runtime 2013-10-07 15:57:30 -03:00
Thibault Saunier
75d7450e19 transcoding: Fix the way we get pad caps 2013-10-07 15:57:29 -03:00
Thibault Saunier
2b58bff057 data: Set seeks to accurate+flush by default 2013-10-05 13:36:21 -03:00
Thibault Saunier
b20166ff23 scenario: Pass through gst-indent 2013-10-05 13:36:05 -03:00
Thibault Saunier
820ebe3b26 scenario: Use g_error instead of exit (0) 2013-10-05 13:36:05 -03:00
Thibault Saunier
045cc47dcc scenario: Factor out function to get GstClockTime out of a structure 2013-10-05 13:36:04 -03:00
Thibault Saunier
4cea878563 scenario: Use a weak ref to the pipeline
We are listening to it, we should not be owning a ref to it.
2013-10-05 13:36:04 -03:00
Thibault Saunier
7e1249f089 runner: Use "18" as exit code in case of error
It is a random number, but it will in most cases give people a hint
that gst-validate reported a critical issue, and thus set the return
code, only by looking at it

Also make use of gst_validate_runner_print() in
gst-validate-transcoding.c as we were copy pasting that method there.
2013-10-05 13:36:04 -03:00
Thibault Saunier
ae641d0353 scenario: Handle formulas in playback_time
And port seek forward/backward scenarios to relative seeking
2013-10-05 13:36:04 -03:00
Thibault Saunier
e24645b133 scenario: Check that all action were properly executed 2013-10-05 13:36:04 -03:00
Thibault Saunier
c9ee576e8e scenario: Add the notion of repeated actions 2013-10-05 13:36:03 -03:00
Thibault Saunier
a89f32725b utils: Add util functions to parse simple mathematical expressions
And make use of it to set the start of a seek
2013-10-05 13:19:14 -03:00
Thibault Saunier
75356d4bbe scenario: Error out and exit when we fail loading a scenario 2013-10-05 13:19:14 -03:00
Olivier Crête
75e1f5040a gst-validate-scenario: Only typedef the struct once
Some gcc versions don't like the typedef being done twice
2013-10-03 18:14:29 -04:00
Vincent Penquerc'h
bb124f787d scenario: do not set default seek flags
Seeks will be done with no particular flags, unless specified
in the scenario.
2013-10-03 05:32:54 -04:00
Olivier Crête
3a6f42bf67 gst-validate: Don't use the GOptionContext after freeing it 2013-09-30 09:52:07 -04:00
Thibault Saunier
c469f9b2a4 pad-monitor: Check if channel-mask is present only if channels > 2
As it is not a mandatory field otherwize

https://bugzilla.gnome.org/show_bug.cgi?id=708499
2013-09-21 00:34:05 +02:00
Thibault Saunier
42857faaae scenario: Add GST_VALIDATE_SCENARIOS_PATH environment variable
So you can specify the PATHS where to look for scenario files
2013-09-21 00:32:52 +02:00
Thiago Santos
720010f073 scenarios: add 2 new scenarios for seeks with different seek types
They test seeks that only update the stop or the start position, some
demuxers seem not to handle the case where start type is set to None.
2013-09-20 15:18:35 -03:00
Thiago Santos
e3e463c0cc validate-scenario: track position query results closer
Always keep probing the pipeline for the current position and compare
with the latest requested seek segment to detect if the seek boundaries
are being respected
2013-09-20 15:18:35 -03:00
Thibault Saunier
b4a711c568 scenario: Make it possible to define mandatory fields
And give a descrpition for actions
2013-09-17 18:38:31 -03:00
Vincent Penquerc'h
ccc3f8d696 scenario: add a track switch command, and an audio track switch test
The "switch-track" command can be used to switch tracks. The "type"
argument selects which track type to change (can be "audio", "video",
or "text"). The "index" argument selects which track of this type
to use: it can be either a number, which will be the Nth track of
the given type, or a number with a "+" or "-" prefix, which means
a relative change (eg, "+1" means "next track", "-1" means "previous
track").

Conflicts:
	validate/gst/validate/gst-validate-scenario.c
2013-09-17 18:38:31 -03:00
Thibault Saunier
f0ef3803dd scenario: Make it possible to register action parsing funcs before init 2013-09-16 18:49:31 -03:00
Thibault Saunier
f85983a043 validate: Add .pc files so applications can link against us 2013-09-16 18:49:31 -03:00
Thibault Saunier
8a9e9a7fd7 data: Port remaning scenario files to new format
And add support to user declared timestamps -1.0 as GST_CLOCK_TIME_NONE
2013-09-13 12:03:44 -03:00
Thibault Saunier
ea1f0a64f2 scenario: Rework scenarios to be: 1- Simpler to write them, 2- extendible
Make the scenario files a list of GstStructure-s as strings
2013-09-09 19:31:21 -03:00
Thibault Saunier
711946879e bin-monitor: Add a way to specify pipelines on which to set scenarios
When used with LD_PRELOAD,  the application might use various pipelines
for several different thing, we need to make it possible to spcify a
specific pipeline (or set of pipelines) on which to run the scenario.

The format is in the form of:
            scenario_name:pipelinename_pattern*
2013-09-09 19:07:32 -03:00
Thibault Saunier
5cea134655 scenario: Try to run scenarios in development first 2013-09-09 19:01:44 -03:00
Edward Hervey
4dfecb6ee1 Adapt submodule usage for gst-devtools 2013-09-09 17:40:36 +02:00
Edward Hervey
746b6f41b2 tools: Update .gitignore for tools move 2013-09-09 15:36:15 +02:00
Thiago Santos
24b6284d17 pad-monitor: avoid false positives when a seek fails
Remove the expected seqnums for events when a seek fails, preventing
false positives at the final report
2013-09-05 16:15:40 -03:00
Vincent Penquerc'h
fefc5ffb41 monitor-preload: schedule a report printout at exit
Conflicts:
	tools/gst-validate.c
2013-09-05 13:40:41 -03:00
Vincent Penquerc'h
7223b183f3 gst-validate: ensure the top level element is a pipeline
For instance, "fakesrc" will return a fakesrc, not a pipeline.

This is similar to what gst-launch does, and avoids calling
pipeline API on a non pipeline object (and thus asserting).
2013-09-05 13:40:39 -03:00
Vincent Penquerc'h
9cf4857776 gst-validate: do not try to use a pipeline which failed to create
Instead, error out properly with the actual error, if available.
2013-09-05 13:40:35 -03:00
Vincent Penquerc'h
3019586677 gst-validate: initialize gst/glib before use in scenario listing
Also ensure that if just -l is passed, we don't try creating a
non existent pipeline.

This makes gst-validate -l work properly again.
2013-09-05 13:37:39 -03:00
Thiago Santos
789ea6e9d5 pad-monitor: fix typo on macro usage
Pass the correct variable to macro
2013-09-05 11:47:21 -03:00
Thiago Santos
1860712098 pad-monitor: allow flushing flow returns when pad is flushing
It should always be acceptable to return GST_FLOW_FLUSHING when the
pad is flushing
2013-09-05 11:46:46 -03:00
Thiago Santos
a1775e75e5 pad-monitor: removing bad check
Elements are allowed to accumulate segments, they don't have to push
1:1 segments as they receive
2013-09-04 08:51:54 -03:00
Thiago Santos
25c55501a0 pad-monitor: buffer timestamp ranges check
Improve buffer timestamp range check:

* Only do it for encoders or decoders
* Audio has an acceptable tolerance of 100ms

To do this, keep track of the caps on the pad and store
if it is dealing with audio or video
2013-09-03 15:35:36 -03:00
Thiago Santos
26cff77b72 pad-monitor: move caps check to common event handling
Allows both src and sink pad to keep track of the current caps, but
the duplicated caps check is still only applied to sink pads as
src pads can push the same caps multiple times when it isn't linked
2013-09-03 15:17:05 -03:00
Thiago Santos
bd0f19c105 pad-monitor: fix reference handling for expired events list 2013-09-02 20:41:35 -03:00
Thiago Santos
7154f280b5 docs: update and improve
Thanks to Thibault Saunier for most of the explanatory texts
2013-09-02 16:09:07 -03:00
Thiago Santos
2e216818bd Replacing mentions of qa with validate 2013-09-02 13:22:51 -03:00
Edward Hervey
cc65145eb1 pad-monitor: Check if iterator exists before trying to use it 2013-09-02 12:18:07 -03:00
Edward Hervey
788054bda7 pad-monitor: make debug log more readable
Use pad as the debug object to make logs more meaningful.

Also adds a FIXME note
2013-09-02 12:15:24 -03:00
Edward Hervey
fb58e16c5a element-monitor: protect agains elements that have no klass 2013-09-02 12:11:25 -03:00
Thiago Santos
ea903da1c7 pad-monitor: use activate-mode function to detect when to clear pad data
Clear as much as a flush-stop when pad is deactivated
2013-09-02 12:05:46 -03:00
Edward Hervey
d2edb59a24 WIP: pad-monitor: Fix serialized event order check 2013-09-02 10:47:32 -03:00
Thiago Santos
fef4eba9a2 pad-monitor: also track eos event that should be emitted after a seek
When seeking out of the media file length, the element should push an
EOS with the same seqnum of the seek event
2013-09-02 10:46:55 -03:00
Thiago Santos
390b54f40d scenario: add missing space 2013-09-02 10:46:42 -03:00
Edward Hervey
78e1cb82da validate: prettify output of results
Makes the result a bit more readable than a compact multi-line list.

FIXME: Figure out how to print the description of the issues (which can
spawn multiple lines) in a nice way.
2013-09-02 10:03:07 -03:00
Thiago Santos
adca72b069 scenario: add missing line break after print 2013-08-29 14:27:34 -03:00
Thiago Santos
713da78201 pad-monitor: avoid tracking tag events
Tag events are hard to track and check if properly serialized because
they mutate too much inside elements. There is no reliable way currently
to match a tag event pushed into an element and another tag event
leaving the element (other than if the pointers are actually the same).
2013-08-29 14:26:05 -03:00
Thiago Santos
1c874d175e pad-monitor: only do combined return checks for demuxers
Seems like the only place that gstreamer elements should really
care about it
2013-08-29 11:48:33 -03:00
Thiago Santos
a426198916 pad-monitor: add two useful macros for readability
Avoids using long macros and having to check for pad-monitor parent
existance
2013-08-29 11:47:58 -03:00
Vincent Penquerc'h
f5f4635d0e media-info: add a track switching test
This test will find the first input selector with more than one
sink pad, and cycle through them till it gets back to the original
one. Five seconds between switches. The test checks that some data
was sent from the input selector when each of the sink pads was
selected.
2013-08-29 10:43:03 -03:00
Thibault Saunier
f893bb7534 scenario: Print on stdout when we seek 2013-08-28 19:14:31 -03:00
Thibault Saunier
1dcfaea37f validate: Report an issue result of query state that position > duration 2013-08-28 19:00:58 -03:00
Thibault Saunier
78d2fde632 scenario: Execute action whenever we pass the expected position
We know are sequential so whenever the wanted position is passed we
should execute the action.

This avoid issue with the tolerance when we have high rate playback
2013-08-28 18:55:55 -03:00
Thibault Saunier
5953b71907 validate: Dump pipeline for each state change
Ala gst-launch
2013-08-28 18:54:18 -03:00
Thibault Saunier
beb537d10b transcoding: Print duration regularly 2013-08-28 18:53:46 -03:00
Thibault Saunier
80702884f0 validate: Print state changes to help debugging 2013-08-28 18:51:53 -03:00
Thiago Santos
1dd93bea2a licenses: improving licensing info on all files 2013-08-28 16:58:11 -03:00
Thiago Santos
5f261269f8 pad-monitor: fix typo when acessing parents data 2013-08-28 16:49:07 -03:00
Thiago Santos
103bf74768 pad-monitor: reset buffer timestamp data after a flush
As the pad/element also clears its internal state
2013-08-27 18:26:14 -03:00
Thiago Santos
49d39be022 pad-monitor: also track flush events on probes 2013-08-27 16:16:08 -03:00
Thiago Santos
41e0bf1e91 tools: moving applications from gst/validate to tools
Keeps the CLI applications separate from the libs files
2013-08-27 12:04:31 -03:00
Vincent Penquerc'h
aa814d0189 gst-validate-scenario: fix scenario listing missing installed ones
Only scenarii in the current directory or the user's home directory
were being listed.
2013-08-27 11:52:11 -03:00
Vincent Penquerc'h
69597d9f5e gst-validate-transcoding: fix help text to refer to URIs as URIs
Referring to them as files is confusing, as you'll try to use files
and not URIs.
2013-08-27 11:52:10 -03:00
Vincent Penquerc'h
c79430a450 docs: minor spelling/grammar fixes 2013-08-27 11:52:09 -03:00
Thiago Santos
2ba098976a pad-monitor: Move repeated caps to test only on sinkpads
Testing on source pads can lead to false positives when pads are
unlinked. The caps event is sticky and will be pushed again later
when another buffer/event is pushed, leading to an acceptable
situation to push the caps twice.
2013-08-27 11:48:00 -03:00
Thiago Santos
b591f11b15 pad-monitor: add another acceptable flow return combination scenarios
A demuxer knows when to return EOS after samples are over, so it is
ok for it to return even when all src pads returned OK
2013-08-26 20:33:23 -03:00
Thiago Santos
a06a9038a4 pad-monitor: improve serialized event checks
If the event was already found at the first position of the array, it
shouldn't be searched on the rest of it.

This removes lots of false positives.
2013-08-26 20:33:23 -03:00
Thiago Santos
1a54b40c78 pad-monitor: fix aggregate flow return check for error situations
Flow flushing must be returned upstream to indicate an error situation
downstream
2013-08-26 20:33:22 -03:00
Thiago Santos
185d10bf79 gst-validate: print error message when starting the pipeline fails
Instead of just exiting silently
2013-08-26 20:33:22 -03:00
Edward Hervey
e48eadad75 pad-monitor: New check for duplicate caps event
We shouldn't get/push twice caps that are identical
2013-08-26 17:09:04 -03:00
Thiago Santos
104cccdfc0 media-info: avoid glib assert 2013-08-23 17:26:51 -03:00
Edward Hervey
4f3e1de776 report: Avoid repeating long macros
Makes the code a bit more readable and compact
2013-08-23 11:38:15 +02:00
Edward Hervey
60a2dfaf72 validate-report: Fix critical flag handling
criticals are warnings/issues also
warnings are issues also
2013-08-23 11:10:57 +02:00
Thibault Saunier
65e478f471 data: Add a test that alternates (fast) backward and forward playback 2013-08-22 14:13:12 -03:00
Thibault Saunier
c5a70ba0c5 data: Add a seek_backward/forward scenarios 2013-08-22 14:13:11 -03:00
Thibault Saunier
0609de7156 scenario: Have GstClockTime as second (in double) inside scenario files
Making it easier to read
2013-08-22 14:13:07 -03:00
Thibault Saunier
9fd62ba798 data: Add fast_forward/backward and simple_backward scenarios 2013-08-22 13:55:36 -03:00
Thibault Saunier
ff3e435e94 data: Add a Backward and Forward seeking scenario 2013-08-22 13:55:08 -03:00
Thibault Saunier
0d819e51cf data: Add a Pause/Resume scenario 2013-08-22 13:54:57 -03:00
Thibault Saunier
96ca875c56 validate: Set return value of apps to -1 only if a critical issues was reported
Conflicts:

	gst/validate/gst-validate-transcoding.c
	gst/validate/gst-validate.c
2013-08-22 13:54:39 -03:00
Thibault Saunier
375a47aa0d transcoding: Make sure to initialize Gst before parsing options
Avoiding to break the help
2013-08-22 13:06:01 -03:00
Thibault Saunier
40e3b5881a transcoding: Connect to the bus signals watch as the main watch might already be connected 2013-08-22 12:08:14 -03:00
Thibault Saunier
161e0cee12 scenario: Start monitoring the position only when the pipeline starts playing
Otherwize seeking with a playback_time=0 won't work properly
2013-08-22 12:06:29 -03:00
Thibault Saunier
f9ddb6f59e scenario: Fix negative rate management
Properly parse the it has a gdouble and set the stop position of the seek as
seeked_position if the rate is negative

+ Add some debug
2013-08-22 12:05:18 -03:00
Thibault Saunier
ddd00741fd scenario: Actions order in xml file is the order in which they must be executed
When seeking we might want to execute seeks at a playback time inferior than previous
seek, so we need to be able to define the order in which actions have to be
executed, the simplest way is to just concider that actions are always
order in the XML files.

+ Add some more debugs

Conflicts:

	gst/validate/gst-validate-scenario.c
2013-08-22 12:04:08 -03:00
Thibault Saunier
15b3049764 scenario: Rename the seeks list to actions, and initialize action to 0 when allocating 2013-08-22 12:02:49 -03:00
Thibault Saunier
2102648c5c scenario: Rename scenario xml files extension to .scenario 2013-08-22 12:02:02 -03:00
Thibault Saunier
fc61dcf1ed validate: Connect to the bus signals watch as the main watch might already be connected 2013-08-22 12:01:44 -03:00
Thibault Saunier
de57b1455a validate: Add a way to list avalaible scenarios
Conflicts:

	gst/validate/gst-validate-transcoding.c
2013-08-22 12:00:04 -03:00
Thiago Santos
123bdea93a gst-validate-transcoding: add signal handling and issues printing
Update to have the same features as gst-validate.

1) Handle interrupts properly, with the additional of having the
'eos-on-shutdown' argument that sends EOS to the pipeline. This is
very useful for transcoding processes to finish correctly.

2) Print issues on the end of application
2013-08-22 10:35:50 -03:00
Thiago Santos
db44d3aa27 gst-validate: add interrupt handler
Handle interrupt properly to still print issues when exiting
2013-08-22 10:35:34 -03:00
Edward Hervey
ec6abff9dd pad-monitor: Fix source pad probe handling
type is a bitmask and not an enum
2013-08-21 13:26:27 -03:00
Thiago Santos
df228c5729 gst-validate: fix documentation after debug category changes 2013-08-21 13:10:42 -03:00
Edward Hervey
de930073fc validate-reporter: More comprehensive debug message
Some issues don't have any arguments, so put the full details in.
2013-08-21 18:00:16 +02:00
Edward Hervey
529576e69b validate: Only use one debugging category: validate
There's no point in having a different debug category per file, you
can filter it by source filename if you *really* want that.
2013-08-21 17:59:51 +02:00
Thiago Santos
7e5f458e63 gst-validate: print issues at the end
And improve documentation about usage
2013-08-21 12:14:22 -03:00
Thiago Santos
044b21521b media-check: add results file comparison
Adds a new expected-results argument to receive a file that is used
as a base for comparison with the new results. In case differences are
found, the application will print those issues.
2013-08-21 11:03:19 -03:00
Thiago Santos
549bcc1fd5 reporter: do not print issues to stdout 2013-08-20 17:10:44 -03:00
Thiago Santos
36e5c626af media-info: fix playback tests
They weren't waiting for the pipeline to properly change state
before sending seek events, that would cause some events to
return TRUE even if they were not handled
2013-08-20 15:44:10 -03:00
Thiago Santos
387f7c1b63 media-check: return nonzero if a test failed 2013-08-20 15:42:54 -03:00
Thiago Santos
1713442fd3 media-info: add playback and reverse-playback tests
The tests are very simple as they only write the first error they
found during playback. If no error is set, an empty string is
printed.

The playback pipeline isn't monitored with validate monitors for now
2013-08-20 13:24:31 -03:00
Thiago Santos
3f91779c32 rename: gst-validate-file-check -> gst-validate-media-check
It not only validates files, takes any URI
2013-08-20 11:43:06 -03:00
Thiago Santos
577ad5c127 media-info: add stream topology parsing
Currently it only saves/loads the main type, but all topology is
already being parsed for future use
2013-08-20 11:41:15 -03:00
Thiago Santos
3d93eb78f1 media-info: add duration and seekable entries
Add duration entry in ns and seekable as a boolean to a new group
'media-info'
2013-08-19 16:52:12 -03:00
Thiago Santos
1c32bbbac3 media-info: replacing file-checker with a simpler media-info struct
This struct stores information about a media and tests run on it. It
also has a few helper functions that allows storing the results to a
file and loading it back.

Instead of having the file-checker object that would compare the
extracted values from the file to expected results set to its properties,
the media-info will store the values and it will be possible to compare
old media-info with new media-info from the same file. This allows
tracking improvements and regressions on different gstreamer versions.

Right now, the media-info is very tiny and doesn't store much info, only
the uri and the file size in bytes, but it will receive more additions in
the upcoming commits for storing duration, media topology, seekability and
playback information.
2013-08-19 16:38:13 -03:00
Edward Hervey
6a3070a1e4 .gitignore: Update for 1.0 and cleanup 2013-08-16 15:15:51 +02:00
Edward Hervey
15ea3bd8aa all: Enable more C warnings at build time
And fix the issues:
* Proper forward declaration
* static functions marked properly
* absolute includes
* declaration order
2013-08-16 15:13:54 +02:00
Edward Hervey
3e5c921217 reporter: Fix proper debug message output partially
In order for the special gstreamer print argument handler to be used
you can't use g_strdup_printf. You need to pass it the actual va_list.
2013-08-16 14:30:02 +02:00
Edward Hervey
501be30379 pad-monitor: Handle case where internal pad iterator is NULL
Can happen with inputselector
2013-08-16 14:30:02 +02:00
Edward Hervey
eca452978a pad-monitor: Don't use signal that doesn't exist
Note that we should just ensure we always get the pads from the parent
2013-08-16 14:30:01 +02:00
Edward Hervey
511ab5e1d8 pad-monitor: Update raw audio caps checks 2013-08-16 14:30:01 +02:00
Edward Hervey
5a659f205d pad-monitor: Fix locking issues
We were taking locks twice.

Also add debugging info when taking/releasing locks to help further similar issues
2013-08-16 14:30:01 +02:00
Edward Hervey
f3bd5ac0c0 file-checker: GstEncodingProfile is a GObject in 1.0 2013-08-16 14:30:01 +02:00
Thiago Santos
25688f4e50 gst-validate: port to 1.0 2013-08-15 01:46:27 -03:00