Docker: Video recorder/uploader listen on session events#3070
Docker: Video recorder/uploader listen on session events#3070
Conversation
Signed-off-by: Viet Nguyen Duc <viet.dnguyen@katalon.com>
PR Compliance Guide 🔍Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label |
||||||||||||||||||||||||||||||||
PR Code Suggestions ✨Explore these optional code suggestions:
|
||||||||||||||||||||||||||
CI Feedback 🧐A test triggered by this PR failed. Here is an AI-generated analysis of the failure:
|
User description
Thanks for contributing to the Docker-Selenium project!
A PR well described will help maintainers to quickly review and merge it
Before submitting your PR, please check our contributing guidelines, applied for this repository.
Avoid large PRs, help reviewers by making them as simple and short as possible.
Description
Fixes #3067
Motivation and Context
Types of changes
Checklist
PR Type
Enhancement
Description
Implement event-driven video recording and uploading service
Add Python entry points for recorder and uploader with fallback support
video_recorder.pyswitches between event-driven and shell-based modesvideo_uploader.pyidles in event-driven mode, delegates to unified serviceIntroduce comprehensive session state management and internal async queue
Add support for selective upload based on session failure status
SE_UPLOAD_FAILURE_SESSION_ONLYenvironment variableUpdate Docker configuration and supervisor configs
pyzmqdependency to base imageInclude test docker-compose file for event-driven setup
Diagram Walkthrough
File Walkthrough
video_recorder.py
Video recorder entry point with mode detectionVideo/video_recorder.py
SE_EVENT_DRIVEN_SERVICESenvironmentvariable
VideoServicein event-driven mode/opt/bin/video.shin traditional modevideo_service.py
Unified event-driven video recording and upload serviceVideo/video_service.py
lines)
session-created,session-closed,and
session-eventeventsSessionStatedataclass)
options
SE_UPLOAD_FAILURE_SESSION_ONLY/statusendpoint for distributed Hub-Nodesfiltering
video_uploader.py
Video uploader entry point with mode detectionVideo/video_uploader.py
SE_EVENT_DRIVEN_SERVICESenvironmentvariable
uploads)
/opt/bin/upload.shin traditional modeDockerfile
Add pyzmq dependency to base imageBase/Dockerfile
pyzmqto pip dependencies for ZeroMQ async supportevent bus
recorder.conf
Update recorder supervisor config to use Python entry pointVideo/recorder.conf
/opt/bin/video.shtopython3 /opt/bin/video_recorder.pyuploader.conf
Update uploader supervisor config to use Python entry pointVideo/uploader.conf
/opt/bin/upload.shtopython3 /opt/bin/video_uploader.pydocker-compose-v3-event-driven-arm64.yml
Test docker-compose for event-driven video recordingtests/docker-compose-v3-event-driven-arm64.yml
SE_EVENT_DRIVEN_SERVICES=truerclone configuration