Skip to content

Commit 6047524

Browse files
authored
Docker: Improve video recorder process (#2742)
Signed-off-by: Viet Nguyen Duc <[email protected]>
1 parent 55240ca commit 6047524

File tree

5 files changed

+27
-24
lines changed

5 files changed

+27
-24
lines changed

.github/actions/get-latest-upstream/action.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ runs:
2525
RELEASE=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases | jq -r '[.[] | select(.prerelease == false)] | .[0].tag_name')
2626
else
2727
echo "Getting the latest Nightly release."
28-
RELEASE=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases | jq -r '[.[] | select(.prerelease == true)] | .[0].tag_name')
28+
RELEASE=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases | jq -r '[.[] | select(.prerelease == true)] | .[0].tag_name' || echo "")
2929
if [ -z "${RELEASE}" ]; then
3030
echo "Nightly release not found, getting the latest stable release."
3131
RELEASE=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases | jq -r '[.[] | select(.prerelease == false)] | .[0].tag_name')

.github/workflows/docker-test.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ jobs:
252252
if: contains(matrix.os, 'arm') == false
253253
uses: nick-invision/retry@master
254254
with:
255-
timeout_minutes: 40
255+
timeout_minutes: 90
256256
max_attempts: 2
257257
retry_wait_seconds: 60
258258
command: |
@@ -261,7 +261,7 @@ jobs:
261261
if: contains(matrix.os, 'arm') == true
262262
uses: nick-invision/retry@master
263263
with:
264-
timeout_minutes: 40
264+
timeout_minutes: 90
265265
max_attempts: 2
266266
retry_wait_seconds: 60
267267
command: |

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -951,7 +951,7 @@ chart_render_template:
951951
RENDER_HELM_TEMPLATE_ONLY=true NAMESPACE=$(NAME) KEDA_TAG_VERSION=$(KEDA_TAG_VERSION) BUILD_DATE=$(BUILD_DATE) make chart_test_autoscaling_disabled chart_test_autoscaling_deployment_https chart_test_autoscaling_deployment chart_test_autoscaling_job_https chart_test_autoscaling_job_hostname chart_test_autoscaling_job chart_test_autoscaling_playwright_connect_grid
952952

953953
chart_test_autoscaling_disabled:
954-
PLATFORMS=$(PLATFORMS) TEST_CHROMIUM=true RELEASE_NAME=selenium SELENIUM_GRID_AUTOSCALING=false CHART_ENABLE_TRACING=true TEST_PATCHED_KEDA=$(TEST_PATCHED_KEDA) TEST_CUSTOM_SPECIFIC_NAME=true \
954+
PLATFORMS=$(PLATFORMS) TEST_CHROMIUM=true RELEASE_NAME=selenium SELENIUM_GRID_AUTOSCALING=false CHART_ENABLE_TRACING=true TEST_PATCHED_KEDA=$(TEST_PATCHED_KEDA) TEST_CUSTOM_SPECIFIC_NAME=true SELENIUM_GRID_MONITORING=false \
955955
SECURE_INGRESS_ONLY_GENERATE=true SELENIUM_GRID_PROTOCOL=https SELENIUM_GRID_HOST=$$(hostname -I | cut -d' ' -f1) SELENIUM_GRID_PORT=443 EXTERNAL_UPLOADER_CONFIG=true \
956956
VERSION=$(TAG_VERSION) VIDEO_TAG=$(FFMPEG_TAG_VERSION)-$(BUILD_DATE) KEDA_BASED_NAME=$(KEDA_BASED_NAME) KEDA_BASED_TAG=$(KEDA_BASED_TAG) NAMESPACE=$(NAMESPACE) BINDING_VERSION=$(BINDING_VERSION) BASE_VERSION=$(BASE_VERSION) \
957957
TEMPLATE_OUTPUT_FILENAME="k8s_nodeChromium_enableTracing_secureIngress_generateCerts_ingressPublicIP_subPath.yaml" \

Video/video.sh

+16-20
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,14 @@ function stop_recording() {
145145
stop_ffmpeg
146146
echo "$(date -u +"${ts_format}") [${process_name}] - Video recording stopped"
147147
recorded_count=$((recorded_count + 1))
148+
recording_started="false"
148149
if [[ "${VIDEO_UPLOAD_ENABLED}" = "true" ]] && [[ -n "${UPLOAD_DESTINATION_PREFIX}" ]]; then
149150
upload_destination=${UPLOAD_DESTINATION_PREFIX}/${video_file_name}
150151
echo "$(date -u +"${ts_format}") [${process_name}] - Add to pipe a signal Uploading video to $upload_destination"
151152
echo "$video_file ${UPLOAD_DESTINATION_PREFIX}" >>${UPLOAD_PIPE_FILE} &
152153
elif [[ "${VIDEO_UPLOAD_ENABLED}" = "true" ]] && [[ -z "${UPLOAD_DESTINATION_PREFIX}" ]]; then
153154
echo "$(date -u +"${ts_format}") [${process_name}] - Upload destination not known since UPLOAD_DESTINATION_PREFIX is not set. Continue without uploading."
154155
fi
155-
recording_started="false"
156156
}
157157

