Commit graph

1840 commits

Author SHA1 Message Date
Thibault Saunier
27fc0d45a2 validate:scenario: Stop rounding up clocktime values
This doesn't make any sense in that context
2020-02-11 15:57:56 -03:00
Thibault Saunier
d3c6611b76 validate:launcher: Fix defining several scenario with a same config
When generating tests from dictionary the dict format allows passing
several scenario for a same config and pipelines, but this was breaking
the case where expected flow is different with each config, instead we
should generate one config per scenario, fixing the expectation files
generated.
2020-02-06 14:33:56 -03:00
Thibault Saunier
600c5a27ed validate:launcher: Print the duration of the test run in the logs 2020-02-04 16:09:36 -03:00
Thibault Saunier
5b82274f17 validate:flow: Add a way to set the types of events to log/ignore
Added two properties to the plugin:
     * ignored-event-types: A list of event types to be ignored when logging events
     * logged-event-types: A list of event types to be logged when logging events

This commits also moves the "ignored-event-fields" property to using a proper
GstValueList for the list of event fields to be taken into account, instead
of the home grown separated by comas list of string, making the API more
uniform.

This also adds a simple helper method: `gst_validate_utils_get_strv`
2020-02-04 16:09:36 -03:00
Stéphane Cerveau
a2e926ff0a gst-validate-launcher: separate known error from passed tests
Introduce known_error in statistics to keep in mind the expected
error result.
2020-01-24 14:52:49 +00:00
Stéphane Cerveau
2581fef684 gst-validate-launcher: update documentation
Use the new api to create your custom testsuite.
Fix some broken links and enhance the logging system.
2020-01-24 14:52:49 +00:00
Nicolas Dufresne
1bc8e92efc launcher: Allow partionning the tests
This introduce new command line options, --parts and --part-index. When
--parts is set to a value larger then 1, the tests will be split in the
same number of group. The group number identified by --part-index will
be executed.

This is being added in orther to support gliblab CI parallel feature.
2020-01-15 10:04:11 -05:00
Thibault Saunier
e4ca67938e validate:launcher: Try to dump logs with bat if avalaible
We got to many issues with mdv, it seems not to be maintained
bat is a very good replacement.
2020-01-06 13:14:59 +00:00
Brady J. Garvin
06822b519b validate:launcher: Support mixed str/bytes control sequences.
It is not safe for `_preformat_levels` to assume that all of the fields in a
`TerminalController` have the same type; at least in my environment, some of
these fields are populated with `bytes` while others remain strings.

This change conditionally applies decoding to each control sequence separately
using a helper function `_as_string`.  As a side-effect, it also eliminates some
code repetition in `_preformat_levels`.

Closes #50.
2020-01-05 14:09:07 -06:00
Thibault Saunier
195d3a3edc validate:launcher: Enhance progress reporting using a progress bar
This also allows us to properly report progress on the CI
2019-12-30 16:52:22 +00:00
Thibault Saunier
d543375948 validate:launcher: Take our timeout factor into account for gstcheck 2019-12-30 15:56:02 +00:00
Thibault Saunier
0b3ce37eea validate:scenario: fix some typos 2019-12-30 10:25:55 -03:00
Thibault Saunier
bba35fccf2 validate:scenario: Implement an action to check property value 2019-12-30 10:25:55 -03:00
Mathieu Duponchelle
27677d4e10 check: unblacklist removed systemclock tests
See https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/348
2019-12-23 10:27:11 +01:00
Mathieu Duponchelle
48faa5944b check: unblacklist gstreamer.pipelines_parse_launch.delayed_link
It should not be flaky anymore after
https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/343
2019-12-14 10:45:30 +01:00
Thibault Saunier
1f67876928 validate:launcher: Use python dict for pipeline description 2019-12-10 13:02:16 +00:00
Edward Hervey
43815541d8 validate-scenario: Initialize variable
We could end up using it uninitialized

CID: 1444920
2019-11-27 15:33:14 +01:00
Thibault Saunier
562750213f validate: launcher: Make encoding extra check use common code path
Reusing the reporting infrastructure instead of shurtcuting it
2019-11-20 18:07:48 -03:00
Thibault Saunier
8a6ee4841b validate: Add vp9 transcoding tests
Making sure to encode small frames as vp9enc is slow.
2019-11-20 18:07:47 -03:00
Edward Hervey
4f0bfcc7bb validate: Fix memory leaks
Various structures were being leaked.
2019-11-20 10:19:00 +01:00
Thibault Saunier
80de180cc7 validate:launcher: Avoid clashes when importing testsuite
This introduce an hard dependency on python >= 3.5, same as meson
2019-11-11 18:57:27 -03:00
Jordan Petridis
6b907ba036
check: blacklist gst-plugins-good.elements_splitmux.test_splitmuxsink$
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/626
2019-11-11 14:25:16 +01:00
Stéphane Cerveau
998185acbc gstvalidate: fix GstValidateRTSPMediaDescriptor typo 2019-11-06 18:21:11 +01:00
Alicia Boya García
56d82af7b1 gst-validate-bin-monitor: Remove unused field. 2019-11-02 17:07:02 +01:00
Alicia Boya García
deca1f9cbf validateflow: Don't use colon in file names
The colon character commonly used to separate the element name and the
pad name is reserved in Windows filesystems, so it's better to use
something safer.

This patch replaces it with '-'. Please update
gst-integration-testsuites too where another commit has renamed all the
files.
2019-10-25 13:23:52 +00:00
Víctor Manuel Jáquez Leal
37a0dbfebf validate: blacklist gstreamer-vaapi checks
They still can be checked by running the tests explicitly.
2019-10-25 12:26:58 +02:00
Tim-Philipp Müller
280321dee1 validate: remove autotools build 2019-10-15 00:24:00 +01:00
Thibault Saunier
2153d82f34 validate:launcher: Fix the 'can-happen-several-times' known issue field 2019-10-02 19:22:31 +00:00
Thibault Saunier
1f68027942 validate: Check that pull_range is called from the streaming thread
`gst_pad_pull_range` should always be called from the streaming thread,
we now check that when pull_range is called, and if the sinkpad calling
the function has a GstTask with a running thread, the function is called
from that thread.
2019-10-02 19:22:31 +00:00
Nicolas Dufresne
50971aa2c6 validate-scanario: Fix crash when using installed validate
When installed, the lookup path will endup on the very last try, but the
scenario_file was left unset, which lead to a crash.
2019-09-27 16:52:51 -04:00
Matthew Waters
e3f4d51771 validate: fix build with newer gcc
In file included from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gst.h:55,
                 from ../validate/gst/validate/gst-validate-scenario.c:45:
../validate/gst/validate/gst-validate-scenario.c: In function ‘gst_validate_scenario_load’:
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:645:5: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  645 |     gst_debug_log ((cat), (level), __FILE__, GST_FUNCTION, __LINE__, \
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  646 |         (GObject *) (object), __VA_ARGS__);    \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:1067:26: note: in expansion of macro ‘GST_CAT_LEVEL_LOG’
 1067 | #define GST_ERROR(...)   GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_ERROR,   NULL, __VA_ARGS__)
      |                          ^~~~~~~~~~~~~~~~~
../validate/gst/validate/gst-validate-scenario.c:3615:5: note: in expansion of macro ‘GST_ERROR’
 3615 |     GST_ERROR ("Invalid name for scenario '%s'", scenario_name);
      |     ^~~~~~~~~
../validate/gst/validate/gst-validate-scenario.c:3615:44: note: format string is defined here
 3615 |     GST_ERROR ("Invalid name for scenario '%s'", scenario_name);
      |                                            ^~
2019-09-24 11:45:34 +10:00
Thibault Saunier
461e479802 validate:launcher: Do not hardcode pathsep 2019-08-28 15:34:31 -04:00
Matthew Waters
993b752816 validate/flow: fix werror build with android clang
../validate/plugins/flow/gstvalidateflow.c:75:3: error: redefinition of typedef 'ValidateFlowOverride' is a C11 feature [-Werror,-Wtypedef-redefinition]
} ValidateFlowOverride;
  ^
