diff options
author | Thibault Saunier <thibault.saunier@collabora.com> | 2012-06-01 00:14:37 +0800 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2012-06-18 09:29:51 +0100 |
commit | a332d1459bd987760c52375ea7792d3681bdbc92 (patch) | |
tree | 50121759a8c5b1ec7808924a29e1e081f1ee83a6 | |
parent | d703ee27628181e6ddf8e17f43e63a4ed27dd27d (diff) |
insanity: Handle shared checklist items
-rw-r--r-- | insanity/dbustest.py | 7 | ||||
-rw-r--r-- | insanity/test.py | 27 | ||||
-rw-r--r-- | insanity/testmetadata.py | 16 |
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. |