Commit graph

766 commits

Author SHA1 Message Date
Thibault Saunier
6181f7763d validate: Misc fixes 2015-02-16 17:18:21 +01:00
Thibault Saunier
f4c6ed368e validate: Properly annotate gst_validate_register_action_type*
It does not return any reference to the type
2015-02-14 16:32:12 +01:00
Thibault Saunier
135cb2d2e4 Revert "validate:scenario: Add a way to specify action structure size"
This reverts commit b976319ef7f977b8ce910c4b8aa1a843da3b264f.

Now that the exact same structure can be used to represent different
action types, we can not rely on the structure size to stuff
informations into the action.  Users should just make use of
GstMiniObject.qdata.
2015-02-14 16:32:12 +01:00
Thibault Saunier
a5dab4b378 validate:scenario: We do not own any ref in GstValidateExecuteAction
And gst_validate_action_set_done might very well unref the last
reference to the action
2015-02-14 16:32:12 +01:00
Thibault Saunier
45f3f3d772 validate: Make sure that the latest action type registration is kept
Avoiding to change the behaviour!
2015-02-14 16:32:12 +01:00
Thibault Saunier
e80a7df4d3 validate:scenario: Handle scenario repeat property with sub actions
And port change_state_intensive.scenario to it
2015-02-14 16:32:12 +01:00
Thibault Saunier
a5a0722d20 validate:scenario: Add the notion of sub actions
Sub action will allow user to executed action *right* after the
previous action has been completed, meaning in the end that both
action can be considered as one single action.

+ Factor out a function to fill an GstValidateAction structure from a
  GstStructure
+ Factor out a function to set action playback time
2015-02-14 16:32:12 +01:00
Thibault Saunier
441513e689 validate: Add an API to cleanly register action type from plugins
API:
    gst_validate_register_action_type_dynamic

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:11 +01:00
Thibault Saunier
1194b313af validate: Rename libfaultinjector to libgstvalidatefaultinjector
https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:11 +01:00
Thibault Saunier
dae4051ed6 validate: Use plugin name as implementer_namespace when registering action type
And document it as a good practice as it will allow us to map plugins
and action types

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:11 +01:00
Thibault Saunier
cdc6565605 validate: Move the fault_injection plugin to gst/plugins/
https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:11 +01:00
Thibault Saunier
5c90a06645 validate: Use an actual GstRegistry to track our plugins
Keeping everything internal for now

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:11 +01:00
Thibault Saunier
ed43ab1509 validate: Implement fault_injection as a Gs(tValidate)Plugin
https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:11 +01:00
Thibault Saunier
a9b27057bb validate:scenario: Add a way to specify action structure size
And return the register GstValidateActionType on registration

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:10 +01:00
Thibault Saunier
fbfcf16b20 scenario: Do not concider we are seek_in_paused if executing a new action
The new action might change the position on purpose and we should not
fail in that case.

Also at that point we know the test of position after the seek has
been executed

+ Minor cosmetic fixes

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:10 +01:00
Thibault Saunier
9f5310b1d8 validate: scenario: Add a method to get the following action to be executed
API:
  + gst_validate_scenario_get_next_action

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:10 +01:00
Thibault Saunier
8125c46122 validate: Add helper functions ti print actions
API:
  + gst_validate_scenario_get_next_action
  + gst_validate_reporter_report_simple

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:10 +01:00
Thibault Saunier
16d52a445b validate: Minor documentation fixes
https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:09 +01:00
Thibault Saunier
11f923fa52 validate: Fix the check of action that can be *not* executed
The check was wrong and we ended up allowing seek actions to no be
executed.

API:
    GST_VALIDATE_ACTION_TYPE_NO_EXECUTION_NOT_FATAL

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:09 +01:00
Thibault Saunier
5069e0347c validate:scenario; Advertise action types that will be executed on addition
Adding a flag to the action type

And make that code thread safe.

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:09 +01:00
Thibault Saunier
c74f33bd17 validate:scenario: Add a Flag fore ActionType that need clocks sync
And cleanly use it to set the need-clock-sync field in
the scenario properties

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:09 +01:00
Thibault Saunier
ef0f78f600 validate: Add the notion of INTERLACED actions
An interlaced action is an action that will be executed ASYNC but
without that will not block following actions during its execution.
The action should be set to done later on at any point during the
execution of the scenario.

API:
  + GST_VALIDATE_EXECUTE_ACTION_INTERLACED
  + GST_VALIDATE_ACTION_TYPE_INTERLACED

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:09 +01:00
Thibault Saunier
e7cc086f95 validate: Add a way to retrieve register actoin type from outside
API:
  * GstValidateActionType
  * gst_validate_get_action_type

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:09 +01:00
Thibault Saunier
71d53bb2d3 validate:scenario: Make action->scenario public API
It can be usefull for action type implementers

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:08 +01:00
Thibault Saunier
8848657ce3 validate:scenario: Add a disable-plugin action type
https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:08 +01:00
Thibault Saunier
5f888fb5b6 validate: Properly advertise the wait action as ASYNC
And add some printing when executing the set-property action

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:08 +01:00
Thibault Saunier
bee292f548 validate: Wait for switch-track to complete before executing next action
This action type can take some time, we need to make sure that the
combiner/input-selector element properly pushed a buffer marked
as DISCONT to concider the action is done.

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:08 +01:00
Thibault Saunier
d7b5d57305 validate:scenario: Avoid waiting for 50ms between actions
We should be able to execute the next action as soon as the previous
one is fully completed, make sure the code tries to do that and does
not artificially add some waiting time.

