diff --git a/erp5/tests/testERP5TestNode.py b/erp5/tests/testERP5TestNode.py index 24aef6808c6367d599a89bda5c0c5e12c7d97fb9..c1166f2ca9d79df89e5afc19aa0127d5a06abfbf 100644 --- a/erp5/tests/testERP5TestNode.py +++ b/erp5/tests/testERP5TestNode.py @@ -21,13 +21,19 @@ sys.path.extend([ '/srv/slapgrid/slappart80/srv/runner/software/ba1e09f3364989dc92da955b64e72f8d/eggs/Werkzeug-0.8.3-py2.7.egg', ]) -from erp5.util.testnode import TestNode +from erp5.util.testnode.testnode import TestNode +from erp5.util.testnode.testnode import SlapOSInstance from erp5.util.testnode.ProcessManager import ProcessManager from erp5.util.testnode.SlapOSControler import SlapOSControler +from erp5.util.taskdistribution import TaskDistributor +from erp5.util.taskdistribution import TaskDistributionTool +from erp5.util.taskdistribution import TestResultProxy import os import shutil import subprocess import tempfile +import json +import time class ERP5TestNode(TestCase): @@ -36,12 +42,18 @@ class ERP5TestNode(TestCase): self.working_directory = os.path.join(self._temp_dir, 'testnode') self.slapos_directory = os.path.join(self._temp_dir, 'slapos') self.test_suite_directory = os.path.join(self._temp_dir,'test_suite') + self.environment = os.path.join(self._temp_dir,'environment') + self.log_directory = os.path.join(self._temp_dir,'var/log') + self.log_file = os.path.join(self.log_directory,'test.log') self.remote_repository0 = os.path.join(self._temp_dir, 'rep0') self.remote_repository1 = os.path.join(self._temp_dir, 'rep1') self.remote_repository2 = os.path.join(self._temp_dir, 'rep2') os.mkdir(self.working_directory) os.mkdir(self.slapos_directory) os.mkdir(self.test_suite_directory) + os.mkdir(self.environment) + os.makedirs(self.log_directory) + os.close(os.open(self.log_file,os.O_CREAT)) os.mkdir(self.remote_repository0) os.mkdir(self.remote_repository1) os.mkdir(self.remote_repository2) @@ -50,7 +62,7 @@ class ERP5TestNode(TestCase): shutil.rmtree(self._temp_dir, True) def getTestNode(self): - def log(*args): + def log(*args,**kw): for arg in args: print "TESTNODE LOG : %r" % (arg,) # XXX how to get property the git path ? @@ -59,7 +71,11 @@ class ERP5TestNode(TestCase): config["slapos_directory"] = config["working_directory"] = self.working_directory config["node_quantity"] = 3 config["test_suite_directory"] = self.test_suite_directory - + config["environment"] = self.environment + config["log_directory"] = self.log_directory + config["log_file"] = self.log_file + config["test_suite_master_url"] = None + config["test_node_title"] = "Foo-Test-Node" return TestNode(log, config) def getTestSuiteData(self, add_third_repository=False): @@ -338,3 +354,60 @@ branch = foo '--xvfb_bin', '%s/soft/a/parts/xserver/bin/Xvfb' %(test_node.config['slapos_directory'])]) + + def test_10_prepareSlapOS(self): + def patch_initializeSlapOSControler(self, *args, **kw): + pass + test_node = self.getTestNode() + test_node_slapos = SlapOSInstance() + node_test_suite = test_node.getNodeTestSuite('foo') + node_test_suite.edit(working_directory=self.working_directory) + status_dict = {"status_code" : 0} + def patch_run(self, *args,**kw): + return status_dict + SlapOSControler.initializeSlapOSControler = patch_initializeSlapOSControler + SlapOSControler.runSoftwareRelease = patch_run + SlapOSControler.runComputerPartition = patch_run + test_node.prepareSlapOSForTestNode(test_node_slapos) + self.assertEqual(status_dict,{'status_code':0}) + test_node.prepareSlapOSForTestSuite(node_test_suite) + self.assertEqual(status_dict,{'status_code':0}) + + def test_11_run(self): + def patch_function(self, *args, **kw): + pass + def patch_killPrevious(): + pass + test_self = self + test_result_path_root = os.path.join(test_self._temp_dir,'test/results') + os.makedirs(test_result_path_root) + global counter + counter = 0 + def patch_startTestSuite(self,test_node_title): + global counter + if counter == 2: + raise StopIteration + counter += 1 + config_list = [] + config_list.append(test_self.getTestSuiteData()[0]) + config_list.append(test_self.getTestSuiteData(add_third_repository=True)[0]) + return json.dumps(config_list) + def patch_createTestResult(self, revision, test_name_list, node_title, + allow_restart=False, test_title=None, project_title=None): + test_result_path = os.path.join(test_result_path_root, test_title) + result = TestResultProxy(self._proxy, self._retry_time, + self._logger, test_result_path, node_title, revision) + return result + time.sleep = patch_function + self.generateTestRepositoryList() + TaskDistributor.startTestSuite = patch_startTestSuite + TaskDistributionTool.createTestResult = patch_createTestResult + test_node = self.getTestNode() + test_node._prepareSlapOS = patch_function + test_node.runTestSuite = patch_function + SlapOSControler.initializeSlapOSControler = patch_function + test_node.process_manager.killPreviousRun = patch_killPrevious + try: + test_node.run() + except Exception as e: + self.assertEqual(type(e),StopIteration)