Further improvements in the test runner.

This commit is contained in:
Jakub Klama
2016-09-26 12:12:39 +02:00
parent 16926a88ce
commit 832dcf15ef
3 changed files with 29 additions and 20 deletions

View File

@@ -36,19 +36,10 @@ from distutils.core import run_setup
from xml.dom import minidom
PYTHON_DEPS = [
'Cython',
'paramiko',
'nose2',
e('${BE_ROOT}/py-freenas.utils'),
e('${BE_ROOT}/dispatcher-client/python')
]
EXCLUDES = ['os', 'objs', 'ports', 'release', 'release.build.log', 'repo-manifest']
venv_root = objdir('test-venv')
venvdir = objdir('tests/venv')
output_root = objdir('test-output')
@@ -79,7 +70,7 @@ class Main(object):
start_time = time.time()
manifest = self.load_manifest(s)
os.chdir(s)
args = [e('${venv_root}/bin/python3.4'), os.path.join(s, 'run.py'), '-x']
args = [e('${venvdir}/bin/python'), os.path.join(s, 'run.py'), '-x']
test = None
if manifest['pass_target']:
args.extend([
@@ -161,12 +152,6 @@ class Main(object):
reparsed = minidom.parseString(rough_string)
return reparsed.toprettyxml(indent=" ")
def build_virtualenv(self):
info('Preparing test runtime environment')
sh('virtualenv ${venv_root}')
for i in PYTHON_DEPS:
sh('${venv_root}/bin/pip install ${i}')
def main(self):
parser = argparse.ArgumentParser()
parser.add_argument('-a', metavar='ADDRESS', required=True, help='FreeNAS box address')
@@ -178,7 +163,6 @@ class Main(object):
self.username = args.u
self.password = args.p
self.build_virtualenv()
self.find_tests()

View File

@@ -41,12 +41,14 @@ def cleanup():
def setup_venv():
sh('virtualenv ${venvdir}')
sh('${venvdir}/bin/pip install -U cython six')
sh('${venvdir}/bin/pip install -U cython six paramiko nose2')
sh('${venvdir}/bin/pip install -U ${BE_ROOT}/py-bsd')
sh('${venvdir}/bin/pip install -U ${BE_ROOT}/py-netif')
sh('${venvdir}/bin/pip install -U ${BE_ROOT}/py-dhcp')
sh('${venvdir}/bin/pip install -U ${BE_ROOT}/py-freenas.utils')
sh('${venvdir}/bin/pip install -U ${BE_ROOT}/dispatcher-client/python')
sh('${venvdir}/bin/python ${BUILD_ROOT}/tests/freenas/vm.py')
if __name__ == '__main__':
info('Setting up test environment')

View File

@@ -28,6 +28,7 @@ import os
import ipaddress
import subprocess
import threading
import time
from dhcp.server import Server
from dhcp.lease import Lease
from dsl import load_file, load_profile_config
@@ -37,9 +38,11 @@ from utils import sh, sh_str, sh_spawn, info, objdir, e
load_profile_config()
load_file(e('${BUILD_ROOT}/tests/freenas/config.pyd'), os.environ)
destdir = objdir('tests')
venvdir = objdir('tests/venv')
isopath = objdir('${NAME}.iso')
tapdev = None
dhcp_server = None
ready = threading.Event()
def cleanup():
@@ -65,6 +68,10 @@ def setup_network():
sh('ifconfig ${tapdev} inet ${HOST_IP} ${NETMASK} up')
def cleanup_network():
sh('ifconfig ${tapdev} destroy')
def setup_dhcp_server():
global dhcp_server
@@ -74,6 +81,7 @@ def setup_dhcp_server():
lease.client_mac = mac
lease.client_ip = ipaddress.ip_address(e('${FREENAS_IP}'))
lease.client_mask = ipaddress.ip_address(e('${NETMASK}'))
ready.set()
return lease
dhcp_server = Server()
@@ -118,6 +126,20 @@ def do_run():
'${VM_NAME}'
)
ready.wait()
time.sleep(60)
info('VM middleware is ready')
output = sh_str(
'${venvdir}/bin/python ${BUILD_ROOT}/tests/freenas/main.py '
'-a ${FREENAS_IP} '
'-u root '
'-p abcd1234'
)
info('Test results:\n {0}'.format(output))
vm_proc.terminate()
vm_proc.wait()
@@ -131,3 +153,4 @@ if __name__ == '__main__':
do_install()
setup_network()
do_run()
cleanup_network()