Edward Hervey [Tue, 20 Aug 2013 09:43:07 +0000 (11:43 +0200)]
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.
Thiago Santos [Wed, 21 Aug 2013 15:11:40 +0000 (12:11 -0300)]
gst-validate: print issues at the end
And improve documentation about usage
Thiago Santos [Wed, 21 Aug 2013 14:03:19 +0000 (11:03 -0300)]
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.
Thiago Santos [Tue, 20 Aug 2013 20:10:44 +0000 (17:10 -0300)]
reporter: do not print issues to stdout
Thiago Santos [Tue, 20 Aug 2013 18:44:10 +0000 (15:44 -0300)]
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
Thiago Santos [Tue, 20 Aug 2013 18:42:54 +0000 (15:42 -0300)]
media-check: return nonzero if a test failed
Thiago Santos [Tue, 20 Aug 2013 16:24:31 +0000 (13:24 -0300)]
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
Thiago Santos [Tue, 20 Aug 2013 14:43:06 +0000 (11:43 -0300)]
rename: gst-validate-file-check -> gst-validate-media-check
It not only validates files, takes any URI
Thiago Santos [Tue, 20 Aug 2013 14:41:15 +0000 (11:41 -0300)]
media-info: add stream topology parsing
Currently it only saves/loads the main type, but all topology is
already being parsed for future use
Thiago Santos [Mon, 19 Aug 2013 19:52:12 +0000 (16:52 -0300)]
media-info: add duration and seekable entries
Add duration entry in ns and seekable as a boolean to a new group
'media-info'
Thiago Santos [Mon, 19 Aug 2013 19:38:13 +0000 (16:38 -0300)]
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.
Edward Hervey [Fri, 16 Aug 2013 13:15:51 +0000 (15:15 +0200)]
.gitignore: Update for 1.0 and cleanup
Edward Hervey [Fri, 16 Aug 2013 13:05:54 +0000 (15:05 +0200)]
all: Enable more C warnings at build time
And fix the issues:
* Proper forward declaration
* static functions marked properly
* absolute includes
* declaration order
Edward Hervey [Fri, 16 Aug 2013 12:27:29 +0000 (14:27 +0200)]
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.
Edward Hervey [Fri, 16 Aug 2013 12:26:35 +0000 (14:26 +0200)]
pad-monitor: Handle case where internal pad iterator is NULL
Can happen with inputselector
Edward Hervey [Fri, 16 Aug 2013 12:25:49 +0000 (14:25 +0200)]
pad-monitor: Don't use signal that doesn't exist
Note that we should just ensure we always get the pads from the parent
Edward Hervey [Fri, 16 Aug 2013 12:24:12 +0000 (14:24 +0200)]
pad-monitor: Update raw audio caps checks
Edward Hervey [Fri, 16 Aug 2013 12:23:05 +0000 (14:23 +0200)]
pad-monitor: Fix locking issues
We were taking locks twice.
Also add debugging info when taking/releasing locks to help further similar issues
Edward Hervey [Fri, 16 Aug 2013 09:24:11 +0000 (11:24 +0200)]
file-checker: GstEncodingProfile is a GObject in 1.0
Thiago Santos [Thu, 15 Aug 2013 04:46:27 +0000 (01:46 -0300)]
gst-validate: port to 1.0
Thiago Santos [Thu, 15 Aug 2013 04:44:59 +0000 (01:44 -0300)]
po: missing po rename
Thiago Santos [Wed, 14 Aug 2013 23:03:43 +0000 (20:03 -0300)]
validade: add missing config.h includes
Thiago Santos [Wed, 14 Aug 2013 22:14:18 +0000 (19:14 -0300)]
validate: add init function
Adds an init() function that should be called before using the lib.
It takes care of calling all internal initializing functions in
gst-validete
Thiago Santos [Wed, 14 Aug 2013 21:04:23 +0000 (18:04 -0300)]
tools: improve documentation
Thiago Santos [Wed, 14 Aug 2013 19:30:39 +0000 (16:30 -0300)]
rename gst-qa -> gst-validate
Thiago Santos [Wed, 14 Aug 2013 18:58:34 +0000 (15:58 -0300)]
pad-monitor: only do complete caps checks on setcaps
On get caps it is acceptable to have missing fields to simplify caps
negotiation
Thiago Santos [Tue, 13 Aug 2013 16:40:48 +0000 (13:40 -0300)]
qa-preload: split to separate lib
It should only be used separately, otherwise it will wrap around any
pipeline from applications linking with gstqa
Thiago Santos [Mon, 12 Aug 2013 18:18:36 +0000 (15:18 -0300)]
file-check: add reverse-playback test
Adds a test that checks if reverse playback works without errors
Edward Hervey [Tue, 13 Aug 2013 09:07:31 +0000 (11:07 +0200)]
qa-reporter: Make debug message a bit more readable
By surrounding it with double quotes
Edward Hervey [Tue, 13 Aug 2013 09:07:05 +0000 (11:07 +0200)]
pad-monitor: 0.10 uses "channel-positions" field in audio caps
And it's an array, not a string
Edward Hervey [Tue, 13 Aug 2013 08:11:42 +0000 (10:11 +0200)]
Makefile: Clean up for make distcheck
Directories, headers, files weren't properly disted
Also clean up the various CFLAGS/HEADERS/SOURCES variables and remove
ones that aren't needed.
Edward Hervey [Tue, 13 Aug 2013 07:44:50 +0000 (09:44 +0200)]
po: Add missing Makevars file
Thiago Santos [Fri, 9 Aug 2013 15:37:49 +0000 (12:37 -0300)]
pad-monitor: use correct variable for segment comparisons
Use the expected versus the received instead of using the received
twice.
Thiago Santos [Fri, 9 Aug 2013 15:33:27 +0000 (12:33 -0300)]
reporter: fix printf format type
Thiago Santos [Thu, 8 Aug 2013 15:35:50 +0000 (12:35 -0300)]
docs: improve and update docs
Thiago Santos [Wed, 7 Aug 2013 20:31:17 +0000 (17:31 -0300)]
qa-scenario: re add scenarios creation to bin-monitor
GstPipelines are monitored by bin monitors. Create scenarios if
requested from the bin monitors and store them there.
Thiago Santos [Wed, 7 Aug 2013 19:22:36 +0000 (16:22 -0300)]
qa-monitor: remove reference to the runner
qa-monitor implements qa-reporter, and we already have a runner stored
there.
Thiago Santos [Wed, 7 Aug 2013 19:13:33 +0000 (16:13 -0300)]
gitignore: ignore more binaries
Thiago Santos [Wed, 7 Aug 2013 19:12:45 +0000 (16:12 -0300)]
qa-file-check: add new binary to run file checks easily
It creates a GstQaFileChecker and runs it on the passed URI with
the tests enabled as arguments
Thiago Santos [Wed, 7 Aug 2013 19:10:57 +0000 (16:10 -0300)]
qa-runner: simplify runner to not hold refs to monitor/pipeline
The GstQaRunner is now a simple aggregator of reports that it receives
from monitors and filechecker. This allows it to be used in both
scenarios without APIs that expect GstElement or Monitors, that are
only used on the pipeline monitoring QA tests.
Thiago Santos [Wed, 7 Aug 2013 14:31:04 +0000 (11:31 -0300)]
file-checker: add file playback testing feature
Adds a property that triggers the file playback tests on
GstQaFileCheker. Also enable it in the gst-transcoding post file checks.
The implementation is simple, just create a playbin2 and use fakesinks
as sinks, set it to playing and wait for either EOS or ERROR messages.
Thiago Santos [Tue, 6 Aug 2013 22:42:21 +0000 (19:42 -0300)]
qa-reporter: fix typo
Thiago Santos [Tue, 6 Aug 2013 22:39:58 +0000 (19:39 -0300)]
file-checker: include restriction caps tests when checking for profiles
Also move the caps check earlier on the path, to error out sooner and
avoid iterating the sub streams without needing
Thiago Santos [Tue, 6 Aug 2013 21:17:39 +0000 (18:17 -0300)]
file-checker: replace encoding profile comparison
Use our own custom comparison to allow to add more fine grained error
reporting. Also the encoding profile is_equal function is too strict as
it also compares profiles names, that doesn't matter to us.
This commit implementation is still initial and needs improvements as it
isn't using the restriction caps, which includes information that might not be
on the profile format caps.
Thiago Santos [Tue, 6 Aug 2013 13:36:58 +0000 (10:36 -0300)]
qa-reporter: fix crash by avoiding unref an integer
Thiago Santos [Tue, 6 Aug 2013 13:36:47 +0000 (10:36 -0300)]
makefile: fix build of gst-qa- tools
Thiago Santos [Tue, 6 Aug 2013 13:36:02 +0000 (10:36 -0300)]
file-checker: add error report and new report types
Add a list of new report types and use them in the file-checker.
The errors are mostly related to testing file attributes against
expected values
Thiago Santos [Mon, 5 Aug 2013 17:16:06 +0000 (14:16 -0300)]
qa-file-checker: add a file checker object/runner
It is an object that is capable to run a few file checks. The
implemented tests are: file size, duration, if the file is seekable and
comparing the file stream types with a encoding profile
Thiago Santos [Thu, 1 Aug 2013 21:08:44 +0000 (18:08 -0300)]
qa-scenario: adding eos scenario action
Allows sending EOS to the pipeline
Thiago Santos [Thu, 1 Aug 2013 12:35:59 +0000 (09:35 -0300)]
qa-scenario: add new scenario action - Pause
The pause action instructs the pipeline to go to paused state and then
return to playing. It has the argument 'duration', that indicates the
duration for which the pipeline will remain in paused
Thiago Santos [Thu, 1 Aug 2013 04:27:20 +0000 (01:27 -0300)]
qa-scenario: refactor to accomodate more actions
Refactor to be able to reuse to add more actions to scenarios.
Planned are pauses and encoding changes
Thiago Santos [Wed, 31 Jul 2013 18:01:13 +0000 (15:01 -0300)]
qa-scenario: avoid assertion on dispose
After an error, the pipeline might still be null, check before unreffing
Thiago Santos [Wed, 31 Jul 2013 18:00:56 +0000 (15:00 -0300)]
qa-scenario: fix typo on define variable
Thiago Santos [Wed, 31 Jul 2013 18:00:33 +0000 (15:00 -0300)]
qa-report: fix typo on assertion comparison
Vincent Penquerc'h [Wed, 31 Jul 2013 10:12:41 +0000 (11:12 +0100)]
gst-qa-element-monitor: do not bypass monitor factory
A pad monitor was created directly. Prefer going through the
factory.
Vincent Penquerc'h [Wed, 31 Jul 2013 10:05:05 +0000 (11:05 +0100)]
gst-qa-reporter: fix use of uninitialized repeat field
Vincent Penquerc'h [Wed, 31 Jul 2013 10:04:32 +0000 (11:04 +0100)]
gst-qa-reporter: fix report leak when discarding repeated report
Vincent Penquerc'h [Wed, 31 Jul 2013 09:49:48 +0000 (10:49 +0100)]
gst-qa: fix build in po
Using a lot of grep and some cargo culting.
Vincent Penquerc'h [Wed, 31 Jul 2013 09:07:53 +0000 (10:07 +0100)]
gst-qa: make tools depend on libraries
This fixes parallel build randomly breaking.
Thiago Santos [Tue, 30 Jul 2013 20:07:13 +0000 (17:07 -0300)]
qa-report: expose API for adding custom issues
expose gst_qa_issue_register and gst_qa_issue_new to allow applications
to register their own custom issues.
Issues IDs should use Areas higher than GST_QA_AREA_OTHER for custom
areas. And to add more issues to existing areas, the IDs should be
higher than GST_QA_ISSUE_ID_CUSTOM_FIRST.
Custom issues registering should be done at startup and from the same
thread as there is no locking around the issues hashtable
Thiago Santos [Tue, 30 Jul 2013 19:21:15 +0000 (16:21 -0300)]
Fix typos
Thiago Santos [Tue, 30 Jul 2013 19:20:49 +0000 (16:20 -0300)]
qa-runner: Remove printing API from qa-runner
Replace it with functions to list the reports
Vincent Penquerc'h [Tue, 30 Jul 2013 16:17:48 +0000 (12:17 -0400)]
pad-monitor: fix NULL format string
An empty message should be an empty string.
Thiago Santos [Tue, 30 Jul 2013 13:21:13 +0000 (10:21 -0300)]
qa-runner: removing _setup call
Do setup on the _new function directly instead of having a separate
call for that
Thiago Santos [Tue, 30 Jul 2013 12:56:05 +0000 (09:56 -0300)]
qa-override: add more pad overrides for buffer probe and caps
Add override functions for custom checking of buffer probe and
getcaps/setcaps functions.
Thiago Santos [Mon, 29 Jul 2013 20:26:21 +0000 (17:26 -0300)]
pad-monitor: call the event/query/buffer overrides
Use the new event/buffer/query overrides to allow custom checks
on those scenarios
Thiago Santos [Mon, 29 Jul 2013 19:26:52 +0000 (16:26 -0300)]
qa-override: add callbacks for query/buffer/event functions
Add callbacks for pad event/buffer/query functions in case the
override wants to do additional checks
Vincent Penquerc'h [Tue, 30 Jul 2013 09:20:43 +0000 (10:20 +0100)]
gst-qa-override-registry: load overrides dynamically
Shared objects listed in GST_QA_OVERRIDE are loaded on startup,
and the symbol gst_qa_create_overrides is run. It should create
any override needed. While it can do anything it wants, this
is discouraged.
GST_QA_OVERRIDE should be a comma separated list of shared objects,
any relative paths should be from the current working directory
at the time they are loaded (ie, if the process to be traced
changes cwd, use absolute paths).
No attempt whatsoever is made at not running what was not meant.
Includes a sample shared object for illustration purposes.
Thiago Santos [Mon, 29 Jul 2013 16:17:50 +0000 (13:17 -0300)]
qa-override-registry: register overrides by gtype and klass
Overrides can now be registerd by gtype, meaning that they will
be attached to monitors that the target is of the requested type.
Also by element klass, that will check that the element has the
selected class in its details
Thiago Santos [Mon, 29 Jul 2013 15:01:02 +0000 (12:01 -0300)]
qa-monitor: implement intercept_report
It is used to iterate over overrides and modify the report level if
the overrides wants to do so.
Also adds a new mutex only for the overrides to avoid deadlocks when
reporting if we used the same lock for iterating the overrides
Thiago Santos [Mon, 29 Jul 2013 14:35:20 +0000 (11:35 -0300)]
qa-reporter: fix copy n paste left over
Thiago Santos [Mon, 29 Jul 2013 14:34:42 +0000 (11:34 -0300)]
qa-reporter: add function for intercepting reports
after report creation, this function is called and implementers can
modify the report to their liking before it is posted to the runner
Vincent Penquerc'h [Mon, 29 Jul 2013 13:37:46 +0000 (09:37 -0400)]
qa-monitor: chain gst_qa_monitor_finalize to parent's finalize
It was chaining to the parent's dispose.
Thiago Santos [Mon, 29 Jul 2013 13:06:48 +0000 (10:06 -0300)]
gst-qa-report: put the correct format to avoid compiler warnings
Vincent Penquerc'h [Mon, 29 Jul 2013 11:02:30 +0000 (07:02 -0400)]
i18n: copy necessary files in-tree
Vincent Penquerc'h [Mon, 29 Jul 2013 11:20:50 +0000 (07:20 -0400)]
GstIssueId: make this uintptr_t
As it's used a a placeholder pointer for g_hash_table use,
it needs to be converted back and forth to a pointer.
Thiago Santos [Fri, 26 Jul 2013 22:05:31 +0000 (19:05 -0300)]
gst-qa-override-registry: adding the override-registry
This registry should contain the list of GstQaOverride to
be used on the pipelines being monitored
Thiago Santos [Fri, 26 Jul 2013 03:14:02 +0000 (00:14 -0300)]
qa-override: adds qa-override that can change the report level of issues
Useful for customizing the level of issues for particular elements/tests
when they are more relevant or have to be disabled
Thiago Santos [Fri, 26 Jul 2013 02:25:22 +0000 (23:25 -0300)]
qa-report: splitting a GstQaReport into a GstQaIssue and GstQaReport
Reports now point to Issues, that are uniquely identified and have
translatable descriptions. This way we are going to be able to uniquely
identify the issues and applications can enable/disable checks for
specific elements.
Thibault Saunier [Wed, 24 Jul 2013 23:09:14 +0000 (19:09 -0400)]
qa: Make it possible to set a scenario from the command line in test apps
Thibault Saunier [Tue, 23 Jul 2013 14:13:06 +0000 (10:13 -0400)]
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
Thibault Saunier [Tue, 23 Jul 2013 12:55:24 +0000 (08:55 -0400)]
reporter: Use Gst debugging log in the _report method directly
Using __VALIST__ was not properly working
+ Add a gstqareporter debug category
Thibault Saunier [Mon, 22 Jul 2013 23:22:49 +0000 (19:22 -0400)]
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.
Thibault Saunier [Mon, 22 Jul 2013 23:17:53 +0000 (19:17 -0400)]
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
Thibault Saunier [Sat, 20 Jul 2013 04:18:13 +0000 (00:18 -0400)]
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.
Thiago Santos [Wed, 24 Jul 2013 19:04:03 +0000 (16:04 -0300)]
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.
Thiago Santos [Wed, 24 Jul 2013 13:05:31 +0000 (10:05 -0300)]
pad-monitor: remove already solved TODOs
Thiago Santos [Wed, 24 Jul 2013 12:51:05 +0000 (09:51 -0300)]
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
Thiago Santos [Tue, 23 Jul 2013 18:18:51 +0000 (15:18 -0300)]
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.
Thiago Santos [Tue, 23 Jul 2013 18:10:33 +0000 (15:10 -0300)]
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
Thiago Santos [Tue, 23 Jul 2013 15:52:22 +0000 (12:52 -0300)]
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
Edward Hervey [Tue, 23 Jul 2013 15:14:26 +0000 (12:14 -0300)]
gst-qa: show help and exit when no arguments are provided
Instead of attempting to create empty pipelines and weird things
happening :)
Thiago Santos [Tue, 23 Jul 2013 15:11:08 +0000 (12:11 -0300)]
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
Thiago Santos [Tue, 23 Jul 2013 14:51:07 +0000 (11:51 -0300)]
pad-monitor: only merge caps if they exist
Downtream can not be linked, so we shouldn't try to merge
NULL caps
Thiago Santos [Mon, 22 Jul 2013 23:50:02 +0000 (20:50 -0300)]
configure: add nano version to enable Werror
Thiago Santos [Mon, 22 Jul 2013 23:09:35 +0000 (20:09 -0300)]
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
Thiago Santos [Mon, 22 Jul 2013 23:09:07 +0000 (20:09 -0300)]
pad-monitor: improve timestamp ranges comparison message a little
Show the buffer range that is being compared.
Thiago Santos [Mon, 22 Jul 2013 18:05:04 +0000 (15:05 -0300)]
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
Thiago Santos [Mon, 22 Jul 2013 12:50:23 +0000 (09:50 -0300)]
pad-monitor: add check for setcaps passing audio/video fields
Checks that the common audio/video fields are correctly passed
downstream after a setcaps
Thiago Santos [Fri, 19 Jul 2013 19:52:45 +0000 (16:52 -0300)]
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