mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
injecting the testclient during Test Loader process
Without this the tests do not have access to the client APIs
This commit is contained in:
parent
db5687d691
commit
84b69e6e0a
@ -40,6 +40,7 @@ class NoseCloudStackTestLoader(nose.loader.TestLoader):
|
|||||||
tests = []
|
tests = []
|
||||||
for testCaseName in testCaseNames:
|
for testCaseName in testCaseNames:
|
||||||
testCase = testCaseClass(testCaseName)
|
testCase = testCaseClass(testCaseName)
|
||||||
|
self._injectClients(testCase)
|
||||||
tests.append(testCase)
|
tests.append(testCase)
|
||||||
return self.suiteClass(tests)
|
return self.suiteClass(tests)
|
||||||
else:
|
else:
|
||||||
@ -51,6 +52,24 @@ class NoseCloudStackTestLoader(nose.loader.TestLoader):
|
|||||||
def loadTestsFromNames(self, names, module=None):
|
def loadTestsFromNames(self, names, module=None):
|
||||||
return nose.loader.TestLoader.loadTestsFromNames(self, names, module=module)
|
return nose.loader.TestLoader.loadTestsFromNames(self, names, module=module)
|
||||||
|
|
||||||
|
def setClient(self, client):
|
||||||
|
self.testclient = client
|
||||||
|
|
||||||
|
def setClientLog(self, clientlog):
|
||||||
|
self.log = clientlog
|
||||||
|
|
||||||
|
def _injectClients(self, test):
|
||||||
|
testcaselogger = logging.getLogger("testclient.testcase.%s"%test.__class__.__name__)
|
||||||
|
fh = logging.FileHandler(self.log)
|
||||||
|
fh.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(name)s - %(message)s"))
|
||||||
|
testcaselogger.addHandler(fh)
|
||||||
|
testcaselogger.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
setattr(test, "testClient", self.testclient)
|
||||||
|
setattr(test, "debug", partial(testCaseLogger, logger=testcaselogger))
|
||||||
|
setattr(test.__class__, "clstestclient", self.testclient)
|
||||||
|
if hasattr(test, "UserName"):
|
||||||
|
self.testclient.createNewApiClient(test.UserName, test.DomainName, test.AcctType)
|
||||||
|
|
||||||
class NoseTestExecuteEngine(object):
|
class NoseTestExecuteEngine(object):
|
||||||
"""
|
"""
|
||||||
@ -81,14 +100,14 @@ class NoseTestExecuteEngine(object):
|
|||||||
|
|
||||||
if workingdir is not None:
|
if workingdir is not None:
|
||||||
self.loader = NoseCloudStackTestLoader()
|
self.loader = NoseCloudStackTestLoader()
|
||||||
self.suite = self.loader.loadTestsFromName(workingdir)
|
self.loader.setClient(self.testclient)
|
||||||
for test in self.suite:
|
self.loader.setClientLog(self.logfile)
|
||||||
self.injectClients(test)
|
self.suite = self.loader.loadTestsFromDir(workingdir)
|
||||||
elif filename is not None:
|
elif filename is not None:
|
||||||
self.loader = NoseCloudStackTestLoader()
|
self.loader = NoseCloudStackTestLoader()
|
||||||
|
self.loader.setClient(self.testclient)
|
||||||
|
self.loader.setClientLog(self.logfile)
|
||||||
self.suite = self.loader.loadTestsFromFile(filename)
|
self.suite = self.loader.loadTestsFromFile(filename)
|
||||||
for test in self.suite:
|
|
||||||
self.injectClients(test)
|
|
||||||
else:
|
else:
|
||||||
raise EnvironmentError("Need to give either a test directory or a test file")
|
raise EnvironmentError("Need to give either a test directory or a test file")
|
||||||
|
|
||||||
@ -98,17 +117,6 @@ class NoseTestExecuteEngine(object):
|
|||||||
self.runner = xmlrunner.XMLTestRunner(output='xml-reports', verbose=True)
|
self.runner = xmlrunner.XMLTestRunner(output='xml-reports', verbose=True)
|
||||||
|
|
||||||
def runTests(self):
|
def runTests(self):
|
||||||
nose.core.TestProgram(argv=["--process-timeout=3600"], testRunner=self.runner, testLoader=self.loader)
|
#nose.core.TestProgram(argv=["--process-timeout=3600"], testRunner=self.runner, testLoader=self.loader)
|
||||||
|
nose.core.TestProgram(argv=["--process-timeout=3600"], \
|
||||||
def injectClients(self, test):
|
testRunner=self.runner, suite=self.suite)
|
||||||
testcaselogger = logging.getLogger("testclient.testcase.%s"%test.__class__.__name__)
|
|
||||||
fh = logging.FileHandler(self.logfile)
|
|
||||||
fh.setFormatter(self.logformat)
|
|
||||||
testcaselogger.addHandler(fh)
|
|
||||||
testcaselogger.setLevel(logging.DEBUG)
|
|
||||||
|
|
||||||
setattr(test, "testClient", self.testclient)
|
|
||||||
setattr(test, "debug", partial(testCaseLogger, logger=testcaselogger))
|
|
||||||
setattr(test.__class__, "clstestclient", self.testclient)
|
|
||||||
if hasattr(test, "UserName"):
|
|
||||||
self.testclient.createNewApiClient(test.UserName, test.DomainName, test.AcctType)
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user