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

testnode: more code clean up

parent 841301f7
This diff is collapsed.
...@@ -37,38 +37,28 @@ class SlapOSInstance(object): ...@@ -37,38 +37,28 @@ class SlapOSInstance(object):
Base of an software instance, Base of an software instance,
store variables used during software installation store variables used during software installation
""" """
def __init__(self): def __init__(self, working_directory):
self.retry_software_count = 0 self.retry_software_count = 0
self.retry = False 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): class NodeTestSuite(SlapOSInstance):
""" """
""" """
def __init__(self, reference): def __init__(self, reference, working_directory):
super(NodeTestSuite, self).__init__() d = os.path.join(working_directory, reference)
super(NodeTestSuite, self).__init__(d)
self.reference = reference self.reference = reference
self.cluster_configuration = {} 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): def edit(self, **kw):
if getattr(self, "working_directory", None) is not None: self.__dict__.update(**kw)
if not(self.working_directory.endswith(os.path.sep + self.reference)): for vcs_repository in kw.get('vcs_repository_list', ()):
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:
buildout_section_id = vcs_repository.get('buildout_section_id') buildout_section_id = vcs_repository.get('buildout_section_id')
repository_id = buildout_section_id or \ repository_id = buildout_section_id or \
vcs_repository.get('url').split('/')[-1].split('.')[0] vcs_repository.get('url').split('/')[-1].split('.')[0]
......
...@@ -99,12 +99,6 @@ class SlapOSControler(object): ...@@ -99,12 +99,6 @@ class SlapOSControler(object):
else: else:
raise ValueError("Configuration file not found.") 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, def request(self, reference, software_url, software_type=None,
software_configuration=None, computer_guid=None, state='started'): software_configuration=None, computer_guid=None, state='started'):
""" """
...@@ -219,7 +213,7 @@ class SlapOSControler(object): ...@@ -219,7 +213,7 @@ class SlapOSControler(object):
self.software_path_list = software_path_list self.software_path_list = software_path_list
self.log('SlapOSControler, initialize, reset_software: %r', reset_software) self.log('SlapOSControler, initialize, reset_software: %r', reset_software)
config = self.config config = self.config
slapos_config_dict = self.config.copy() slapos_config_dict = config.copy()
slapos_config_dict.update(software_root=self.software_root, slapos_config_dict.update(software_root=self.software_root,
instance_root=self.instance_root, instance_root=self.instance_root,
proxy_database=self.proxy_database) proxy_database=self.proxy_database)
......
...@@ -102,7 +102,7 @@ class UnitTestRunner(object): ...@@ -102,7 +102,7 @@ class UnitTestRunner(object):
# report-url, report-project and suite-url are required to seleniumrunner # report-url, report-project and suite-url are required to seleniumrunner
# instance. This is a hack which must be removed. # instance. This is a hack which must be removed.
config = self.testnode.config 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, test_node_slapos, self.testnode.log, create_partition=0,
software_path_list=config.get("software_list"), software_path_list=config.get("software_list"),
cluster_configuration={ cluster_configuration={
...@@ -120,16 +120,18 @@ class UnitTestRunner(object): ...@@ -120,16 +120,18 @@ class UnitTestRunner(object):
software_path_list=[node_test_suite.custom_profile_path], software_path_list=[node_test_suite.custom_profile_path],
cluster_configuration={'_': json.dumps(node_test_suite.cluster_configuration)}) 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): def runTestSuite(self, node_test_suite, portal_url, log=None):
config = self.testnode.config config = self.testnode.config
parameter_list = [] run_test_suite_path_list = glob.glob(
slapos_controler = self._getSlapOSControler(self.testnode.working_directory) self.getInstanceRoot(node_test_suite) + "/*/bin/runTestSuite")
run_test_suite_path_list = sorted(glob.glob("%s/*/bin/runTestSuite" % \ try:
slapos_controler.instance_root)) run_test_suite_path = min(run_test_suite_path_list)
if not len(run_test_suite_path_list): except ValueError:
raise ValueError('No runTestSuite provided in installed partitions.') 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 # Deal with Shebang size limitation
invocation_list = dealShebang(run_test_suite_path) invocation_list = dealShebang(run_test_suite_path)
invocation_list += (run_test_suite_path, invocation_list += (run_test_suite_path,
......
...@@ -29,14 +29,8 @@ import argparse ...@@ -29,14 +29,8 @@ import argparse
import logging import logging
import logging.handlers import logging.handlers
import os import os
import pkg_resources
from testnode import TestNode from .testnode import TestNode
CONFIG = {
'computer_id': 'COMPUTER',
'partition_reference': 'test0',
}
def main(*args): def main(*args):
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
...@@ -54,6 +48,10 @@ def main(*args): ...@@ -54,6 +48,10 @@ def main(*args):
logging.basicConfig(level=logging.INFO, logging.basicConfig(level=logging.INFO,
format=logger_format) format=logger_format)
logger = logging.getLogger('erp5testnode') logger = logging.getLogger('erp5testnode')
CONFIG = {
'logger': logger.info,
'partition_reference': 'test0',
}
if parsed_argument.console or parsed_argument.logfile: if parsed_argument.console or parsed_argument.logfile:
if parsed_argument.console: if parsed_argument.console:
logger.addHandler(logging.StreamHandler()) logger.addHandler(logging.StreamHandler())
...@@ -64,11 +62,10 @@ def main(*args): ...@@ -64,11 +62,10 @@ def main(*args):
maxBytes=20000000, backupCount=4) maxBytes=20000000, backupCount=4)
file_handler.setFormatter(formatter) file_handler.setFormatter(formatter)
logger.addHandler(file_handler) 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 CONFIG['log_file'] = parsed_argument.logfile
else: else:
logger.addHandler(logging.NullHandler()) logger.addHandler(logging.NullHandler())
CONFIG['logger'] = logger.info
config = ConfigParser.SafeConfigParser() config = ConfigParser.SafeConfigParser()
# do not change case of option keys # do not change case of option keys
config.optionxform = str 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