And make sure if the gst_validate_action_set_done is called from outside
our execution thread, we do not try to execute anything

https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:32:07 +01:00
Thibault Saunier
508678cfe1 scenario: Add a signal to notify user when the scenario is DONE executing
https://bugzilla.gnome.org/show_bug.cgi?id=743994
2015-02-14 16:31:57 +01:00
Mathieu Duponchelle
4ce91b98f0 validate: Implement a fault injection library.
+ And implement a corrupt-socket-recv action
+ Only compile this on Linux, LD_PRELOAD won't work on Windows.

For now the registering of the action is done through
a call to socket_interposer_init, this will get better
when we refactor the action logic.

https://bugzilla.gnome.org/show_bug.cgi?id=743871
2015-02-03 15:30:54 +01:00
Mathieu Duponchelle
165e35b3f0 bin-monitor: add itself as gobject data. 2015-01-22 22:07:37 +01:00
Thiago Santos
10fe72aa52 pad-monitor: plug caps leak on iterator resync 2015-01-09 14:04:16 -03:00
Thiago Santos
389f6d96b4 pad-monitor: use the same filter caps when querying downstream caps
To avoid comparing the real result that has been filtered against
a much larger caps that contains all possibilities.
2015-01-09 14:04:13 -03:00
Thiago Santos
7b4df44f61 pad-monitor: get correct caps to check for proxied fields in caps queries
Elements should proxy the peer element's caps fields and not what they
have currently set on their pads when replying to a caps query
2014-12-08 17:28:47 -03:00
Thiago Santos
af2707d3a3 pad-monitor: Only add pending caps fields for source pads
As caps events are downstream, caps set travels from sinks to
sources. Adding pending setcaps values to sink pads makes no sense
as when a new caps is set on the sink it would compare with values
currently set on the source pad, causing a critical failure when
renegotiation happens.
2014-12-08 17:28:47 -03:00
Thibault Saunier
515c8405f0 validate: Remove file specific blacklisted tests 2014-12-05 16:16:53 +01:00
Thibault Saunier
36aed39259 validate: Make sure to at least listen to GStreamer and GLib g_logs
If somewhere else someone is overriding the g_log default handler,
we would not get notified of anything.
2014-12-05 12:16:55 +01:00
Thibault Saunier
582f1cfc06 validate: Factor out a function to print action types parametters
+ Remove playback-type from the list and just print it
2014-12-05 12:16:54 +01:00
Thiago Santos
db67a92b3f pad-monitor: do not enforce caps querying rules for converters
Some encoders/decoders can also be converters, do not enforce
caps proxying rules for them
2014-11-28 17:21:23 -03:00
Thibault Saunier
c952886813 validate: Already having a monitor is no error 2014-11-25 19:41:01 +01:00
Thibault Saunier
b56ebc8a43 validate: Enhance documentation 2014-11-25 19:41:00 +01:00
Thibault Saunier
11c49a7db8 validate:scenario: Execute actions without playback time without a valid position
If the user did not specify any playback time we should be able to
execute actions even if the pipeline can't answer the position query

+ Make simpler to read the conditions of an action execution
2014-11-25 19:41:00 +01:00
Thibault Saunier
cdfa1ee61b validate:scenario: Properly handle ASYNC action execution in the API
The ->execute function now return a GstValidateExecuteActionReturn
which can be set as ASYNC in order to tell the scenario that the action
will be executed asynchronously, when the action is done, the caller is
responsible for calling gst_validate_action_set_done(); so that the
scenario keeps going on.

In this commit we make sure that the old API keeps working as
GST_VALIDATE_EXECUTE_ACTION_ERROR == FALSE and
GST_VALIDATE_EXECUTE_ACTION_OK == TRUE

Morevover GstValidateExecuteActionReturn is just a define

API:
    + gst_validate_action_set_done
    + GstValidateExecuteActionReturn

https://bugzilla.gnome.org/show_bug.cgi?id=739854
2014-11-25 19:41:00 +01:00
Thibault Saunier
4cbcb97258 validate: Add a GstValidateActionTypeFlag flag
Allowing us to define action types more in detail.
Keep backward compatibility, at least with the C API

https://bugzilla.gnome.org/show_bug.cgi?id=739854
2014-11-25 19:29:13 +01:00
Thibault Saunier
fcb0f20828 validate: Add a GstValidatePipelineMonitor subclass
We had quite a bit of code dedicated to handled GstPipeline monitoring
inside GstValidateBinMonitor, cleanly split that code into a new object
type

https://bugzilla.gnome.org/show_bug.cgi?id=740704
2014-11-25 19:29:13 +01:00
Thibault Saunier
057a864223 validate: Don't fail getting master report from a ghostpad without target 2014-11-20 12:09:26 +01:00
Thibault Saunier
6300fb9602 validate: Print current position even if we do not know the rate
That could cause gst-validate-launcher to wrongly concider tests
as timeout
2014-11-19 20:05:57 +01:00
Thibault Saunier
2be3c04b9b validate:scenario: Force clock sink for scenarios with a pause action 2014-11-19 17:59:26 +01:00
Thibault Saunier
7f8c0c2751 validate: Do not check if first buffer running time is 0
It can perfectly not be 0, so it makes no sense to check that.

