From 75b02b2ab46612dc2f970737f2224af78d695f4c Mon Sep 17 00:00:00 2001 From: Sebastien Robin <seb@nexedi.com> Date: Fri, 15 Feb 2013 10:01:18 +0100 Subject: [PATCH] testnode was still sometimes logging at several files at a time --- erp5/tests/testERP5TestNode.py | 55 ++++++++++++++++------------------ erp5/util/testnode/testnode.py | 55 ++++++++++++++++------------------ 2 files changed, 52 insertions(+), 58 deletions(-) diff --git a/erp5/tests/testERP5TestNode.py b/erp5/tests/testERP5TestNode.py index fb8c12d5bb..4f6210d658 100644 --- a/erp5/tests/testERP5TestNode.py +++ b/erp5/tests/testERP5TestNode.py @@ -454,16 +454,13 @@ branch = foo original_runTestSuite = test_node.runTestSuite test_node.runTestSuite = doNothing SlapOSControler.initializeSlapOSControler = doNothing - try: - test_node.run() - except Exception as e: - self.assertEqual(type(e),StopIteration) - finally: - time.sleep = original_sleep - TaskDistributor.startTestSuite = original_startTestSuite - TaskDistributionTool.createTestResult = original_createTestResult - test_node._prepareSlapOS = original_prepareSlapOS - test_node.runTestSuite = original_runTestSuite + test_node.run() + self.assertEquals(5, counter) + time.sleep = original_sleep + TaskDistributor.startTestSuite = original_startTestSuite + TaskDistributionTool.createTestResult = original_createTestResult + test_node._prepareSlapOS = original_prepareSlapOS + test_node.runTestSuite = original_runTestSuite def test_12_spawn(self): def _checkCorrectStatus(expected_status,*args): @@ -512,12 +509,11 @@ branch = foo counter = 0 def patch_startTestSuite(self,test_node_title): global counter - config_list = [] - if counter == 0: - config_list.append(test_self.getTestSuiteData(reference='aa')[0]) - if counter == 1: - config_list.append(test_self.getTestSuiteData(reference='bb')[0]) - elif counter == 2: + config_list = [test_self.getTestSuiteData(reference='aa')[0], + test_self.getTestSuiteData(reference='bb')[0]] + if counter in (1, 2): + config_list.reverse() + elif counter == 3: raise StopIteration counter += 1 return json.dumps(config_list) @@ -530,9 +526,10 @@ branch = foo def checkTestSuite(test_node): test_node.node_test_suite_dict rand_part_set = set() + self.assertEquals(2, len(test_node.node_test_suite_dict)) + assert(test_node.suite_log is not None) + assert(isinstance(test_node.suite_log, types.MethodType)) for ref, suite in test_node.node_test_suite_dict.items(): - assert(suite.suite_log is not None) - assert(isinstance(suite.suite_log, types.MethodType)) self.assertTrue('var/log/testnode/%s' % suite.reference in \ suite.suite_log_path, "Incorrect suite log path : %r" % suite.suite_log_path) @@ -542,6 +539,9 @@ branch = foo assert(len(rand_part) == 32) assert(rand_part not in rand_part_set) rand_part_set.add(rand_part) + suite_log = open(suite.suite_log_path, 'r') + self.assertEquals(1, len([x for x in suite_log.readlines() \ + if x.find("Activated logfile")>=0])) original_sleep = time.sleep time.sleep = doNothing @@ -556,17 +556,14 @@ branch = foo original_runTestSuite = test_node.runTestSuite test_node.runTestSuite = doNothing SlapOSControler.initializeSlapOSControler = doNothing - try: - test_node.run() - except Exception as e: - checkTestSuite(test_node) - self.assertEqual(type(e),StopIteration) - finally: - time.sleep = original_sleep - TaskDistributor.startTestSuite = original_startTestSuite - TaskDistributionTool.createTestResult = original_createTestResult - test_node._prepareSlapOS = original_prepareSlapOS - test_node.runTestSuite = original_runTestSuite + test_node.run() + self.assertEquals(counter, 3) + checkTestSuite(test_node) + time.sleep = original_sleep + TaskDistributor.startTestSuite = original_startTestSuite + TaskDistributionTool.createTestResult = original_createTestResult + test_node._prepareSlapOS = original_prepareSlapOS + test_node.runTestSuite = original_runTestSuite def test_16_cleanupLogDirectory(self): # Make sure that we are able to cleanup old log folders diff --git a/erp5/util/testnode/testnode.py b/erp5/util/testnode/testnode.py index 697f170810..84f1ef41aa 100644 --- a/erp5/util/testnode/testnode.py +++ b/erp5/util/testnode/testnode.py @@ -89,7 +89,6 @@ class NodeTestSuite(SlapOSInstance): def __init__(self, reference): super(NodeTestSuite, self).__init__() self.reference = reference - self.file_handler = None def edit(self, **kw): super(NodeTestSuite, self).edit(**kw) @@ -123,30 +122,11 @@ class NodeTestSuite(SlapOSInstance): SlapOSControler.createFolders(suite_log_directory) self.suite_log_path = os.path.join(suite_log_directory, 'suite.log') - self._initializeSuiteLog() return self.getSuiteLogPath(), random_suite_folder_id def getSuiteLogPath(self): return getattr(self,"suite_log_path", None) - def getSuiteLog(self): - return getattr(self, "suite_log", None) - - def _initializeSuiteLog(self): - # remove previous handlers - logger = logging.getLogger('testsuite') - if self.file_handler is not None: - logger.removeHandler(self.file_handler) - # and replace it with new handler - logger_format = '%(asctime)s %(name)-13s: %(levelname)-8s %(message)s' - formatter = logging.Formatter(logger_format) - logging.basicConfig(level=logging.INFO, format=logger_format) - self.file_handler = logging.FileHandler(filename=self.suite_log_path) - self.file_handler.setFormatter(formatter) - logger.addHandler(self.file_handler) - logger.info('Activated logfile %r output' % self.suite_log_path) - self.suite_log = logger.info - class TestNode(object): def __init__(self, log, config, max_log_time=MAX_LOG_TIME, @@ -158,6 +138,7 @@ class TestNode(object): self.node_test_suite_dict = {} self.max_log_time = max_log_time self.max_temp_time = max_temp_time + self.file_handler = None def checkOldTestSuite(self,test_suite_data): config = self.config @@ -252,20 +233,36 @@ branch = %(branch)s Create a log dedicated for the test suite, and register the url to master node. """ - log_file_name, folder_id = node_test_suite.createSuiteLog() - if log_file_name is None and config.get('log_file'): - log_file_name = config['log_file'] + suite_log_path, folder_id = node_test_suite.createSuiteLog() + self._initializeSuiteLog(suite_log_path) # TODO make the path into url test_result.reportStatus('LOG url', "%s/%s" % (self.config.get('httpd_url'), folder_id), '') - self.log("going to switch to log %r" % log_file_name) - log = node_test_suite.getSuiteLog() - self.process_manager.log = self.log = log - return log_file_name + self.log("going to switch to log %r" % suite_log_path) + self.process_manager.log = self.log = self.getSuiteLog() + return suite_log_path + + def getSuiteLog(self): + return self.suite_log + + def _initializeSuiteLog(self, suite_log_path): + # remove previous handlers + logger = logging.getLogger('testsuite') + if self.file_handler is not None: + logger.removeHandler(self.file_handler) + # and replace it with new handler + logger_format = '%(asctime)s %(name)-13s: %(levelname)-8s %(message)s' + formatter = logging.Formatter(logger_format) + logging.basicConfig(level=logging.INFO, format=logger_format) + self.file_handler = logging.FileHandler(filename=suite_log_path) + self.file_handler.setFormatter(formatter) + logger.addHandler(self.file_handler) + logger.info('Activated logfile %r output' % suite_log_path) + self.suite_log = logger.info def checkRevision(self, test_result, node_test_suite): config = self.config - log = node_test_suite.getSuiteLog() + log = self.log if log is None: log = self.log if node_test_suite.revision != test_result.revision: @@ -328,7 +325,7 @@ branch = %(branch)s software_path_list=self.config.get("software_list")) def prepareSlapOSForTestSuite(self, node_test_suite): - log = node_test_suite.getSuiteLog() + log = self.log if log is None: log = self.log return self._prepareSlapOS(node_test_suite.working_directory, -- 2.30.9