Thibault Saunier
1e1e0b922e
qa: Make it possible to set a scenario from the command line in test apps
2013-07-25 16:58:15 -03:00
Thibault Saunier
382fcc9a01
qa: Properly set reporter's runner reference
...
That was never set, but it is needed for the reporter to properly add
reports to the runner.
We still keep a reference on the monitor to make things simpler
2013-07-25 16:58:14 -03:00
Thibault Saunier
d804ad475a
reporter: Use Gst debugging log in the _report method directly
...
Using __VALIST__ was not properly working
+ Add a gstqareporter debug category
2013-07-25 16:58:14 -03:00
Thibault Saunier
4fb8f47770
scenario: Implement the GstQaReporter interface and make use of it
...
This way we can report issues from a scenario
Also add a Seek aread to the known areas list
We now need to pass the runner to the scenario instead of the
pipeline as the GstQaReporter interface needs it.
2013-07-25 16:58:13 -03:00
Thibault Saunier
4992249848
qa: Add a GstQaReporter interface that objects needing reporting can implement
...
Various type of object should be able to do some reporting, so we have
to make sure all the code to do that is in one place. Creating an interface
makes it simple to share information and it avoid to have a baseclass for
something that is not actually important enough to create a baseclass.
Conflicts:
gst/qa/gst-qa-pad-monitor.c
2013-07-25 16:57:44 -03:00
Thibault Saunier
7508e35b7e
qa: Add a GstQaScenario class making it possible to execute scenarios
...
A scenario correspond to a suite of action to execute on a pipeline,
for the time being, we only support seeking the pipeline, but in the
future we can imagine doing some queries, setting pipeline state, etc...
The scenario can be loaded thanks to the GST_QA_SCENARIO environment
variable, making it usable with any existant application, in case, the
application can be used interactively, the user should either, not load
any scenario or let the application run without interacting with it.
2013-07-25 16:56:40 -03:00
Thiago Santos
4a3f06885a
pad-monitor: add lots of locking
...
When handling elements that spawn multiple threads (hardware
enc/decoders), the pad monitor has to protect its variables specially
because some checks involve iterating over internally linked pads to
add/get some data for comparison (expected events, timestamp ranges,
caps).
Aside from locking its own mutex, the pad monitor can also lock the
parent's mutex when it needs to use data from its internally linked
pads. The locking order should always be parent and then individual
pad-monitor mutexes. This should prevent deadlocks when multiple
pad-monitors from the same element start doing checks at the same time
from different threads.
2013-07-24 16:16:07 -03:00
Thiago Santos
48c49f5071
pad-monitor: remove already solved TODOs
2013-07-24 10:05:31 -03:00
Thiago Santos
887afecc22
pad-monitor: accept unexpected flow return if pad is eos
...
Track eos event and mark that pad as eos so that checking for the
flow return knows when 'unexpected' is acceptable
2013-07-24 10:05:23 -03:00
Thiago Santos
b5f31f0c8c
pad-monitor: improve caps proxying check on getcaps
...
Only check if fields are proxied for sink getcaps as it is when
downstream restrictions should be proxied. Also improve the
fields comparison to handle single value x multi value
(list/array/range) contain relations.
2013-07-23 15:18:51 -03:00
Thiago Santos
6ebded71e2
pad-monitor: improve type conformance checking for caps
...
Replace the macro with a more powerful variadic function that can
check for more acceptable types for the same caps.
This removes a few more false positives
2013-07-23 15:16:35 -03:00
Thiago Santos
c9955c14e4
pad-monitor: only expect a new segment if pad is running on push mode
...
For pull mode, it should just provide the buffers, regardless of getting
a new segment or not
2013-07-23 12:52:22 -03:00
Edward Hervey
d7b2977657
gst-qa: show help and exit when no arguments are provided
...
Instead of attempting to create empty pipelines and weird things
happening :)
2013-07-23 12:14:26 -03:00
Thiago Santos
04b3517e41
pad-monitor: fix flushes checking
...
flush events shouldn't fail, so we don't need to rollback when it
returns false from downstream (this is common when downstream is still
not-linked) and it would cause gst-qa to spit false positives.
Also refactor the common event handling for both sink and src event
functions into a common place. Currently we handle flushes the same
for both pad's directions
2013-07-23 12:11:08 -03:00
Thiago Santos
d8fa81eeff
pad-monitor: only merge caps if they exist
...
Downtream can not be linked, so we shouldn't try to merge
NULL caps
2013-07-23 11:51:07 -03:00
Thiago Santos
11cc2e6b3b
pad-monitor: fix expected setcaps fields comparison
...
Use the correct structure when getting the GValues and print different
messages for missing and different fields on the setcaps caps
2013-07-22 20:09:35 -03:00
Thiago Santos
363de0e555
pad-monitor: improve timestamp ranges comparison message a little
...
Show the buffer range that is being compared.
2013-07-22 20:09:07 -03:00
Thiago Santos
e94427e639
pad-monitor: add check for serialized events order
...
Store expected serialized events and their 'timestamps' to check if
they are pushed in the same order/time as they were received
2013-07-22 15:05:04 -03:00
Thiago Santos
c650034fb4
pad-monitor: add check for setcaps passing audio/video fields
...
Checks that the common audio/video fields are correctly passed
downstream after a setcaps
2013-07-22 09:50:23 -03:00
Thiago Santos
0aaf23cb0f
pad-monitor: add check for getcaps proxying audio/video fields
...
Checks that the common audio/video fields are correctly proxied by
the elements after a getcaps
2013-07-19 16:52:45 -03:00
Thiago Santos
694935fdea
element-monitor: add is_encoder flag
...
Easy access to knowing if the monitored element is an encoder
2013-07-19 16:52:11 -03:00
Thibault Saunier
ab98bd242e
qa-transcoding: Add a binary program to easily test transcoding
2013-07-19 11:16:47 -03:00
Thibault Saunier
799b7a8c3e
monitor(s): Avoid trying to disconnect handlers on instances that do not exist anymore
2013-07-19 11:15:54 -03:00
Thibault Saunier
0127706e09
qa-report: Avoid reporting tons of times the exact same issue to users
...
Some of the issue can be reported once and for all. We are here avoiding to flood the
user with the same information repeated infinitely.
2013-07-19 11:15:53 -03:00
Thibault Saunier
affddfe626
qa-pad-monitor: Do not use gst_private.h
2013-07-19 11:15:52 -03:00
Thiago Santos
a7353e988b
pad-monitor: improve timestamp ranges check
...
Keep the full range stored by the element in the monitor and check
if outgoing timestamps are within that range. It is simple and
should generally work.
2013-07-19 09:57:07 -03:00
Thiago Santos
a11cc64f90
pad-monitor: fix combined flow checks
...
We can only check if we found a downstream monitor
2013-07-18 14:49:23 -03:00
Thiago Santos
16b1d750c8
pad-monitor: fix caps field type checks
...
The type is GstValueList and not GArray
2013-07-18 14:49:01 -03:00
Thiago Santos
9d7f9cfa54
pad-monitor: improve report messages with arguments
2013-07-18 14:48:46 -03:00
Thibault Saunier
eebb3522bf
qa-report: Pass the whole monitor when creating a report
...
So we have the proper source name already avalaible and in the future
we might need some more informations about the monitor itself.
2013-07-18 13:43:29 -03:00
Thibault Saunier
dd672acf8b
qa-pad-monitor: Properly set target_name with as much info as possible
2013-07-18 13:43:28 -03:00
Thibault Saunier
cb4792a8e5
qa-monitor: Add a target name field that can be used even when the target is freed
2013-07-18 13:43:25 -03:00
Thibault Saunier
d1508ce651
qa-monitor: Make the reference to the target a weak reference
2013-07-18 13:43:23 -03:00
Thiago Santos
d0272be23b
qa-report: add debug flags for criticals
...
Allows the user to enable program abort if a report
is created with a certain level.
Use:
GST_QA=fatal_criticals,fatal_warnings,fatal_issues
2013-07-18 12:22:43 -03:00
Thibault Saunier
4b808aeb81
qa-report: Do not keep a ref to the source but keep its name instead
...
We currently do not need to access the object source after its creation
but we need to be able to have a usefull for debugging name.
2013-07-18 12:15:24 -03:00
Thibault Saunier
7faac43afb
qa-runner: Add a 'report-added' signal
...
So it is possible to plug into the runner to get information about
what is going from outside of it.
2013-07-18 12:15:24 -03:00
Thibault Saunier
5f62fd2e2a
qa-report: Make it a boxed type
...
And make it refcounted, in 1.0 it should become a GstMiniObject, for
now, it is enough that way.
The goal is to be able to use it in signals
2013-07-18 12:15:24 -03:00
Thibault Saunier
440d20ed00
qa-monitor: Allow detaill message to be in printf format
...
So we can give proper informations about what is wrong to users
2013-07-18 12:15:24 -03:00
Thiago Santos
84b9b654e1
qa-monitor-preload: fix preload to work with pipeline creation
...
Wrap around the main gstreamer pipeline creation functions as wrapping
g_object_new requires rebuilding glib.
2013-07-17 21:46:37 -03:00
Thiago Santos
4db12b8a76
pad-monitor: fix copy n paste mistake
...
Do not use GstFlowReturn where a boolean is expected
2013-07-17 20:40:50 -03:00
Thiago Santos
f90e164038
pad-monitor: fix initialization of timestamp ranges
2013-07-17 20:40:38 -03:00
Thiago Santos
9c958417e2
pad-monitor: check that returns are combined properly
...
When getting a return from a sink pad, check that it combines properly
the current returns from downstream source pads
2013-07-17 17:57:39 -03:00
Thiago Santos
425e608456
pad-monitor: verify that pushed segment matches what was received
...
Check that src pads push segments that are compatible with what
was received on the sink pads
2013-07-17 14:36:44 -03:00
Thiago Santos
bd22bb8d1c
pad-monitor: output timestamps should be in range of received ones
...
Checks if the timestamps of pushed buffers are in the range of the
received buffer timestamps;
2013-07-17 11:49:39 -03:00
Thiago Santos
0b90e7bddd
pad-monitor: add check for out of segment buffers
2013-07-17 00:33:42 -03:00
Thiago Santos
c53b10e5c5
pad-monitor: track current buffer timestamp and duration
...
This can be used to make sure outgoing buffers match the input
timestamps
2013-07-17 00:30:21 -03:00
Thiago Santos
9a82afbc87
pad-monitor: check for when a flush start isn't expected
...
Complain when an unexpected flush-start is received
2013-07-17 00:29:38 -03:00
Thiago Santos
c942eabbfd
pad-monitor: add checks for raw caps completeness
...
Check audio and video raw caps returned from getcaps for expected
fields and types
2013-07-17 00:29:04 -03:00
Thiago Santos
fbd6aa1359
qa-monitor: Fix typo in printf format for report debug messages
...
Stringify the arguments correctly for printing
2013-07-17 00:25:11 -03:00
Thiago Santos
6677b5a574
pad-monitor: first buffer checks
...
Check that a newsegment is received before the first buffer and that
the first buffer running time is 0
2013-07-16 23:19:13 -03:00