Spec: extract start_xvnc(), kill only if running
This commit is contained in:
@@ -2,10 +2,11 @@ import os
|
|||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
from path import Path
|
from path import Path
|
||||||
from mamba import description, context, it, before, after
|
from mamba import description, context, it, fit, before, after
|
||||||
from expects import expect, equal
|
from expects import expect, equal
|
||||||
|
|
||||||
vncserver_cmd = 'vncserver :1 -cert /etc/ssl/certs/ssl-cert-snakeoil.pem -key /etc/ssl/private/ssl-cert-snakeoil.key -sslOnly -FrameRate=24 -interface 0.0.0.0 -httpd /usr/share/kasmvnc/www -depth 24 -geometry 1280x1050'
|
vncserver_cmd = 'vncserver :1 -cert /etc/ssl/certs/ssl-cert-snakeoil.pem -key /etc/ssl/private/ssl-cert-snakeoil.key -sslOnly -FrameRate=24 -interface 0.0.0.0 -httpd /usr/share/kasmvnc/www -depth 24 -geometry 1280x1050'
|
||||||
|
running_xvnc = False
|
||||||
|
|
||||||
|
|
||||||
def clean_env():
|
def clean_env():
|
||||||
@@ -17,6 +18,15 @@ def clean_env():
|
|||||||
Path(vnc_dir).rmtree(ignore_errors=True)
|
Path(vnc_dir).rmtree(ignore_errors=True)
|
||||||
|
|
||||||
|
|
||||||
|
def start_xvnc(extra_args="", **kwargs):
|
||||||
|
global running_xvnc
|
||||||
|
completed_process = run_cmd(f'{vncserver_cmd} {extra_args}', **kwargs)
|
||||||
|
if completed_process.returncode == 0:
|
||||||
|
running_xvnc = True
|
||||||
|
|
||||||
|
return completed_process
|
||||||
|
|
||||||
|
|
||||||
def run_cmd(cmd, **kwargs):
|
def run_cmd(cmd, **kwargs):
|
||||||
completed_process = subprocess.run(cmd, shell=True, text=True,
|
completed_process = subprocess.run(cmd, shell=True, text=True,
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
@@ -34,13 +44,18 @@ def add_kasmvnc_user_docker():
|
|||||||
|
|
||||||
|
|
||||||
def kill_xvnc():
|
def kill_xvnc():
|
||||||
|
global running_xvnc
|
||||||
|
if not running_xvnc:
|
||||||
|
return
|
||||||
|
|
||||||
run_cmd('vncserver -kill :1')
|
run_cmd('vncserver -kill :1')
|
||||||
|
running_xvnc = False
|
||||||
|
|
||||||
|
|
||||||
def select_de(de_name):
|
def select_de(de_name):
|
||||||
try:
|
try:
|
||||||
cmd = f'{vncserver_cmd} -select-de {de_name}'
|
extra_args = f'-select-de {de_name}'
|
||||||
completed_process = run_cmd(cmd)
|
completed_process = start_xvnc(extra_args)
|
||||||
expect(completed_process.returncode).to(equal(0))
|
expect(completed_process.returncode).to(equal(0))
|
||||||
finally:
|
finally:
|
||||||
kill_xvnc()
|
kill_xvnc()
|
||||||
@@ -62,7 +77,7 @@ with description('vncserver') as self:
|
|||||||
add_kasmvnc_user_docker()
|
add_kasmvnc_user_docker()
|
||||||
|
|
||||||
choose_cinnamon = "1\n"
|
choose_cinnamon = "1\n"
|
||||||
completed_process = run_cmd(vncserver_cmd, input=choose_cinnamon)
|
completed_process = start_xvnc(input=choose_cinnamon)
|
||||||
expect(completed_process.returncode).to(equal(0))
|
expect(completed_process.returncode).to(equal(0))
|
||||||
|
|
||||||
check_de_was_setup_to_run('cinnamon')
|
check_de_was_setup_to_run('cinnamon')
|
||||||
@@ -70,9 +85,8 @@ with description('vncserver') as self:
|
|||||||
with it('asks to select a DE, when ran with -select-de'):
|
with it('asks to select a DE, when ran with -select-de'):
|
||||||
add_kasmvnc_user_docker()
|
add_kasmvnc_user_docker()
|
||||||
|
|
||||||
cmd = f'{vncserver_cmd} -select-de'
|
|
||||||
choose_cinnamon = "1\n"
|
choose_cinnamon = "1\n"
|
||||||
completed_process = run_cmd(cmd, input=choose_cinnamon)
|
completed_process = start_xvnc('-select-de', input=choose_cinnamon)
|
||||||
expect(completed_process.returncode).to(equal(0))
|
expect(completed_process.returncode).to(equal(0))
|
||||||
|
|
||||||
check_de_was_setup_to_run('cinnamon')
|
check_de_was_setup_to_run('cinnamon')
|
||||||
@@ -80,10 +94,7 @@ with description('vncserver') as self:
|
|||||||
with it('selects passed DE with -s'):
|
with it('selects passed DE with -s'):
|
||||||
add_kasmvnc_user_docker()
|
add_kasmvnc_user_docker()
|
||||||
|
|
||||||
cmd = f'{vncserver_cmd} -select-de mate'
|
select_de('mate')
|
||||||
completed_process = run_cmd(cmd)
|
|
||||||
expect(completed_process.returncode).to(equal(0))
|
|
||||||
|
|
||||||
check_de_was_setup_to_run('mate')
|
check_de_was_setup_to_run('mate')
|
||||||
|
|
||||||
with context('after DE was selected'):
|
with context('after DE was selected'):
|
||||||
@@ -91,7 +102,7 @@ with description('vncserver') as self:
|
|||||||
add_kasmvnc_user_docker()
|
add_kasmvnc_user_docker()
|
||||||
select_de('mate')
|
select_de('mate')
|
||||||
|
|
||||||
completed_process = run_cmd(vncserver_cmd)
|
completed_process = start_xvnc()
|
||||||
expect(completed_process.returncode).to(equal(0))
|
expect(completed_process.returncode).to(equal(0))
|
||||||
|
|
||||||
check_de_was_setup_to_run('mate')
|
check_de_was_setup_to_run('mate')
|
||||||
@@ -100,9 +111,9 @@ with description('vncserver') as self:
|
|||||||
add_kasmvnc_user_docker()
|
add_kasmvnc_user_docker()
|
||||||
select_de('mate')
|
select_de('mate')
|
||||||
|
|
||||||
cmd = f'{vncserver_cmd} -select-de'
|
|
||||||
choose_cinnamon_and_answer_yes = "1\ny\n"
|
choose_cinnamon_and_answer_yes = "1\ny\n"
|
||||||
completed_process = run_cmd(cmd, input=choose_cinnamon_and_answer_yes)
|
completed_process = start_xvnc('-select-de',
|
||||||
|
input=choose_cinnamon_and_answer_yes)
|
||||||
expect(completed_process.returncode).to(equal(0))
|
expect(completed_process.returncode).to(equal(0))
|
||||||
|
|
||||||
check_de_was_setup_to_run('cinnamon')
|
check_de_was_setup_to_run('cinnamon')
|
||||||
@@ -111,8 +122,7 @@ with description('vncserver') as self:
|
|||||||
add_kasmvnc_user_docker()
|
add_kasmvnc_user_docker()
|
||||||
select_de('mate')
|
select_de('mate')
|
||||||
|
|
||||||
cmd = f'{vncserver_cmd} -select-de cinnamon'
|
completed_process = start_xvnc('-select-de cinnamon')
|
||||||
completed_process = run_cmd(cmd)
|
|
||||||
expect(completed_process.returncode).to(equal(0))
|
expect(completed_process.returncode).to(equal(0))
|
||||||
|
|
||||||
check_de_was_setup_to_run('cinnamon')
|
check_de_was_setup_to_run('cinnamon')
|
||||||
|
|||||||
Reference in New Issue
Block a user