Testsuite: minor code cleanup

This commit is contained in:
Christian Poessinger 2021-01-30 15:56:41 +01:00
parent 37b270bab2
commit 2801efd101

View File

@ -43,7 +43,8 @@ import traceback
import logging
import re
from io import BytesIO, StringIO
from io import BytesIO
from io import StringIO
from datetime import datetime
EXCEPTION = 0
@ -170,33 +171,33 @@ else:
output = sys.stdout.buffer
if not os.path.isfile(args.iso):
log.error("Unable to find iso image to install")
log.error('Unable to find iso image to install')
sys.exit(1)
if args.no_kvm:
log.error("KVM forced off by command line")
log.error('KVM forced off by command line')
kvm=False
elif not os.path.exists("/dev/kvm"):
log.error("KVM is not enabled on host, proceeding with software emulation")
elif not os.path.exists('/dev/kvm'):
log.error('KVM not enabled on host, proceeding with software emulation')
kvm=False
else:
kvm=True
# Creating diskimage!!
if not os.path.isfile(args.disk):
log.info("Creating Disk image {}".format(args.disk))
c = subprocess.check_output(["qemu-img", "create", args.disk, "2G"])
log.info(f'Creating Disk image {args.disk}')
c = subprocess.check_output(['qemu-img', 'create', args.disk, '2G'])
log.debug(c.decode())
else:
log.info("Diskimage already exists, using the existing one")
log.info('Diskimage already exists, using the existing one')
try:
#################################################
# Installing image to disk
#################################################
log.info("Installing system")
cmd = get_qemu_cmd("TESTVM", kvm, args.disk, args.iso)
log.debug("Executing command: {}".format(cmd))
log.info('Installing system')
cmd = get_qemu_cmd('TESTVM', kvm, args.disk, args.iso)
log.debug('Executing command: {cmd}')
c = pexpect.spawn(cmd, logfile=stl)
#################################################
@ -206,7 +207,7 @@ try:
c.expect('Automatic boot in', timeout=10)
c.sendline('')
except pexpect.TIMEOUT:
log.warning("Did not find grub countdown window, ignoring")
log.warning('Did not find GRUB countdown window, ignoring')
log.info('Waiting for login prompt')
c.expect('[Ll]ogin:', timeout=300)
@ -219,11 +220,11 @@ try:
#################################################
# Installing into VyOS system
#################################################
log.info("Starting installer")
log.info('Starting installer')
c.sendline('install image')
c.expect('\nWould you like to continue?.*:')
c.sendline('yes')
log.info("Partitioning disk")
log.info('Partitioning disk')
c.expect('\nPartition.*:')
c.sendline('')
c.expect('\nInstall the image on.*:')
@ -251,26 +252,26 @@ try:
#################################################
# Powering down installer
#################################################
log.info("Shutting down installation system")
log.info('Shutting down installation system')
c.sendline('poweroff')
c.expect(r'\nAre you sure you want to poweroff this system.*\]')
c.sendline('Y')
for i in range(30):
log.info("Waiting for shutdown...")
log.info('Waiting for shutdown...')
if not c.isalive():
log.info("VM is shut down!")
log.info('VM shutdown!')
break
time.sleep(10)
else:
log.error("VM Did not shut down after 300sec, killing")
log.error('VM Did not shutdown after 300sec, killing it!')
c.close()
#################################################
# Booting installed system
#################################################
log.info("Booting installed system")
cmd = get_qemu_cmd("TESTVM", kvm, args.disk)
log.debug('Executing command: {}'.format(cmd))
log.info('Booting installed system')
cmd = get_qemu_cmd('TESTVM', kvm, args.disk)
log.debug(f'Executing command: {cmd}')
c = pexpect.spawn(cmd, logfile=stl)
#################################################
@ -280,7 +281,7 @@ try:
c.expect('The highlighted entry will be executed automatically in', timeout=10)
c.sendline('')
except pexpect.TIMEOUT:
log.warning("Did not find grub countdown window, ignoring")
log.warning('Did not find GRUB countdown window, ignoring')
log.info('Waiting for login prompt')
c.expect('[Ll]ogin:', timeout=300)
@ -304,15 +305,14 @@ try:
#################################################
if args.configd:
c.sendline('sudo systemctl start vyos-configd.service &> /dev/null')
c.expect(r'vyos@vyos:~\$')
else:
c.sendline('sudo systemctl stop vyos-configd.service &> /dev/null')
c.expect(r'vyos@vyos:~\$')
c.expect(r'vyos@vyos:~\$')
#################################################
# Basic Configmode/Opmode switch
#################################################
log.info("Basic CLI configuration mode test")
log.info('Basic CLI configuration mode test')
c.sendline('configure')
c.expect(r'vyos@vyos#')
c.sendline('run show version')
@ -322,58 +322,55 @@ try:
#################################################
# Executing test-suite
#################################################
log.info("Executing test-suite ")
# run default smoketest suite
if not args.configtest:
log.info('Executing VyOS smoketests')
c.sendline('/usr/bin/vyos-smoketest')
i = c.expect(['\n +Invalid command:',
'\n +Set failed',
'No such file or directory',
r'\n\S+@\S+[$#]'], timeout=7200)
i = c.expect(['\n +Invalid command:', '\n +Set failed',
'No such file or directory', r'\n\S+@\S+[$#]'], timeout=7200)
if i==0:
if i == 0:
raise Exception('Invalid command detected')
elif i==1:
elif i == 1:
raise Exception('Set syntax failed :/')
elif i==2:
log.error("Did not find VyOS smoketest, this should be an exception")
raise Exception("WTF? did not find VyOS smoketest, this should be an exception")
elif i == 2:
tmp = '(W)hy (T)he (F)ace? VyOS smoketest not found!'
log.error(tmp)
raise Exception(tmp)
c.sendline('echo EXITCODE:$\x16?')
i = c.expect(['EXITCODE:0', 'EXITCODE:\d+'], timeout=20)
if i==0:
if i == 0:
log.info('Smoketest finished successfully!')
pass
if i==1:
elif i == 1:
log.error('Smoketest failed :/')
raise Exception("Smoketest-failed, please look into debug output")
#log.info("Smoke test status")
#data = c.before.decode()
# else, run configtest suite
else:
log.info("Executing load config tests")
c.sendline('/usr/bin/vyos-configtest')
i = c.expect(['\n +Invalid command:',
'No such file or directory',
r'\n\S+@\S+[$#]'], timeout=3600)
i = c.expect(['\n +Invalid command:', 'No such file or directory',
r'\n\S+@\S+[$#]'], timeout=3600)
if i==0:
raise Exception('Invalid command detected')
elif i==1:
log.error("Did not find VyOS configtest, this should be an exception")
raise Exception("WTF? did not find VyOS configtest, this should be an exception")
tmp = '(W)hy (T)he (F)ace? VyOS smoketest not found!'
log.error(tmp)
raise Exception(tmp)
c.sendline('echo EXITCODE:$\x16?')
i = c.expect(['EXITCODE:0', 'EXITCODE:\d+'], timeout=10)
if i==0:
if i == 0:
log.info('Configtest finished successfully!')
pass
if i==1:
log.error('Configtest failed :/')
raise Exception("Configtest failed, please look into debug output")
elif i == 1:
tmp = 'Configtest failed :/ - check debug output'
log.error(tmp)
raise Exception(tmp)
#################################################
# Powering off system
@ -382,31 +379,32 @@ try:
c.sendline('poweroff')
c.expect(r'\nAre you sure you want to poweroff this system.*\]')
c.sendline('Y')
log.info("Shutting down virtual machine")
log.info('Shutting down virtual machine')
for i in range(30):
log.info("Waiting for shutdown...")
log.info('Waiting for shutdown...')
if not c.isalive():
log.info("VM is shut down!")
log.info('VM is shut down!')
break
time.sleep(10)
else:
log.error("VM Did not shut down after 300sec")
raise Exception("VM Did not shut down after 300sec")
tmp = 'VM Did not shut down after 300sec'
log.error(tmp)
raise Exception(tmp)
c.close()
except pexpect.exceptions.TIMEOUT:
log.error("Timeout waiting for VyOS system")
log.error('Timeout waiting for VyOS system')
log.error(traceback.format_exc())
EXCEPTION = 1
except pexpect.exceptions.ExceptionPexpect:
log.error("Exeption while executing QEMU")
log.error("Is qemu working on this system?")
log.error('Exeption while executing QEMU')
log.error('Is qemu working on this system?')
log.error(traceback.format_exc())
EXCEPTION = 1
except Exception:
log.error("An unknown error occured when installing the VyOS system")
log.error('Unknown error occured while VyOS!')
traceback.print_exc()
EXCEPTION = 1
@ -416,15 +414,15 @@ except Exception:
log.info("Cleaning up")
if not args.keep:
log.info("Removing disk file: {}".format(args.disk))
log.info(f'Removing disk file: {args.disk}')
try:
os.remove(args.disk)
except Exception:
log.error("Exception while removing diskimage")
log.error('Exception while removing diskimage!')
log.error(traceback.format_exc())
EXCEPTION = 1
if EXCEPTION:
log.error("Hmm... System got an exception while processing")
log.error("The ISO is not considered usable")
log.error('Hmm... system got an exception while processing.')
log.error('The ISO image is not considered usable!')
sys.exit(1)