https://bugzilla.gnome.org/show_bug.cgi?id=739965
2014-11-19 17:59:26 +01:00
Thibault Saunier
9255a8f876 pad-monitor: Give better details about segment mismatch issues 2014-11-16 18:27:32 +01:00
Thibault Saunier
4a2b9d6431 validate: Be more precise in issue type for wrong seqnum
Depending on the type of event where the bug occurs,
it is not the same issue type. That allows us to have
much precise reports, and better explain the user
where the issue stands.
2014-11-16 18:27:32 +01:00
Thibault Saunier
c77089cc62 validate: Fix a few annotation issues 2014-11-16 18:27:32 +01:00
Thibault Saunier
8c6803c467 validate: Add the notion of WAIT_MULTIPLIER for the wait action
Allowing the user to decide to wait more, or less, or even not wait
for the wait action to execute when running scenarios.
2014-11-16 18:27:32 +01:00
Thibault Saunier
1c2c0e63c2 validate:scenario: Report an EXECUTION_ERROR on action execution failure
If the action type handles a better error report type, it should just
return TRUE, and report its issue itself.
2014-11-04 17:33:09 +01:00
Edward Hervey
4814110a86 scenario: Allow set-property action to work much earlier
By default an action has no playback-time, this makes it actionable
immediatly.

When no playback-time is set on a set-property action, it will
be activated the moment the element is added in the pipeline.
2014-11-04 17:12:00 +01:00
Edward Hervey
6a86f7c1c9 validate-bin-monitor: Initialize local variable
Avoids segfaults when freeing them if they didn't get filled in
2014-10-31 16:01:52 +01:00
Mathieu Duponchelle
fa39e0358a validate-utils: downgrade ERROR to DEBUG.
This function is called in places where it is legit for it
to return NULL.
2014-10-30 15:39:01 +01:00
Ramprakash Jelari
eb47b1021f validate: Fix compiler warning about implicit enum type conversion
gst-validate-reporter.c:119:39: error: implicit conversion from enumeration type
      'GstValidateReportingDetails' to different enumeration type
      'GstValidateInterceptionReturn' [-Werror,-Wenum-conversion]
  GstValidateInterceptionReturn ret = GST_VALIDATE_SHOW_UNKNOWN;
                                ~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~
gst-validate-reporter.c:124:11: error: implicit conversion from enumeration type
      'GstValidateReportingDetails' to different enumeration type
      'GstValidateInterceptionReturn' [-Werror,-Wenum-conversion]
    ret = iface->get_reporting_level (reporter);
        ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gst-validate-reporter.c:127:10: error: implicit conversion from enumeration type
      'GstValidateInterceptionReturn' to different enumeration type
      'GstValidateReportingDetails' [-Werror,-Wenum-conversion]
  return ret;
  ~~~~~~ ^~~
2014-10-24 15:19:19 +02:00
Mathieu Duponchelle
6cf2d92b0f build: We install all headers system wide for now.
Will be fixed when the API is deemed stable enough
2014-10-22 14:16:45 +02:00
Mathieu Duponchelle
30aef5ba84 validate: rename GstValidateReportingLevel.
Removes the confusion with GstValidateReportLevel.

Modeled on GstDebugGraphDetails.
2014-10-21 23:41:04 +02:00
Thibault Saunier
6d0930bb36 validate: Verify that elements always send a segment before pushing EOS
EOS is some kind of data flow and thus a segment event should always be
pushed before the EOS is sent
2014-10-21 20:40:27 +02:00
Thibault Saunier
23d7df3788 validate: Properly check that the seqnum of the EOS is always properly set
In the pipeline, an EOS should always have the same seqnum of the
previous SEGMENT event that was received. If the segment is the result
of a seek, it should always be the same as the seek seqnum too.

+ (Mathieu Duponchelle): fix reporting and concatenation tests.
2014-10-21 20:37:23 +02:00
Thibault Saunier
34a9c36edc validate: Add support for text based override files
Allowing user to easily determine the severity of issue
types in a config file

https://bugzilla.gnome.org/show_bug.cgi?id=737852
2014-10-21 20:23:32 +02:00
Thibault Saunier
b0d39c1c45 validate: Remove unused method
gst_media_descriptor_add_frame is not used anywhere

https://bugzilla.gnome.org/show_bug.cgi?id=737852
2014-10-21 20:21:58 +02:00
Thibault Saunier
a3513fc952 validate: Move GstStructure file parsing into utils
So it can be reused, at least in GstValidate.
2014-10-21 20:21:52 +02:00
Thibault Saunier
8ec61ddac2 validate: report: Simplify the issue ID registering using GQuarks
+ Remove unused issue types

https://bugzilla.gnome.org/show_bug.cgi?id=737790
2014-10-21 20:21:42 +02:00
Thibault Saunier
bb93dbb9fb validate: Check all buffers when we have the info from MediaDescriptor
We now check that each buffer is the expected one for each buffer that
come into the decoder.

+ Fix some minor leaks in test-utils

https://bugzilla.gnome.org/show_bug.cgi?id=736138
2014-10-21 20:21:36 +02:00
Thibault Saunier
cd9a3640b2 validate:media-descriptor-parser: Add a way to create from a string
So it is simple to make use of it from the testsuite

https://bugzilla.gnome.org/show_bug.cgi?id=736138
2014-10-21 20:14:05 +02:00
Thibault Saunier
f793d06783 report: g_critical are CRITICAL issues!
https://bugzilla.gnome.org/show_bug.cgi?id=736138
2014-10-21 20:14:05 +02:00
Thibault Saunier
b3fa06c3c1 validate: MediaDescriptors: Add md5sum to buffer informations
In the media descriptor files, we now have the md5sum of the actual
content of encoded buffers so that we can check that the buffer content is
perfectly what is was supposed to be.

+ Fix the check of whether a frame is a keyframe in the string
  comparison (g_ascii_strcasecmp  return 0 if string matches)

