mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-04 10:51:13 +00:00
51 lines
3.2 KiB
Text
51 lines
3.2 KiB
Text
meta,
|
|
handles-states=true,
|
|
ignore-eos=true,
|
|
allow-errors=true,
|
|
args = {
|
|
"playbin3 name=pb video-sink=fakesink audio-sink=fakesink",
|
|
},
|
|
expected-issues = {
|
|
# First attempt to play while the mpd is not available
|
|
"expected-issue, issue-id=\"runtime::error-on-bus\", details=\".*Service Unavailable.*\"",
|
|
"expected-issue, issue-id=\"runtime::error-on-bus\", details=\".*Got error: Internal data stream error.*\"",
|
|
"expected-issue, issue-id=\"scenario::execution-error\", details=\".*Error message happened while executing action.*\"",
|
|
# Spurious error that happens racily when tearing down the pipeline
|
|
"expected-issue, issue-id=\"runtime::error-on-bus\", details=\".*Stream doesn't contain enough.*\", sometimes=true",
|
|
|
|
# Second attempt to play while the first chunk is not available
|
|
"expected-issue, issue-id=\"runtime::error-on-bus\", details=\".*Fragment downloading has failed consecutive times.*\"",
|
|
"expected-issue, issue-id=\"scenario::execution-error\", details=\".*Error message happened while executing action.*\"",
|
|
}
|
|
|
|
start-http-server, working-directory="$(test_dir)/../../../medias/defaults/dash/webm/"
|
|
set-properties, pb::uri="http://127.0.0.1:$(http_server_port)/output.mpd"
|
|
|
|
# Force the HTTP server to return 503 (Service Unavailable) for the first 3 attempts
|
|
# to download the DASH manifest (output.mpd). souphttpsrc will retry 3 times by
|
|
# default, and then fail. After these 3 failures, we get the
|
|
# "First attempt to play while the mpd is not available" expected issues
|
|
http-request, uri="http://127.0.0.1:$(http_server_port)/admin/status-rules", method=PUT, headers="application/json",
|
|
body="{\"path\": \"/output.mpd\", \"repeat\": 3, \"status_code\": 503}"
|
|
play, description="Playing will fail as souphttpsrc::retries=3 by default"
|
|
|
|
# 1. Force HTTP 503 errors for the first media segment (chunk-stream0-00001.webm)
|
|
# 2. The manifest download will succeed (previous errors cleared)
|
|
# 3. dashdemux will start downloading media segments
|
|
# 4. The first segment download will fail 3 times (adaptivedemux retry limit)
|
|
# 5. Pipeline should fail with "Fragment downloading has failed consecutive times"
|
|
http-request, uri="http://127.0.0.1:$(http_server_port)/admin/status-rules", method=PUT, headers="application/json",
|
|
body="{\"path\": \"/chunk-stream0-00001.webm\", \"repeat\": 3, \"status_code\": 503}"
|
|
|
|
play, description="Playing will fail as adaptivedemux retries max 3 times"
|
|
|
|
# Make sure that if download errors happen only twice, either for the manifest or chunks, the pipeline plays
|
|
http-request, uri="http://127.0.0.1:$(http_server_port)/admin/status-rules", method=PUT, headers="application/json",
|
|
body="{\"path\": \"/output.mpd\", \"repeat\": 2, \"status_code\": 503}"
|
|
play, description="Playing now that all errors have been cleared and content is available"
|
|
set-state, state=null, playback-time=1.0
|
|
|
|
http-request, uri="http://127.0.0.1:$(http_server_port)/admin/status-rules", method=PUT, headers="application/json",
|
|
body="{\"path\": \"/chunk-stream0-00001.webm\", \"repeat\": 2, \"status_code\": 503}"
|
|
play, description="Playing now that all errors have been cleared and content is available"
|
|
stop, playback-time=1.0
|