158158
function check_if_ffmpeg_running() {
@@ -182,7 +182,6 @@ function wait_for_file_integrity() {
182182
function stop_if_recording_inprogress() {
183183
if [[ "$recording_started" = "true" ]] || check_if_ffmpeg_running; then
184184
stop_recording
185-
wait_for_file_integrity
186185
fi
187186
}
188187

@@ -223,7 +222,6 @@ if [[ "${VIDEO_UPLOAD_ENABLED}" != "true" ]] && [[ "${VIDEO_FILE_NAME}" != "auto
223222
if ps -p $FFMPEG_PID >/dev/null; then
224223
wait $FFMPEG_PID
225224
fi
226-
wait_for_file_integrity
227225

228226
else
229227
trap graceful_exit_force SIGTERM SIGINT EXIT
@@ -247,34 +245,32 @@ else
247245
video_file_name="${return_list[1]}.mp4"
248246
endpoint_url="${return_list[2]}"
249247
/opt/bin/validate_endpoint.sh "${endpoint_url}" "true"
250-
echo "$(date -u +"${ts_format}") [${process_name}] - Start recording: $caps_se_video_record, video file name: $video_file_name"
251-
log_node_response
252-
fi
253-
if [[ "$session_id" != "null" && "$session_id" != "" && "$session_id" != "reserved" && "$recording_started" = "false" && "$caps_se_video_record" = "true" ]]; then
254-
video_file="${VIDEO_FOLDER}/$video_file_name"
255-
echo "$(date -u +"${ts_format}") [${process_name}] - Starting to record video"
256-
ffmpeg -hide_banner -loglevel warning -flags low_delay -threads 2 -fflags nobuffer+genpts -strict experimental -y -f x11grab \
257-
-video_size ${VIDEO_SIZE} -r ${FRAME_RATE} -i ${DISPLAY} ${SE_AUDIO_SOURCE} -codec:v ${CODEC} ${PRESET} -pix_fmt yuv420p "$video_file" &
258-
FFMPEG_PID=$!
259-
if ps -p $FFMPEG_PID >/dev/null; then
260-
recording_started="true"
248+
if [[ "$caps_se_video_record" = "true" ]]; then
249+
echo "$(date -u +"${ts_format}") [${process_name}] - Start recording: $caps_se_video_record, video file name: $video_file_name"
250+
log_node_response
251+
video_file="${VIDEO_FOLDER}/$video_file_name"
252+
echo "$(date -u +"${ts_format}") [${process_name}] - Starting to record video"
253+
ffmpeg -hide_banner -loglevel warning -flags low_delay -threads 2 -fflags nobuffer+genpts -strict experimental -y -f x11grab \
254+
-video_size ${VIDEO_SIZE} -r ${FRAME_RATE} -i ${DISPLAY} ${SE_AUDIO_SOURCE} -codec:v ${CODEC} ${PRESET} -pix_fmt yuv420p "$video_file" &
255+
FFMPEG_PID=$!
256+
if ps -p $FFMPEG_PID >/dev/null; then
257+
recording_started="true"
258+
prev_session_id=$session_id
259+
fi
260+
echo "$(date -u +"${ts_format}") [${process_name}] - Video recording started"
261+
sleep ${poll_interval}
261262
fi
262-
echo "$(date -u +"${ts_format}") [${process_name}] - Video recording started"
263-
sleep ${poll_interval}
264263
elif [[ "$session_id" != "$prev_session_id" && "$recording_started" = "true" ]]; then
265264
stop_recording
266-
wait_for_file_integrity
267265
if [[ $max_recorded_count -gt 0 ]] && [[ $recorded_count -ge $max_recorded_count ]]; then
268266
echo "$(date -u +"${ts_format}") [${process_name}] - Node will be drained since max sessions reached count number ($max_recorded_count)"
269267
exit
270268
fi
271269
elif [[ $recording_started = "true" ]]; then
272270
echo "$(date -u +"${ts_format}") [${process_name}] - Video recording in progress"
273271
sleep ${poll_interval}
274-
else
275-
sleep ${poll_interval}
276272
fi
277-
prev_session_id=$session_id
278273
done
274+
stop_if_recording_inprogress
279275
echo "$(date -u +"${ts_format}") [${process_name}] - Node API is not responding now, exiting..."
280276
fi

tests/charts/make/chart_test.sh

+7
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ if [ "${TEST_UPGRADE_CHART}" != "true" ] && [ "${RENDER_HELM_TEMPLATE_ONLY}" !=
160160
kubectl create ns ${SELENIUM_NAMESPACE} || true
161161
kubectl apply -n ${SELENIUM_NAMESPACE} -f ${LOCAL_PVC_YAML}
162162
kubectl describe pod,svc,pv,pvc -n ${SELENIUM_NAMESPACE} -l app=ftp-server
163+
kubectl delete pod -n ${SELENIUM_NAMESPACE} -l app=ftp-server --force --grace-period=0
163164
fi
164165

165166
if [ "${TEST_NAME_OVERRIDE}" = "true" ]; then
@@ -472,6 +473,12 @@ elif [ "${TEST_EXISTING_KEDA}" != "true" ]; then
472473
fi
473474
fi
474475

476+
if [ "${TEST_UPGRADE_CHART}" != "true" ]; then
477+
HELM_COMMAND_SET_IMAGES="${HELM_COMMAND_SET_IMAGES} \
478+
--set autoscaling.patchObjectFinalizers.enabled=false \
479+
"
480+
fi
481+
475482
HELM_COMMAND_ARGS="${RELEASE_NAME} \
476483
${HELM_COMMAND_SET_BASE_VALUES} \
477484
${HELM_COMMAND_SET_AUTOSCALING} \

0 commit comments

Comments
 (0)