https://bugzilla.gnome.org/show_bug.cgi?id=736138
2014-10-21 20:14:05 +02:00
Thibault Saunier
50273c42a9 validate: Move some method between GstMediaDescriptorParser and GstMediaDescriptor
So that method land where they actually belong.

https://bugzilla.gnome.org/show_bug.cgi?id=736138
2014-10-21 20:14:05 +02:00
Thibault Saunier
c5dfd9c8c8 validate: Add a way to pass a MediaDescriptor around monitors
And add an option in gst-validate so that the user can define what
media descriptor file to use.

https://bugzilla.gnome.org/show_bug.cgi?id=736138
2014-10-21 20:14:05 +02:00
Thibault Saunier
c8a99218de validate:media-descriptor: Handle stream with no tags
It was segfaulting before.
2014-10-21 20:14:05 +02:00
Thibault Saunier
8f5347c465 validate: Move some method between GstMediaDescriptorParser and GstMediaDescriptor
So that method land where they actually belong.
2014-10-21 20:14:05 +02:00
Mathieu Duponchelle
c542d9c6bc validate-report / reporter: rework the way we repeat issues.
+ runner: update reports count algorithm.
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
5690a02e0a pad-monitor: mark the peer pad as EOS too.
When a sink pad gets EOS, its src pad monitor should also
be marked as EOS (helpful with issue concatenation).
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
0b1d00df25 validate-pad-monitor / runner: Check per-object reporting levels. 2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
167c29125d validate-report: Set conditions in which a report can't be master. 2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
582cebeae6 validate-report: Add a reporting level field and setter. 2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
030e7e8ba8 validate-runner: implement synthetic report.
+ Fix criticals logic in validate_runner_printf
+ Update padmonitor tests
+ Split validate_report_printf function.
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
1993229993 validate-runner: Implement REPORT_NONE for global reporting.
Yeah that was tough. Helpful already though, for example:
GST_VALIDATE_REPORT_LEVEL=none,x:all gst-validate src name=x ! sink
will only report issues reported by the source.

+ Add test.
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
0a1cdb2164 tests: Check monitors correctly determine their reporting level.
+ [API] gst_validate_reporter_get_reporting_level
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
5cb60060dc validate-runner / monitor: Let the user single out pads.
That's some pretty specific code but it should be helpful.
The following syntax can be used : element-name::pad-name.

+ Free return of gst_object_get_name.
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
b21bb1ff34 validate-runner / reporter: Sanitize reports refcounting.
The previous code worked but was confusing, the runner didn't actually
take the ref it was releasing later.

+ Fix indentation.
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
de554ba417 tests: Test reports refcounts.
+ Set the element monitor on the element as qdata.
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
c943a75766 validate-monitor: Determine the reporting level at setup. 2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
1d7f15598f validate-runner: Add code to parse GST_VALIDATE_REPORT_LEVEL.
+ Extend the tests.
+ [API] gst_validate_runner_get_default_reporting_level
+ [API] gst_validate_runner_get_reporting_level_for_name
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
6ed125bfb1 validate-runner: report-level initial work.
+ Defines reporting levels and document them.
+ Add API to get the default level.
+ fix indentation.
+ fix some typos.
+ Add the beginning of a reporting test.
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
6e08079f8b validate-pad-monitor: concatenate issues.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=735665

The process is to check for a similar report in intercept_report on
the pads of the upstream element, set that report as the master report
of the intercepted report, and return REPORTER_KEEP instead
of REPORTER_REPORT.
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
f001777cc6 validate-reporter: Add some methods
+ gst_validate_reporter_get_reports
+ gst_validate_reporter_get_reports_count
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
222a517384 validate-report: Add the notion of master / shadow reports.
A master report is a report that has been detected by a monitor
to stem from the same issue. It thus contains a list of
"shadow reports" which it will browse when printing itself.
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
b8ac717297 validate-report: Make the ref / unref functions safer. 2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
3e557ca92b validate-reporter: Add return value to intercept_report.
It will allow to drop, keep or report reports.
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
6104701268 validate-pad-monitor: Reimplement reporter interface.
+ Do nothing there for now, except chain up.
2014-10-21 20:13:51 +02:00
Mathieu Duponchelle
fb90aa2ead validate-reporter: add gst_validate_reporter_get_report.
+ Add locking.
2014-10-21 20:13:51 +02:00
Thibault Saunier
26ef55d622 validate: Print position if it could properly be queried
Otherwize we will print meaningless garbage.
2014-10-13 16:30:05 +02:00
Thibault Saunier
99045f7dbb validate: Rename action type playback_time to playback-time
Keeping backward compatiblity with the old naming
2014-10-12 20:19:42 +02:00
Thibault Saunier
02ab99fcbb validate: Rename gst_validate_add_action_type to gst_validate_register_action_type
The _register naming corresponds much better to what the method does
and makes it more similar to how we refer to this kind of action in
GStreamer.

It is a last minute API change, but that API should not change anymore
after 1.4 is released.
2014-10-12 20:10:19 +02:00
Thibault Saunier
9158bb36e3 validate: Fix the addition of playback_time in the parameter types 2014-10-12 20:00:03 +02:00
Thibault Saunier
ce87de95ea validate: Add the 'flags' for the seek action type
This was always a mandatory field but was not documented
2014-10-12 19:16:08 +02:00
Anuj Jaiswal
83c0453d81 validate: mishandled pointer criticals
Free glist of criticals

Signed-off-by: Anuj Jaiswal <anuj.jaiswal@samsung.com>

