Commit d9a5ecd8 authored by Julien Muchembled's avatar Julien Muchembled Committed by Klaus Wölfel

testnode: more code clean up

parent 19ea2d81
This diff is collapsed.
......@@ -37,38 +37,28 @@ class SlapOSInstance(object):
Base of an software instance,
store variables used during software installation
"""
def __init__(self):
def __init__(self, working_directory):
self.retry_software_count = 0
self.retry = False
self.working_directory = working_directory
def edit(self, **kw):
self.__dict__.update(**kw)
self._checkData()
def _checkData(self):
pass
class NodeTestSuite(SlapOSInstance):
"""
"""
def __init__(self, reference):
super(NodeTestSuite, self).__init__()
def __init__(self, reference, working_directory):
d = os.path.join(working_directory, reference)
super(NodeTestSuite, self).__init__(d)
self.reference = reference
self.cluster_configuration = {}
self.test_suite_directory = os.path.join(d, 'test_suite')
self.custom_profile_path = os.path.join(d, 'software.cfg')
createFolder(d)
def _checkData(self):
if getattr(self, "working_directory", None) is not None:
if not(self.working_directory.endswith(os.path.sep + self.reference)):
self.working_directory = os.path.join(self.working_directory,
self.reference)
createFolder(self.working_directory)
self.test_suite_directory = os.path.join(
self.working_directory, "test_suite")
self.custom_profile_path = os.path.join(self.working_directory,
'software.cfg')
if getattr(self, "vcs_repository_list", None) is not None:
for vcs_repository in self.vcs_repository_list:
def edit(self, **kw):
self.__dict__.update(**kw)
for vcs_repository in kw.get('vcs_repository_list', ()):
buildout_section_id = vcs_repository.get('buildout_section_id')
repository_id = buildout_section_id or \
vcs_repository.get('url').split('/')[-1].split('.')[0]
......
......@@ -99,12 +99,6 @@ class SlapOSControler(object):
else:
raise ValueError("Configuration file not found.")
def getInstanceRequestedState(self, reference):
try:
return self.instance_config[reference]['requested_state']
except Exception:
raise ValueError("Instance '%s' not exist" %self.instance_config[reference])
def request(self, reference, software_url, software_type=None,
software_configuration=None, computer_guid=None, state='started'):
"""
......@@ -219,7 +213,7 @@ class SlapOSControler(object):
self.software_path_list = software_path_list
self.log('SlapOSControler, initialize, reset_software: %r', reset_software)
config = self.config
slapos_config_dict = self.config.copy()
slapos_config_dict = config.copy()
slapos_config_dict.update(software_root=self.software_root,
instance_root=self.instance_root,
proxy_database=self.proxy_database)
......
......@@ -102,7 +102,7 @@ class UnitTestRunner(object):
# report-url, report-project and suite-url are required to seleniumrunner
# instance. This is a hack which must be removed.
config = self.testnode.config
return self._prepareSlapOS(config['slapos_directory'],
return self._prepareSlapOS(test_node_slapos.working_directory,
test_node_slapos, self.testnode.log, create_partition=0,
software_path_list=config.get("software_list"),
cluster_configuration={
......@@ -120,16 +120,18 @@ class UnitTestRunner(object):
software_path_list=[node_test_suite.custom_profile_path],
cluster_configuration={'_': json.dumps(node_test_suite.cluster_configuration)})
def getInstanceRoot(self, node_test_suite):
return self._getSlapOSControler(
node_test_suite.working_directory).instance_root
def runTestSuite(self, node_test_suite, portal_url, log=None):
config = self.testnode.config
parameter_list = []
slapos_controler = self._getSlapOSControler(self.testnode.working_directory)
run_test_suite_path_list = sorted(glob.glob("%s/*/bin/runTestSuite" % \
slapos_controler.instance_root))
if not len(run_test_suite_path_list):
run_test_suite_path_list = glob.glob(
self.getInstanceRoot(node_test_suite) + "/*/bin/runTestSuite")
try:
run_test_suite_path = min(run_test_suite_path_list)
except ValueError:
raise ValueError('No runTestSuite provided in installed partitions.')
run_test_suite_path = run_test_suite_path_list[0]
run_test_suite_revision = node_test_suite.revision
# Deal with Shebang size limitation
invocation_list = dealShebang(run_test_suite_path)
invocation_list += (run_test_suite_path,
......@@ -172,4 +174,4 @@ class UnitTestRunner(object):
Used by the method testnode.constructProfile() to know
if the software.cfg have to use relative path or not.
"""
return False
return False
\ No newline at end of file
......@@ -29,14 +29,8 @@ import argparse
import logging
import logging.handlers
import os
import pkg_resources
from testnode import TestNode
CONFIG = {
'computer_id': 'COMPUTER',
'partition_reference': 'test0',
}
from .testnode import TestNode
def main(*args):
parser = argparse.ArgumentParser()
......@@ -54,6 +48,10 @@ def main(*args):
logging.basicConfig(level=logging.INFO,
format=logger_format)
logger = logging.getLogger('erp5testnode')
CONFIG = {
'logger': logger.info,
'partition_reference': 'test0',
}
if parsed_argument.console or parsed_argument.logfile:
if parsed_argument.console:
logger.addHandler(logging.StreamHandler())
......@@ -64,11 +62,10 @@ def main(*args):
maxBytes=20000000, backupCount=4)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
logger.info('Activated logfile %r output' % parsed_argument.logfile)
logger.info('Activated logfile %r output', parsed_argument.logfile)
CONFIG['log_file'] = parsed_argument.logfile
else:
logger.addHandler(logging.NullHandler())
CONFIG['logger'] = logger.info
config = ConfigParser.SafeConfigParser()
# do not change case of option keys
config.optionxform = str
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment