Move files from gst-devtools into the "subprojects/gst-devtools/" subdir
[platform/upstream/gstreamer.git] / subprojects / gst-devtools / validate / launcher / testsuites / check.py
1 # -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python
2 #
3 # Copyright (c) 2016,Thibault Saunier <thibault.saunier@osg.samsung.com>
4 #
5 # This program is free software; you can redistribute it and/or
6 # modify it under the terms of the GNU Lesser General Public
7 # License as published by the Free Software Foundation; either
8 # version 2.1 of the License, or (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 # Lesser General Public License for more details.
14 #
15 # You should have received a copy of the GNU Lesser General Public
16 # License along with this program; if not, write to the
17 # Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
18 # Boston, MA 02110-1301, USA.
19
20 """
21 GStreamer unit tests
22 """
23 from launcher import utils
24
25 TEST_MANAGER = "check"
26
27 KNOWN_NOT_LEAKY = r'^check.gst-devtools.*|^check.gstreamer.*|^check-gst-plugins-base|^check.gst-plugins-ugly|^check.gst-plugins-good'
28
29 # These tests take very long compared to what they add, so let's skip them.
30 LONG_VALGRIND_TESTS = [
31     (r'check.[a-z-]*.generic_states.test_state_changes_down_seq', 'enough to run one of the sequences'),
32     (r'check.[a-z-]*.generic_states.test_state_changes_up_seq', 'enough to run one of the sequences',),
33     (r'check.gstreamer.gst_gstelement.test_foreach_pad$', '48s'),
34     (r'check.gstreamer.gst_gstinfo.info_post_gst_init_category_registration$', '21s'),
35     (r'check.gstreamer.gst_gstsystemclock.test_resolution$', '60s'),
36     (r'check.gstreamer.libs_aggregator.test_infinite_seek$', '20s'),
37     (r'check.gstreamer.libs_aggregator.test_infinite_seek_50_src$', '20s'),
38     (r'check.gstreamer.libs_gstharness.test_harness_element_ref$', '20s'),
39     (r'check.gstreamer.pipelines_simple_launch_lines.test_2_elements$', '58s'),
40     (r'check.gstreamer.pipelines_stress.test_stress$', '54s'),
41     (r'check.gstreamer.pipelines_stress.test_stress_preroll$', '27s'),
42     (r'check.gst-plugins-base.elements_appsrc.test_appsrc_block_deadlock$', '265.595s'),
43     (r'check.gst-plugins-base.elements_audioresample.test_fft$', '91.247s'),
44     (r'check.gst-plugins-base.elements_audioresample.test_timestamp_drift$', '141.784s'),
45     (r'check.gst-plugins-base.elements-videoscale.*', 'superlong'),
46     (r'check.gst-plugins-base.libs_video.test_overlay_blend$', '74.096s'),
47     (r'check.gst-plugins-base.libs_video.test_video_color_convert$', '345.271s'),
48     (r'check.gst-plugins-base.libs_video.test_video_formats$', '70.987s'),
49     (r'check.gst-plugins-base.libs_video.test_video_size_convert$', '56.387s'),
50     (r'check.gst-plugins-base.elements_audiointerleave.test_audiointerleave_2ch_pipeline_$', '5 *51.069s'),
51     (r'check.gst-plugins-base.elements_multifdsink.test_client_kick$', '46.909s'),
52     (r'check.gst-plugins-base.elements_videotestsrc.test_all_patterns$', '?'),
53     (r'check.gst-plugins-base.elements_videotestsrc.test_patterns_are_deterministic$', '?'),
54     (r'check.gst-plugins-good.elements_shapewipe.test_general$', '325s'),
55     (r'check.gst-plugins-good.elements_videocrop.test_cropping$', '245s'),
56     (r'check.gst-plugins-good.elements_videomixer.*', '30s (alsodeprecated)'),
57     (r'check.gst-plugins-good.elements_rtp_payloading.rtp_jpeg_packet_loss$', '109s'),
58     (r'check.gst-plugins-good.elements_videomixer.test_play_twice_then_add_and_play_again$', '55s'),
59     (r'check.gst-plugins-good.pipelines_effectv.test_quarktv$', '53s'),
60     (r'check.gst-plugins-good.elements_deinterlace.test_mode_disabled_passthrough$', '52s'),
61     (r'check.gst-plugins-good.elements_deinterlace.test_mode_auto_deinterlaced_passthrough$', '28s'),
62     (r'check.gst-plugins-good.elements_deinterleave.test_2_channels_caps_change$', '30s'),
63     (r'check.gst-plugins-good.elements_deinterleave.test_2_channels$', '22s'),
64     (r'check.gst-plugins-good.elements_rtpjitterbuffer.test_fill_queue$', '22s'),
65     (r'check.gst-plugins-good.elements_splitmux.test_splitmuxsink_async$', '20s'),
66     (r'check.gst-plugins-good.elements_videomixer.test_play_twice$', '22s'),
67     (r'check.gst-editing-services.nle_simple.test_one_after_other$', '40s'),
68     (r'check.gst-editing-services.nle_nleoperation.test_pyramid_operations_expandable', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/67'),
69     (r'check.gst-editing-services.nle_nleoperation.test_complex_operations', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/67'),
70     (r'check.gst-editing-services.nle_nleoperation.test_pyramid_operations', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/67'),
71     (r'check.gst-editing-services.nle_nleoperation.test_pyramid_operations2', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/67'),
72     (r'check.gst-editing-services.nle_complex.test_one_above_another', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/67'),
73     (r'check.gst-editing-services.nle_nleoperation.test_simple_operation', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/67'),
74     (r'check.gst-editing-services.seek_with_stop.check_clock_sync', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/67'),
75     (r'check.gst-editing-services.edit_while_seeked_with_stop', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/67'),
76     (r'check.gst-editing-services.seek_with_stop', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/67'),
77     (r'check.gst-editing-services.nle_tempochange.test_tempochange_seek', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/67'),
78     (r'check.gst-editing-services.nle_tempochange.test_tempochange_play', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/67'),
79 ]
80
81 VALGRIND_BLACKLIST = [
82     (r'check.gstreamer.gst_gstsystemclock.test_stress_cleanup_unschedule', '?'),
83     (r'check.gstreamer.gst_gstsystemclock.test_stress_reschedule', '?'),
84     (r'check.gstreamer.tools_gstinspect', '?'),
85     (r'check.gst-plugins-base.elements_videoscale', '?'),
86     (r'check.gst-plugins-base.pipelines_gl_launch_lines', '?'),
87     (r'check.gst-plugins-base.libs_gstgl', 'driver leaks / memory access'),
88     (r'check.gst-plugins-base.elements_gl', 'driver leaks / memory access'),
89     (r'check.gst-plugins-base.elements_libvisual', 'uninitialized memory access'),
90     (r'check.gst-plugins-base.generic_states', 'need to add gl elements to ignore list but only if using valgrind'),
91     (r'check.gst-plugins-good.elements_rtpjitterbuffer.test_push_backward_seq', 'flaky in valgrind'),
92     (r'check.gst-plugins-good.elements_rtpjitterbuffer.test_push_unordered', 'flaky in valgrind'),
93     (r'check.gst-plugins-bad.elements_assrender', '?'),
94     (r'check.gst-plugins-bad.elements_camerabin', '?'),
95     (r'check.gst-plugins-bad.elements_line21', '?'),
96     (r'check.gst-plugins-bad.elements_mpeg2enc', '?'),
97     (r'check.gst-plugins-bad.elements_mplex', '?'),
98     (r'check.gst-plugins-bad.elements_mxfmux', '?'),
99     (r'check.gst-plugins-bad.elements_x265enc', '?'),
100     (r'check.gst-plugins-bad.elements_zbar', '?'),
101     (r'check.gst-plugins-bad.elements_webrtcbin.test_data_channel_remote_notify', 'Need to fix leaks'),
102     (r'check.gst-plugins-bad.elements_webrtcbin.test_data_channel_pre_negotiated', 'Need to fix leaks'),
103     (r'check.gst-plugins-bad.elements_webrtcbin.test_data_channel_low_threshold', 'Need to fix leaks'),
104     (r'check.gst-plugins-bad.elements_webrtcbin.test_data_channel_transfer_data', 'Need to fix leaks'),
105     (r'check.gst-plugins-bad.elements_webrtcbin.test_data_channel_transfer_string', 'Need to fix leaks'),
106     (r'check.gst-plugins-bad.elements_webrtcbin.test_data_channel_create_after_negotiate', 'Need to fix leaks'),
107     (r'check.gst-plugins-bad.elements_webrtcbin.test_data_channel_max_message_size', 'Need to fix leaks'),
108     (r'check.gst-plugins-bad.elements_webrtcbin.test_renego_data_channel_add_stream', 'Need to fix leaks (possibly flaky)'),
109     (r'check.gst-libav.generic_plugin_test', '?'),
110     (r'check.gst-libav.generic_libavcodec_locking', '?'),
111     (r'check.gst-libav.elements_avdemux_ape', '?'),
112     (r'check.gst-editing-services.pythontests', 'Need to figure out how to introduce python suppressions'),
113     (r'check.gst-editing-services.check_keyframes_in_compositor_two_sources', 'Valgrind exit with an exitcode 20 but shows no issue: https://gitlab.freedesktop.org/thiblahute/gst-editing-services/-/jobs/4079972')
114 ]
115
116 BLACKLIST = [
117     (r'check.gstreamer.gst_gstsystemclock.test_stress_cleanup_unschedule', 'flaky under high server load'),
118     (r'check.gstreamer.gst_gstsystemclock.test_stress_reschedule', 'flaky under high server load'),
119     (r'check.gstreamer.pipelines_seek.test_loopback_2$', '?'),
120     (r'check.gstreamer.gst_gstelement.test_foreach_pad$', '?'),
121     (r'check.gstreamer.libs_baseparse.parser_pull_short_read$', '?'),
122     (r'check.gst-plugins-base.elements_multisocketsink.test_sending_buffers_with_9_gstmemories$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/525'),
123     (r'check.gst-plugins-base.elements_multisocketsink.test_client_next_keyframe$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/516'),
124     (r'check.gst-plugins-base.elements_multisocketsink.test_add_client$', ''),
125     (r'check.gst-plugins-base.libs_gstglcolorconvert.test_reorder_buffer$', '?'),
126     (r'check.gst-plugins-base.elements_audiotestsrc.test_layout$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/535'),
127     (r'check.gst-plugins-good.elements_souphttpsrc.test_icy_stream$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/307'),
128     (r'check.gst-plugins-good.elements_rtpbin.test_sender_eos$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/527'),
129     (r'check.gst-plugins-good.elements_rtpbin.test_cleanup_recv$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/546'),
130     (r'check.gst-plugins-good.elements_flvmux.test_incrementing_timestamps$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/530'),
131     (r'check.gst-plugins-good.elements_flvmux.test_video_caps_late$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/543'),
132     (r'check.gst-plugins-base.elements_appsrc.test_appsrc_blocked_on_caps$', '?'),
133     (r'check.gst-plugins-good.elements_splitmux.test_splitmuxsink$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/626'),
134     (r'check.gst-plugins-good.elements_splitmux.test_splitmuxsrc_sparse_streams$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/544'),
135     (r'check.gst-plugins-good.elements_splitmux.test_splitmuxsrc_caps_change$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/547'),
136     (r'check.gst-plugins-bad.elements_dtls.test_data_transfer$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/811'),
137     (r'check.gst-plugins-bad.elements_dtls.test_create_and_unref$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/811'),
138     (r'check.gst-plugins-bad.elements_camerabin.test_image_video_cycle$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/864'),
139     (r'check.gst-plugins-bad.elements_camerabin.test_single_video_recording$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/864#note_101558'),
140     (r'check.gst-plugins-bad.elements_camerabin.test_multiple_video_recordings$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/864#note_101646'),
141     (r'check.gst-plugins-bad.elements_curlhttpsrc.test_multiple_http_requests$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/932'),
142     (r'check.gst-plugins-good.elements_rtpsession.test_multiple_senders_roundrobin_rbs$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/548'),
143     (r'check.gst-plugins-bad.elements_shm.test_shm_live$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/847'),
144     (r'check.gst-plugins-good.elements_splitmux.test_splitmuxsink_async$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/531'),
145     (r'check.gst-plugins-bad.elements_netsim.netsim_stress$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/849'),
146     (r'check.gst-editing-services.nle_complex.test_one_expandable_another$', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/55'),
147     (r'check.gst-editing-services.nle_simple.test_simplest$', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/57'),
148     (r'check.gst-editing-services.ges_basic.test_ges_pipeline_change_state$', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/58'),
149     (r'check.gst-editing-services.pythontests.pyunittest.python.test_timeline.TestTransitions.test_transition_type$', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/62'),
150     (r'check.gst-editing-services.pythontests.pyunittest.python.test_timeline.TestTransitions.test_auto_transition$', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/63'),
151     (r'check.gst-plugins-base.pipelines_tcp.test_that_tcpserversink_and_tcpclientsrc_are_symmetrical$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/221'),
152     (r'check.gstreamer.elements_capsfilter.test_unfixed_downstream_caps$', 'https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/335'),
153     (r'check.gst-rtsp-server.gst_rtspclientsink.test_record$', 'https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/issues/55'),
154     (r'check.gst-rtsp-server.gst_rtspserver.test_shared_udp$', 'https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/issues/61'),
155     (r'check.gst-plugins-base.elements_audiomixer.test_flush_start_flush_stop$', 'https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/555'),
156     (r'check.gstreamer-sharp.SdpTests$', 'https://gitlab.freedesktop.org/gstreamer/gstreamer-sharp/issues/17'),
157     (r'check.gst-devtools.validate.launcher_tests.test_validate.launch_pipeline.not_negotiated.caps_query_failure.play_15s$', '?'),
158     (r'check.gst-editing-services.nle_simple.test_one_bin_after_other$', 'https://gitlab.freedesktop.org/gstreamer/gst-editing-services/issues/66'),
159     (r'check.gstreamer-vaapi.*$', 'only run the tests explicitly'),
160 ]
161
162
163 def setup_tests(test_manager, options):
164     if options.gst_check_leak_trace_testnames == 'known-not-leaky':
165         options.gst_check_leak_trace_testnames = KNOWN_NOT_LEAKY
166     test_manager.set_default_blacklist(BLACKLIST)
167     if options.valgrind:
168         test_manager.set_default_blacklist(VALGRIND_BLACKLIST)
169         if options.long_limit <= utils.LONG_TEST:
170             test_manager.set_default_blacklist(LONG_VALGRIND_TESTS)
171
172     test_manager.register_tests()
173     return True