https://bugzilla.gnome.org/show_bug.cgi?id=736313
2014-10-09 20:38:12 -03:00
Mathieu Duponchelle
8cfffb4a3a validate-runner: switch to using a GList for the reports.
+ Return a copy of that list in get_reports.
+ update tests.
2014-09-30 11:42:42 +02:00
Mathieu Duponchelle
1f1cf83af8 validate-runner: Hide implementation. 2014-09-30 11:42:42 +02:00
Mathieu Duponchelle
855f141453 gst-validate-runner: Add locking for the reports list. 2014-09-30 11:42:42 +02:00
Anuj Jaiswal
c98f7e7b38 validate: (performance issue)refactor to remove duplicate assignment
Signed-off-by: Anuj Jaiswal <anuj.jaiswal@samsung.com>

https://bugzilla.gnome.org/show_bug.cgi?id=736412
2014-09-12 09:57:05 +02:00
Thibault Saunier
332a51d1f0 validate: Get the Runner reports in order of arrival
Making sure they are printed in the right order
2014-09-12 09:57:05 +02:00
Thibault Saunier
7e85c9b0b5 validate: Start a testsuite
Currently implemented tests are:
  * Settup and cleanup on monitor is done properly
  * Some tests in the PadMonitor are done properly, namely:
        - Buffer before segment
        - Buffer outside segment
        - First buffer running time is always 0
        - The Demuxer flow aggregation is properly checked

https://bugzilla.gnome.org/show_bug.cgi?id=736379
2014-09-12 09:57:05 +02:00
Edward Hervey
80de4392ce validate/private: Avoid double typdef
Instead just include required (public and local) header

gst-validate-scenario.h:43:44: error: redefinition of typedef 'GstValidateActionParameter' is a C11 feature [-Werror,-Wtypedef-redefinition]
2014-09-12 09:49:35 +02:00
Thibault Saunier
3755581fd3 validate: Take a const gchar ** in gst_validate_print_action_types
This is what we actually need and thus is cleaner.
2014-09-05 23:15:29 +02:00
Thibault Saunier
69165a9f04 validate: Implement the notion of implementer namespace to the action types
This allows users to know who implements an action type.

+ Enhance the printing of all action making it readable.
2014-09-05 23:03:58 +02:00
Thibault Saunier
34fd5af840 validate: docs: Add some GstValidate usage documentation
+ Fix minor issues in the gst-validate and gst-validate-transcoding
tools documentation
2014-09-05 19:00:23 +02:00
Guillaume Desmottes
f7955f5249 validate: remove redundant pre-condition in monitor_factory_create
The same check is already done at the head of the function.

https://bugzilla.gnome.org/show_bug.cgi?id=736019
2014-09-05 19:00:23 +02:00
Guillaume Desmottes
f900f53e95 validate: fix a couple of typos in comments
https://bugzilla.gnome.org/show_bug.cgi?id=736019
2014-09-05 19:00:23 +02:00
Thibault Saunier
7cfdb5372c validate: Use a GList to store action types instead of hashtable
It is more adapted and allows us to print the action types in a stable
maneer.
2014-09-05 19:00:23 +02:00
Thibault Saunier
eb6739c91b validate: report: Do not repeat type name when printing its details 2014-09-05 19:00:23 +02:00
Thibault Saunier
e5b485d776 validate: Document the API with gtk-doc 2014-09-05 19:00:23 +02:00
Thibault Saunier
45ffbdec07 validate: Add GObject Introspection support 2014-09-05 19:00:23 +02:00
Thibault Saunier
4fd1939b21 validate: Rework the action parameter API
Making it possible to properly define parameters, and describe them.

+ Document all action types!
2014-09-05 19:00:23 +02:00
Thibault Saunier
d29a8e4a77 validate: Add an option to print all avalaible actions with details
+ Cleanup actions descriptions
+ Make GstValidateActionType internal only and only expose the structure
2014-09-05 19:00:23 +02:00
Thibault Saunier
0ad475063d validate: Do not segfault when receiving a segment on unlink pad
For some reason we did no discover that before.
2014-09-05 19:00:23 +02:00
Thibault Saunier
8eeaa1a95f validate: Make GstValidateActionType a GstMiniObject and expose it in the API 2014-09-05 19:00:23 +02:00
Thibault Saunier
bdc09d2d4a validate:scenario: Cleanup header and add some padding to classes
Let's start making gst-validate ABI and API stable
2014-09-05 19:00:23 +02:00
Thibault Saunier
3979c49cd2 validate: The scenario only old a weak ref so unref the weak ref
We were unrefing an object we did not actually own a ref on.
2014-08-12 15:14:28 +02:00
Thibault Saunier
32dac5014a validate: Allow several outputs in GST_VALIDATE_FILE 2014-08-12 13:16:43 +02:00
Thibault Saunier
2da2c6cc56 validate:launcher: Allow limitating local HTTP server bandwith
By default we limit its bandwith to 1MBps which is somehow similare to a
good internet connection case.
2014-08-12 13:16:43 +02:00
Thibault Saunier
f42f0724e5 validate: Actually accept rounding errors and small mistakes for position
WHen seeking in paused the position right after should be pretty much
the exact one, but sometimes it can be a little different because of
rounding issues and similare.
2014-08-04 13:03:19 +02:00
Thibault Saunier
8518e08dbb validate: Add a way to avoid printing all the issue in reports
Avoiding user to be flooded by information he does not want while
debugging
2014-08-04 13:02:46 +02:00
Thibault Saunier
d682bd29a9 validate: Print the report when aborting because of an issue
Letting a chance to the user to know what bug he faced!
2014-08-04 13:02:46 +02:00
Thibault Saunier
5c50219fae validate: Enhance output about critical errors
+Lower some warning to INFO
2014-08-04 13:02:46 +02:00
Thibault Saunier
6da09fb919 validate: Allow overrides for scenario issues 2014-08-04 13:02:46 +02:00
Thibault Saunier
35b6bfb7c8 validate:scenario: Properly check that remaining actions are not 'ending' ones
When checking that all action were executed, we need to make sure that
actions such as EOS or stop are not taken into account as we might have
shorter medias than the duration of the scenario, and that should not be
fatal.

