Fix video recording for integration tests
libav-tools package doesn't exist anymore so we need to use ffmpeg now to capture the screen. Change-Id: I58384f42ded3ed864de0dc2a9a56d2d9943168b9
This commit is contained in:
parent
63cf09e07e
commit
8f887350e0
@ -1,4 +1,5 @@
|
||||
# selenium tests
|
||||
ffmpeg [selenium]
|
||||
firefox [selenium]
|
||||
xvfb [selenium platform:dpkg]
|
||||
# already part of xorg-x11-server on openSUSE
|
||||
|
@ -44,14 +44,16 @@ ROOT_LOGGER.setLevel(logging.DEBUG)
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
IS_SELENIUM_HEADLESS = os.environ.get('SELENIUM_HEADLESS', False)
|
||||
|
||||
ROOT_PATH = os.path.dirname(os.path.abspath(config.__file__))
|
||||
|
||||
SCREEN_SIZE = (None, None)
|
||||
|
||||
if not subprocess.call('which xdpyinfo > /dev/null 2>&1', shell=True):
|
||||
try:
|
||||
SCREEN_SIZE = subprocess.check_output('xdpyinfo | grep dimensions',
|
||||
shell=True).split()[1].split('x')
|
||||
SCREEN_SIZE = subprocess.check_output(
|
||||
'xdpyinfo | grep dimensions',
|
||||
shell=True).decode().split()[1].split('x')
|
||||
except subprocess.CalledProcessError:
|
||||
LOG.info("Can't run 'xdpyinfo'")
|
||||
else:
|
||||
|
@ -26,19 +26,21 @@ class VideoRecorder(object):
|
||||
def __init__(self, width, height, display='0.0', frame_rate=15):
|
||||
self.is_launched = False
|
||||
self.file_path = mktemp() + '.mp4'
|
||||
# avconv -f x11grab -r 15 -s 1920x1080 -i :0.0 -codec libx264 out.mp4
|
||||
self._cmd = ['avconv', '-f', 'x11grab', '-r', str(frame_rate),
|
||||
'-s', '{}x{}'.format(width, height),
|
||||
# ffmpeg -video_size 1921x1080 -framerate 15 -f x11grab -i :0.0
|
||||
self._cmd = ['ffmpeg',
|
||||
'-video_size', '{}x{}'.format(width, height),
|
||||
'-framerate', str(frame_rate),
|
||||
'-f', 'x11grab',
|
||||
'-i', ':{}'.format(display),
|
||||
'-codec', 'libx264', self.file_path]
|
||||
self.file_path]
|
||||
|
||||
def start(self):
|
||||
if self.is_launched:
|
||||
LOG.warning('Video recording is running already')
|
||||
return
|
||||
|
||||
if not os.environ.get('AVCONV_INSTALLED', False):
|
||||
LOG.error("avconv isn't installed. Video recording is skipped")
|
||||
if not os.environ.get('FFMPEG_INSTALLED', False):
|
||||
LOG.error("ffmpeg isn't installed. Video recording is skipped")
|
||||
return
|
||||
|
||||
fnull = open(os.devnull, 'w')
|
||||
|
@ -2,5 +2,6 @@
|
||||
- hosts: all
|
||||
environment:
|
||||
OS_CLOUD: devstack-admin
|
||||
FFMPEG_INSTALLED: True
|
||||
roles:
|
||||
- tox
|
6
tox.ini
6
tox.ini
@ -83,10 +83,12 @@ setenv =
|
||||
[testenv:integration]
|
||||
envdir = {toxworkdir}/venv
|
||||
# Run integration tests only
|
||||
passenv = AVCONV_INSTALLED
|
||||
passenv =
|
||||
DISPLAY
|
||||
FFMPEG_INSTALLED
|
||||
setenv =
|
||||
INTEGRATION_TESTS=1
|
||||
SELENIUM_HEADLESS=1
|
||||
SELENIUM_HEADLESS=False
|
||||
commands =
|
||||
oslo-config-generator --namespace openstack_dashboard_integration_tests
|
||||
{envpython} {toxinidir}/manage.py test openstack_dashboard --settings=openstack_dashboard.test.settings --verbosity 2 --tag integration {posargs}
|
||||
|
Loading…
Reference in New Issue
Block a user