summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Saunier <thibault.saunier@collabora.com>2012-06-01 00:14:37 +0800
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2012-06-18 09:29:51 +0100
commita332d1459bd987760c52375ea7792d3681bdbc92 (patch)
tree50121759a8c5b1ec7808924a29e1e081f1ee83a6
parentd703ee27628181e6ddf8e17f43e63a4ed27dd27d (diff)
insanity: Handle shared checklist items
-rw-r--r--insanity/dbustest.py7
-rw-r--r--insanity/test.py27
-rw-r--r--insanity/testmetadata.py16
3 files changed, 48 insertions, 2 deletions
diff --git a/insanity/dbustest.py b/insanity/dbustest.py
index 3fda4af..3b90532 100644
--- a/insanity/dbustest.py
+++ b/insanity/dbustest.py
@@ -150,7 +150,7 @@ class DBusTest(Test, dbus.service.Object):
self._subprocessspawntime = 0
self._subprocessconnecttime = 0
self._pid = 0
-
+
# Test class overrides
def test(self):
@@ -340,6 +340,7 @@ class DBusTest(Test, dbus.service.Object):
args = dict((k, v) for k, v in self.args.items() if (k in self.getFullArgumentList() and self.getFullArgumentList()[k]["global"] == True))
args = self._parse_test_arguments(args)
+ debug("Setting up remote with argunents %s outputfiles %s", args, self.getOutputFiles())
self._remoteinstance.remoteSetUp(args, self.getOutputFiles(),
reply_handler=self._voidRemoteSetUpCallBackHandler,
error_handler=self._voidRemoteSetUpErrBackHandler)
@@ -350,6 +351,7 @@ class DBusTest(Test, dbus.service.Object):
return
self.args = self._parse_test_arguments(self.args)
+ debug("Starting remote with argunents %s outputfiles %s", self.args, self.getOutputFiles())
self._remoteinstance.remoteStart(self.args, self.getOutputFiles(),
reply_handler=self._voidRemoteStartCallBackHandler,
error_handler=self._voidRemoteStartErrBackHandler)
@@ -451,6 +453,9 @@ class DBusTest(Test, dbus.service.Object):
def getFullCheckList(self):
return self._metadata.getFullCheckList()
+ def getSharedCheckList(self):
+ return self._metadata.getSharedCheckList()
+
def getFullArgumentList(self):
return self._metadata.getFullArgumentList()
diff --git a/insanity/test.py b/insanity/test.py
index 0850e28..6db6966 100644
--- a/insanity/test.py
+++ b/insanity/test.py
@@ -463,6 +463,13 @@ class Test(gobject.GObject):
self._running = True
self.emit("start", self._iteration)
self.validateChecklistItem("test-started")
+ if self._iteration > 1:
+ for shareditems in self.getSharedCheckList():
+ for name, res in self.getIterationCheckList(self._iteration -1):
+ if name == shareditems:
+ self.validateChecklistItem(name, res)
+ break
+
# start timeout for test !
self._testtimeouttime = time.time() + self._timeout
self._testtimeoutid = gobject.timeout_add(self._timeout * 1000,
@@ -570,6 +577,20 @@ class Test(gobject.GObject):
return dc
@classmethod
+ def getClassSharedCheckList(cls):
+ """
+ Returns the shared test checklist. This is used to know the checklist
+ item result that are shared between iterations of start/stop
+ """
+ dc = {}
+ for cl in cls.mro():
+ if "__test_shared_checklist_items__" in cl.__dict__:
+ dc.update(cl.__test_shared_checklist_items__)
+ if cl == Test:
+ break
+ return dc
+
+ @classmethod
def getClassFullArgumentList(cls):
"""
Returns the full list of arguments with descriptions.
@@ -795,6 +816,12 @@ class Test(gobject.GObject):
"""
return self.getFullCheckList().get(checkitem, None).get("likely_error", None)
+ def getFullCheckList(self):
+ raise NotImplementedError
+
+ def getSharedCheckList(self):
+ raise NotImplementedError
+
def getTestName(self):
return self.__test_name__
diff --git a/insanity/testmetadata.py b/insanity/testmetadata.py
index 1f3be2f..e07e45d 100644
--- a/insanity/testmetadata.py
+++ b/insanity/testmetadata.py
@@ -80,7 +80,8 @@ class TestMetadata():
process.stdout.close()
signal.signal(signal.SIGALRM, old_handler)
exception("Timeout running possible test '%r'", filename)
- return FALSE
+ return False
+
signal.signal(signal.SIGALRM, old_handler)
signal.alarm(0)
@@ -107,6 +108,8 @@ class TestMetadata():
self.__test_arguments__ = self.get_metadata (metadata, "__arguments__")
self.__test_output_files__ = self.get_metadata (metadata, "__output_files__")
self.__test_checklist__ = self.get_metadata (metadata, "__checklist__")
+ self.__test_shared_checklist_items__ = self.get_metadata (metadata,
+ "__shared_checklist_items__")
self.__test_extra_infos__ = self.get_metadata (metadata, "__extra_infos__")
info('It is a valid test')
@@ -138,6 +141,17 @@ class TestMetadata():
dc.update(self.__test_checklist__)
return dc
+ def getSharedCheckList(self):
+ """
+ Return the list of checklist items that are shared between iterations
+ of start/stop
+ """
+ dc = self.__test_class__.getClassSharedCheckList()
+ if self.__test_shared_checklist_items__ != None:
+ dc.update(self.__test_shared_checklist_items__)
+ return dc
+
+
def getFullArgumentList(self):
"""
Returns the full list of arguments with descriptions.