+ Plug a leak on the way
2014-07-23 17:49:44 +02:00
Thiago Santos
3cf3e7a438 gst-validate-scenario: add emit-signal
emit-signal action allows to emit signals to elements in scenarios.
The implementation only accepts signals without arguments for now but
it can be extended to use parameters if needed in the future
2014-07-22 11:59:58 -03:00
Thiago Santos
fd7c13d446 gst-validate-scenario: the structure has the type
Get the GValue directly from the structure and do not assume everything
is stored as a string and use the GstStructure's GValue to set the property
to the instances
2014-07-21 22:41:28 -03:00
Arnaud Vrac
e1b3ec2ad7 validate: Fix build on some custom platforms
We need to explicitely pass GLIB_LIBS for GModule as it seems not to be included by
GST_ALL_LIBS and we need LIBM
2014-07-21 19:09:58 +02:00
Aurélien Zanelli
d1c261f5b1 validate: duplicate strings in gst_validate_issue_new()
Do this to avoid discarding 'const' qualifier when using it with
constant strings. Moreover it will avoid a g_free on constant string.

https://bugzilla.gnome.org/show_bug.cgi?id=733362
2014-07-18 16:28:58 +02:00
Thibault Saunier
d7d1445e67 validate: Add a set-debug-threshold scenario action
Allowing users to activate the debug only at the interesting time
2014-07-17 17:04:59 +02:00
Thibault Saunier
cd55381a5f validate: Add Gst debugging when using gst-validate printing feature
Giving usefull debugging informations in the GSt debug logs
2014-07-17 17:04:59 +02:00
Thibault Saunier
822c7eaa6e validate: Avoid segfault in the error path 2014-07-16 15:47:58 +02:00
Thibault Saunier
f8a37a1c80 validate:media-descriptor-writer: Handle medias with 1 single stream 2014-07-16 15:47:58 +02:00
Thibault Saunier
fa35a10779 validate: Check that after a seek in PAUSED position is perfect
In case of ACCURATE seeking, the position after a SEEK in PAUSED state
should be *exactly* the one requested by the user.
2014-07-16 15:47:58 +02:00
Thiago Santos
db21883c0c scenario: add set_property scenario action
Allows setting element's properties during a scenario. Very useful
for testing that elements behave correctly when changing properties
during playing state

https://bugzilla.gnome.org/show_bug.cgi?id=733070
2014-07-11 19:43:20 -03:00
Thibault Saunier
bed0f51d6c validate: Execute actions if we get seeked in ready state 2014-07-07 11:27:35 +02:00
Thibault Saunier
87ae465c77 validate: Let scenarios tell the apps about whether it handles states
The user only needs to add handles-states=true in the description line
of the scenario
2014-07-07 11:27:34 +02:00
Thibault Saunier
52e39a4fcb validate:scenario: Do not care about the position if we are not at least in PAUSED state
At that time the position query will be meaningless so we should just go to the next
action.
2014-07-07 11:27:34 +02:00
Thibault Saunier
1c2d31dd2f validate:media-check: Changes in tags detection are not fatal issues 2014-07-07 11:27:34 +02:00
Thibault Saunier
00719fb07e validate: Properly handle CLOCK_TIME_NONE position and duration values
In the value parser.
2014-07-07 11:27:34 +02:00
Thibault Saunier
f708156ff6 validate:scenario: Move the check about whether we are still seeking upper in the function
Avoiding to try to get position and do operations on a pipeline that is seeking
2014-07-07 11:27:34 +02:00
Vincent Penquerc'h
4dc3f5171e validate-scenario: only use valid position/duration
Position/duration query may fail, or yield unknown values (eg,
unknown duration for live streams). In these cases, we must ensure
we do not use those invalid values.

https://bugzilla.gnome.org/show_bug.cgi?id=715160
2014-07-07 11:27:34 +02:00
Thibault Saunier
150c5bc6b2 validate:scenario: We are not changing state if the set_state failed. 2014-07-07 11:27:34 +02:00
Thibault Saunier
b3a168ed73 validate:scenario: Add a debug category and add some debug 2014-07-07 11:27:34 +02:00
Thibault Saunier
a4d3971709 validate: media-descirptor: Add more infos about discoverer error 2014-07-07 11:27:34 +02:00
Sebastian Dröge
b6c439ee88 validate: Don't call gst_debug_log_valist() if debugging is disabled
And also stop leaking a string every time.
2014-06-28 12:33:45 +02:00
Thibault Saunier
e847d7061a validate: pad-monitor: Do not compare not fixed sinkpad caps fields
We are only able to check that the sink pad caps values are inside the src pad
value.
2014-06-16 16:43:02 +02:00
Thibault Saunier
93d9032712 scenario: Do not be so tolerant about seek drift 2014-06-16 08:56:30 +02:00
Edward Hervey
0693805e9c pad-monitor: Handle out-of-segment first buffer
If the initial buffer is before segment.start, we don't want to raise
the "first buffer doesn't have 0 running-time" issue.

