mirror of
https://github.com/truenas/core-build.git
synced 2026-02-15 07:36:18 +00:00
Further improvements in the test runner.
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user