Enable video recording

This commit is contained in:
butomo1989 2017-07-14 20:40:14 +02:00
parent 83baa09384
commit b6a1a57bed
7 changed files with 86 additions and 1 deletions

5
.gitignore vendored
View file

@ -6,4 +6,7 @@
.coverage .coverage
coverage.xml coverage.xml
xunit.xml xunit.xml
coverage/* coverage/*
# Video
video*

View file

@ -21,11 +21,14 @@ services:
scale: 1 scale: 1
ports: ports:
- 6080 - 6080
volumes:
- ./video-nexus_7.1.1:/tmp/video
environment: environment:
- DEVICE=Nexus 5 - DEVICE=Nexus 5
- CONNECT_TO_GRID=True - CONNECT_TO_GRID=True
- APPIUM=true - APPIUM=true
- SELENIUM_HOST=selenium_hub - SELENIUM_HOST=selenium_hub
- AUTO_RECORD=True
# Docker-Android for mobile website testing with chrome browser # Docker-Android for mobile website testing with chrome browser
# Chrome browser exists only for version 7.0 and 7.1.1 # Chrome browser exists only for version 7.0 and 7.1.1
@ -36,12 +39,15 @@ services:
scale: 1 scale: 1
ports: ports:
- 6080 - 6080
volumes:
- ./video-samsung_7.1.1:/tmp/video
environment: environment:
- DEVICE=Samsung Galaxy S6 - DEVICE=Samsung Galaxy S6
- CONNECT_TO_GRID=True - CONNECT_TO_GRID=True
- APPIUM=true - APPIUM=true
- SELENIUM_HOST=selenium_hub - SELENIUM_HOST=selenium_hub
- MOBILE_WEB_TEST=True - MOBILE_WEB_TEST=True
- AUTO_RECORD=True
# Docker-Android for mobile website testing with default browser # Docker-Android for mobile website testing with default browser
# Default browser exists only for version 5.0.1, 5.1.1 and 6.0 # Default browser exists only for version 5.0.1, 5.1.1 and 6.0
@ -52,9 +58,12 @@ services:
scale: 1 scale: 1
ports: ports:
- 6080 - 6080
volumes:
- ./video-samsung_5.1.1:/tmp/video
environment: environment:
- DEVICE=Samsung Galaxy S6 - DEVICE=Samsung Galaxy S6
- CONNECT_TO_GRID=True - CONNECT_TO_GRID=True
- APPIUM=true - APPIUM=true
- SELENIUM_HOST=selenium_hub - SELENIUM_HOST=selenium_hub
- MOBILE_WEB_TEST=True - MOBILE_WEB_TEST=True
- AUTO_RECORD=True

View file

@ -29,6 +29,11 @@ WORKDIR /root
# Numpy, For faster performance: https://github.com/novnc/websockify/issues/77 # Numpy, For faster performance: https://github.com/novnc/websockify/issues/77
# net-tools # net-tools
# Netstat # Netstat
#------------------
# Video Recording
#------------------
# ffmpeg
# Video recorder
#================== #==================
RUN apt-get -qqy update && apt-get -qqy install --no-install-recommends \ RUN apt-get -qqy update && apt-get -qqy install --no-install-recommends \
xterm \ xterm \
@ -39,6 +44,7 @@ RUN apt-get -qqy update && apt-get -qqy install --no-install-recommends \
menu \ menu \
python-numpy \ python-numpy \
net-tools \ net-tools \
ffmpeg \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
#======= #=======
@ -100,6 +106,7 @@ ENV DISPLAY=:0 \
LOCAL_PORT=5900 \ LOCAL_PORT=5900 \
TARGET_PORT=6080 \ TARGET_PORT=6080 \
TIMEOUT=1 \ TIMEOUT=1 \
VIDEO_PATH=/tmp/video \
LOG_PATH=/var/log/supervisor LOG_PATH=/var/log/supervisor
#=============== #===============

View file

@ -30,6 +30,11 @@ WORKDIR /root
# net-tools # net-tools
# Netstat # Netstat
#------------------ #------------------
# Video Recording
#------------------
# ffmpeg
# Video recorder
#------------------
# KVM Package # KVM Package
# for emulator x86 # for emulator x86
# https://help.ubuntu.com/community/KVM/Installation # https://help.ubuntu.com/community/KVM/Installation
@ -48,6 +53,7 @@ RUN apt-get -qqy update && apt-get -qqy install --no-install-recommends \
menu \ menu \
python-numpy \ python-numpy \
net-tools \ net-tools \
ffmpeg \
qemu-kvm \ qemu-kvm \
libvirt-bin \ libvirt-bin \
ubuntu-vm-builder \ ubuntu-vm-builder \
@ -113,6 +119,7 @@ ENV DISPLAY=:0 \
LOCAL_PORT=5900 \ LOCAL_PORT=5900 \
TARGET_PORT=6080 \ TARGET_PORT=6080 \
TIMEOUT=1 \ TIMEOUT=1 \
VIDEO_PATH=/tmp/video \
LOG_PATH=/var/log/supervisor LOG_PATH=/var/log/supervisor
#=============== #===============

View file

@ -29,6 +29,11 @@ WORKDIR /root
# Numpy, For faster performance: https://github.com/novnc/websockify/issues/77 # Numpy, For faster performance: https://github.com/novnc/websockify/issues/77
# net-tools # net-tools
# Netstat # Netstat
#------------------
# Video Recording
#------------------
# ffmpeg
# Video recorder
#================== #==================
RUN apt-get -qqy update && apt-get -qqy install --no-install-recommends \ RUN apt-get -qqy update && apt-get -qqy install --no-install-recommends \
xterm \ xterm \
@ -39,6 +44,7 @@ RUN apt-get -qqy update && apt-get -qqy install --no-install-recommends \
menu \ menu \
python-numpy \ python-numpy \
net-tools \ net-tools \
ffmpeg \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
#======= #=======
@ -77,6 +83,7 @@ ENV DISPLAY=:0 \
LOCAL_PORT=5900 \ LOCAL_PORT=5900 \
TARGET_PORT=6080 \ TARGET_PORT=6080 \
TIMEOUT=1 \ TIMEOUT=1 \
VIDEO_PATH=/tmp/video \
LOG_PATH=/var/log/supervisor LOG_PATH=/var/log/supervisor
#========================= #=========================

45
src/record.sh Normal file
View file

@ -0,0 +1,45 @@
#!/bin/bash
function start() {
mkdir -p $VIDEO_PATH
sw=$(($SCREEN_WIDTH - 1))
sh=$(($SCREEN_HEIGHT - 1))
name="$DEVICE-$BROWSER-$(date '+%d/%m/%Y-%H:%M:%S')"
echo "Start video recording"
ffmpeg -video_size $swx$sh -framerate 15 -f x11grab -i ${DISPLAY} $VIDEO_PATH/$name -y
}
function stop() {
echo "Stop video recording"
kill $(ps -ef | grep ffmpeg)
}
function auto_record() {
if [ ! -z $AUTO_RECORD ]; then
if [ ${AUTO_RECORD,,} = true ]; then
echo "Auto recording is enable. It will record the video automatically as soon as appium receive test scenario!"
# Check if there is test running
no_test=true
while $no_test; do
task=$(curl -s localhost:4723/wd/hub/sessions | jq -r '.value')
if [ -n "$task" ]; then
sleep .5
else
no_test=false
start
fi
done
# Check if test is finished
while [ $no_test = false ]; do
task=$(curl -s localhost:4723/wd/hub/sessions | jq -r '.value')
if [ -n "$task" ]; then
stop
else
sleep .5
fi
done
fi
fi
}

View file

@ -48,3 +48,10 @@ autorestart=false
stdout_logfile=%(ENV_LOG_PATH)s/docker-android.stdout.log stdout_logfile=%(ENV_LOG_PATH)s/docker-android.stdout.log
stderr_logfile=%(ENV_LOG_PATH)s/docker-android.stderr.log stderr_logfile=%(ENV_LOG_PATH)s/docker-android.stderr.log
priority=4 priority=4
[program:auto-recording]
command=./src/record.sh
autorestart=false
stdout_logfile=%(ENV_LOG_PATH)s/video-recording.stdout.log
stderr_logfile=%(ENV_LOG_PATH)s/video-recording.stderr.log
priority=4