Also add debug for tracking issues
2014-06-03 10:05:25 +02:00
Edward Hervey
ca44a11429 validate: Run gst-indent on all code
so whitespace. much indent. spacing !
2014-06-03 10:05:25 +02:00
Nicolas Dufresne
fea3893686 validate: Don't pass NULL to g_strsplit 2014-05-24 01:28:36 -04:00
Edward Hervey
ebde58f1d1 validate-utils: Fix unitialized variable
gst-validate-utils.c:413:7: error: variable 'v0' is used uninitialized whenever 'if' condition is true [-Werror,-Wsometimes-uninitialized]
  if (c == '!') {
      ^~~~~~~~
gst-validate-utils.c:424:10: note: uninitialized use occurs here
  return v0;
         ^~
gst-validate-utils.c:413:3: note: remove the 'if' if its condition is always false
  if (c == '!') {
  ^~~~~~~~~~~~~~~
gst-validate-utils.c:411:13: note: initialize the variable 'v0' to silence this warning
  gdouble v0;
            ^
             = 0.0
1
2014-05-22 16:13:31 +02:00
Thibault Saunier
1a2f4a3cd3 validate: Move overrides and preload libraries to dedicated folders
This way it is cleaner and it is simpler to handle the various compilation dependencies.
2014-05-21 12:00:26 +02:00
Thibault Saunier
9660a8bd3a validate: Properly use boolean in XML 2014-05-15 09:46:24 +02:00
Thibault Saunier
92d390bc5d validate: Improve perf when writing the XML file
+ Pass the file into gst-indent
2014-05-08 17:48:39 +02:00
Thibault Saunier
ac6e463009 scenario: Add a general action to set state 2014-05-07 09:51:19 +02:00
Thibault Saunier
7d55065277 validate:scenario: Pass into gst-indent 2014-05-07 09:46:28 +02:00
Thibault Saunier
cd8000994b validate: The wait mandatory field is duration 2014-05-07 09:15:34 +02:00
Thibault Saunier
0aff591b2f validate: Make sure mandatory fields are present when parsing scenarios 2014-05-07 09:11:12 +02:00
Mathieu Duponchelle
7d4abf31e7 scenarios: add a stateless property.
This property enables the user to have actions executed independently
of the state of the pipeline.

Conflicts:
	validate/gst/validate/gst-validate-scenario.c
2014-05-06 15:37:26 +02:00
Mathieu Duponchelle
1332e9fc4f scenario: make sure to not execute actions when changing state.
Conflicts:
	validate/gst/validate/gst-validate-scenario.c
2014-05-05 17:21:06 +02:00
Thibault Saunier
aceba228ce validate: Wait for the PAUSED state to be reached before executing actions 2014-05-02 20:05:28 +02:00
Thibault Saunier
fbcee57902 validate: Implement frame by frame writing in the media descriptor writer
+ Add an option to fully parse media files in the gst-validate-media-check tool
2014-05-02 18:30:23 +02:00
Thibault Saunier
ba38d09961 validate: Execute position right when the pipeline reaches PAUSED
We might go to PAUSED SYNC if nothing happens in the pipeline
2014-05-02 18:30:23 +02:00
Thibault Saunier
efb40d9778 validate: Do not execute action when buffering
While buffering we should no try to execute anything as we would not be
controlling properly the execution.

+ Activate scrub forward seeking for HTTP streams
2014-05-02 18:30:23 +02:00
Thibault Saunier
b37fafa1e6 validate: Plug a minor leak 2014-05-02 18:30:23 +02:00
Thibault Saunier
1ffb6b4e1c validate: Allow specifying scenarios to parse when lisiting them
It used to only handle the scenario present in proper paths, we
also need to handle special scenarios provided by users on the fly
2014-05-02 18:30:22 +02:00
Thibault Saunier
f165fb41d0 validate: Handle ERROR on the bus when monitoring the pipeline
This way the user get a  clear information in the report about the issue

+ sensibly cleanup code
2014-05-02 18:30:22 +02:00
Thibault Saunier
3a1db22188 validate: Do not g_strrstr with a NULL pointer as needle 2014-05-02 18:30:22 +02:00
Thibault Saunier
3402d5556a validate: Print more details when executing the switch_track action
+ Fix some issue in the memory freeing codepath of GstValidateAction
2014-05-02 18:30:22 +02:00
Thibault Saunier
93bd46dbc2 validate: Do not try to use a NULL iter 2014-05-02 18:30:22 +02:00
Thiago Santos
385d6d4ccd pad-monitor: check that no buffers are pushed after a pad is EOS
Make sure no resources are wasted after elements are done with the
current segment
2014-05-02 12:07:53 -03:00
Thibault Saunier
676602644c validate: Expose a seeking method so other actions types can seek
Other action types might need to seek and we GstValidateScenario need
to know about it, add a method others can use to do the seeking
2014-04-26 09:52:37 +02:00
Thibault Saunier
a3a132489a Revert "validate:launcher: Always put gst-validate result as stderr in reports"
This reverts commit 925ff7542b.

Actually jenkins never  truncates on failure stacktrace... we do not
want to set gst-validate as failure stacktrace in our results. That
commit was not usefull.
2014-04-26 09:16:26 +02:00
Thibault Saunier
925ff7542b validate:launcher: Always put gst-validate result as stderr in reports
This way jenkins will always keep the information in its database even
if the test passes
2014-04-26 08:11:20 +02:00
Thibault Saunier
4f920dc405 validate: Pass -scenario.c into gst-indent and fix some docs 2014-04-25 18:33:33 +02:00
Thibault Saunier
0c4216d005 validate: Add a "dot-pipeline" action 2014-04-25 18:27:30 +02:00
Thibault Saunier
eb4a70a263 validate: Return a boolean when parsing an enum string 2014-04-25 18:26:50 +02:00
Thibault Saunier
d280d0dbc9 validate: Add a media-descriptor parser and writer 2014-04-25 14:33:06 +02:00
Thibault Saunier
f6c6043317 validate: Minor printing cleanup 2014-04-25 14:33:06 +02:00
Thibault Saunier
2d7d03d2f7 validate: Add a 'stop' action to stop a pipeline
It uses the GST_MESSAGE_REQUEST state with the scenario as a source
so that application can stop running when they receive it on the bus.
2014-04-25 14:33:06 +02:00
Thibault Saunier
38eda37341 validate: Handle position printing at the monitor level
Instead of replicating that code all around
2014-04-23 11:27:44 +02:00
Thibault Saunier
810e432da2 validate: Add printing utilities
Allowing the user to print everyting in a file through the
GST_VALIDATE_FILE env variable
2014-04-23 11:16:32 +02:00
Thibault Saunier
cac53e9078 validate: Add an action to wait for a given amout of time
During that time we will just not execute any new action

+ Lower WARNING to DEBUG when no playbcak_time is provided for an
action, it should just be 0.
2014-04-23 09:37:22 +02:00
Thibault Saunier
21a4888ae7 validate: Check that for raw, buffers are strictly contained in segment
For encoded data we might need buffers that have timestamp <
segment.start to make sure that we have the keyframe, etc... but for raw
data, buffer end should strictly be inside the segment, be more strict
about that.
2014-04-22 16:57:21 +02:00
Thibault Saunier
8527d91737 validate: PAR is not a mandatory field
Also make it possible to check other not mandatory fields in the future
2014-04-22 16:57:21 +02:00
Thibault Saunier
279625a541 validate: Do not use GST_PTR_FORMAT when reporting
It will not work now that we have our own implementation of printf for that in Gst and
thus provide us with pretty useless infos
2014-04-22 16:57:21 +02:00
Thibault Saunier
ad25b4d160 validate: Handle g_log errors at the gst-validate level 2014-04-17 12:23:04 +02:00
Thibault Saunier
8899ad004c validate: Allow comments in scenario files
Comment are per line only and start with #
2014-04-17 11:23:27 +02:00
Thibault Saunier
6104ed184f validate: Avoid segfault when discovering fails
In that case the x->stream_info might not be set
2014-04-02 19:17:24 +02:00
Thibault Saunier
7e1c83b5b9 validate: Do not build LD_PRELOAD related code on windows
And do not forget to link against gst-pbutils
2014-03-28 12:17:25 +01:00
Thibault Saunier
083d303d69 validate: Use GModule to 'dlopen' ovverrides
We want gst-validate to be cross platform so use cross platform tools
2014-03-28 10:40:19 +01:00
Thibault Saunier
ff4879c749 validate: Do not query pad caps to check if caps are properly fowarded
Query caps will actually get the caps from downstream and those caps
might be different in case there is a Filter in between. What we want is
to check that the caps set on the internally linked pads are correct.
2014-03-26 10:57:04 +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
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
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
6ab7f17386 validate:scenario: Handle backslashes in scenario files 2014-02-18 21:07:31 +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
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
5d172e159e scenario: Enhance explanation about seek execution failure 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
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
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
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
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
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
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
123ecb57c1 media-info: Do not use GST_PTR_FORMAT with g_print
Fix compilation
2013-10-14 11:20: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
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
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
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
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
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
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
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
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
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
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
ff3e435e94 data: Add a Backward and Forward seeking scenario 2013-08-22 13:55:08 -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
Thiago Santos
6df0b6c010 validade: add missing config.h includes 2013-08-14 20:03:43 -03:00
Thiago Santos
ee9f1ad9b2 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
2013-08-14 19:14:18 -03:00
Thiago Santos
3dea4388fd tools: improve documentation 2013-08-14 18:04:23 -03:00
Thiago Santos
52002376ea rename gst-qa -> gst-validate 2013-08-14 17:46:28 -03:00
Thiago Santos
ddc95f5b8c pad-monitor: only do complete caps checks on setcaps
On get caps it is acceptable to have missing fields to simplify caps
negotiation
2013-08-14 16:00:50 -03:00
Thiago Santos
848c86712b qa-preload: split to separate lib
It should only be used separately, otherwise it will wrap around any
pipeline from applications linking with gstqa
2013-08-13 13:40:48 -03:00
Thiago Santos
4f11a05baf file-check: add reverse-playback test
Adds a test that checks if reverse playback works without errors
2013-08-13 13:28:40 -03:00
Edward Hervey
737a2664f2 qa-reporter: Make debug message a bit more readable
By surrounding it with double quotes
2013-08-13 09:33:26 -03:00
Edward Hervey
5fcbf1026d pad-monitor: 0.10 uses "channel-positions" field in audio caps
And it's an array, not a string
2013-08-13 09:33:26 -03:00
Edward Hervey
c8e2e3aa67 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.
2013-08-13 09:33:25 -03:00
Thiago Santos
4af966f5ee pad-monitor: use correct variable for segment comparisons
Use the expected versus the received instead of using the received
twice.
2013-08-09 12:37:49 -03:00
Thiago Santos
e679d8531e reporter: fix printf format type 2013-08-09 12:33:27 -03:00
Thiago Santos
6544d5f67e 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.
2013-08-07 17:31:17 -03:00
Thiago Santos
71fd0e57cd qa-monitor: remove reference to the runner
qa-monitor implements qa-reporter, and we already have a runner stored
there.
2013-08-07 16:23:25 -03:00
Thiago Santos
6d4a8fd754 gitignore: ignore more binaries 2013-08-07 16:23:25 -03:00