../validate/plugins/flow/gstvalidateflow.h:31:23: note: previous definition is here
G_DECLARE_FINAL_TYPE (ValidateFlowOverride, validate_flow_override,
                      ^
2019-08-28 18:33:32 +10:00
Matthew Waters
9249f60b70 validate: fix -Werror=unused-function with clang
[3623/4053] Compiling C object 'subprojects/gst-devtools/validate/plugins/flow/697521d@@gstvalidateflow@sha/gstvalidateflow.c.o'.
../subprojects/gst-devtools/validate/plugins/flow/gstvalidateflow.c:85:1: warning: unused function 'VALIDATE_IS_FLOW_OVERRIDE' [-Wunused-function]
G_DECLARE_FINAL_TYPE (ValidateFlowOverride, validate_flow_override,
^
/usr/include/glib-2.0/gobject/gtype.h:1407:26: note: expanded from macro 'G_DECLARE_FINAL_TYPE'
  static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) {                                         \
                         ^
<scratch space>:129:1: note: expanded from here
VALIDATE_IS_FLOW_OVERRIDE
^
2019-08-26 12:14:47 +00:00
Matthew Waters
cca6ae3fdb validate: fix -Werror=format-nonliteral build with clang
[3470/4053] Compiling C object 'subprojects/gst-devtools/validate/gst/validate/28db7b6@@gstvalidatetracer@sha/gst-validate-reporter.c.o'.
../subprojects/gst-devtools/validate/gst/validate/gst-validate-reporter.c:186:31: warning: format string is not a string literal [-Wformat-nonliteral]
  message = g_strdup_vprintf (format, vacopy);
                              ^~~~~~
[3487/4053] Compiling C object 'subprojects/gst-devtools/validate/gst/validate/28db7b6@@gstvalidatetracer@sha/gst-validate-report.c.o'.
../subprojects/gst-devtools/validate/gst/validate/gst-validate-report.c:1007:34: warning: format string is not a string literal [-Wformat-nonliteral]
  tmp = gst_info_strdup_vprintf (format, args);
                                 ^~~~~~
[76/151] Compiling C object 'subprojects/gst-devtools/validate/plugins/flow/697521d@@gstvalidateflow@sha/gstvalidateflow.c.o'.
../subprojects/gst-devtools/validate/plugins/flow/gstvalidateflow.c:125:65: warning: format string is not a string literal [-Wformat-nonliteral]
  if (!flow->error_writing_file && vfprintf (flow->output_file, format, ap) < 0) {
                                                                ^~~~~~
2019-08-26 12:14:47 +00:00
Philippe Normand
b0778d80c6 validate: Add a scenario for 5 seconds playback use-cases 2019-08-21 14:12:57 +00:00
Philippe Normand
83320610b2 validate/ssim: Clean-up temporary directory
When no output-dir is specified in the plugin config, a temporary directory is
created, so it needs to be removed when no-longer needed.
2019-08-21 11:50:03 +00:00
Philippe Normand
3351807107 validate/launcher: Ensure the HTTP server is started when a pipeline needs it
Pipelines declared in gst-integration-testsuites can rely on the validate HTTP
server, so when an URI pointing to it is detected, advertise the server as
needed before starting the test.

For this to work the test scenario should explicitely declare the pipeline uri,
as shown in this example:

    "some_playbin3":
    {
        "pipeline": "playbin3 uri=%(uri)s video-sink=%(videosink)s",
        "config": [
            "%(validateflow)s, pad=sink:sink"
        ],
        "scenarios": ["play_15s"],
        "uri": "http://127.0.0.1:%(http-server-port)s/defaults/html/foo.html"
    }
2019-08-21 08:37:38 +01:00
Thibault Saunier
8e01e03364 validate:launcher: Allow passing any extra_data in json test definition
This means that we can now pass any extra key that `populate_tests`
expects, meaning any key expected by FakeMediaDescriptor and
a few other keys supported by the methods such as
`expected-issues` and `extra_env_vars`
2019-08-20 13:55:52 +00:00
Thibault Saunier
556bc0bb4f launcher: Raise an exception when provided scenario can't be found 2019-08-19 10:33:20 +00:00
Aaron Boxer
e1129d2516 validate: add missing G_BEGIN/END_DECLS in validate.h 2019-08-03 20:09:32 -04:00
Mathieu Duponchelle
5a068bff72 validate: Update blacklisting reason for fast forward rtsp
While https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/issues/14
was merged, the client side (in particular rtpbasedepayload) still
isn't expected to work appropriately
2019-08-01 21:04:12 +02:00
Tim-Philipp Müller
d8d35241fe validate: fix build with older GLib versions
g_enum_to_string() is only available in newer ones.

Add compatibility workaround for the time being to decouple
this from the decision whether to bump the GLib requirement
and what to bump it to.

https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/199

Fixes #45
2019-07-29 10:08:51 +01:00
Mathieu Duponchelle
7c255a9015 scenario: fix PAUSED position check
The way this was implemented was simply wrong, first of all checking
the position against the segment after a seek in PAUSED by a query
of the pipeline position is of limited interest, and can only work
in forward playback.

Furthermore the check was a huge blob of code that didn't even look
like it was pretending to do a good job at checking the position in
reverse playback.
2019-07-26 02:34:55 +02:00
Mathieu Duponchelle
93114b55ab json tests: assume all user pipelines can seek reverse
When doing a targeted test, it is up to the user to make sure
their pipeline + scenario behaves correctly.
2019-07-26 02:26:20 +02:00
Thibault Saunier
ba4275ad00 validate:launcher: Pass the right timeout_factor is passed to subprojects 2019-07-08 23:37:31 -04:00
Thibault Saunier
aea1082116 scenario: Do not dereference NULL pointer 2019-07-08 23:36:52 -04:00
Thibault Saunier
8498861a28 validate:pipeline-monitor: Connect deep properties notification only when required
This is quite expensive and can lead to an overwhelm mainloop.
2019-07-03 15:42:32 -04:00
Thibault Saunier
258453a169 validate:scenario: Keep a reference to 'description' structure
For it to be reusable outside the scenario
2019-06-28 17:34:23 -04:00
Thibault Saunier
91728c6170 scenario: Use internal sinks when a sink bin can be used to check last-sample 2019-06-26 12:09:03 -04:00