From b3e9343c1d31a1b97b57d1dd61a27d01da75bacd Mon Sep 17 00:00:00 2001
From: Christian Stenger <christian.stenger@nokia.com>
Date: Fri, 24 Feb 2012 16:13:46 +0100
Subject: [PATCH] Squish: Added time saver
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This avoids fetching the status and resolution again
and again for a test case.

Change-Id: I9445d329eb127830352add23e8ff0b5e2b9adbe6
Reviewed-by: Robert Löhning <robert.loehning@nokia.com>
---
 tests/system/shared/workarounds.py | 42 +++++++++++++++++-------------
 1 file changed, 24 insertions(+), 18 deletions(-)

diff --git a/tests/system/shared/workarounds.py b/tests/system/shared/workarounds.py
index 315b085560e..3b2e6f8da1f 100644
--- a/tests/system/shared/workarounds.py
+++ b/tests/system/shared/workarounds.py
@@ -81,6 +81,7 @@ class JIRA:
             self._bugType = bugType
             self._localOnly = os.getenv("SYSTEST_JIRA_NO_LOOKUP")=="1"
             self.__initBugDict__()
+            self._fetchResults_ = {}
             self.__fetchStatusAndResolutionFromJira__()
 
         # function to retrieve the status of the current bug
@@ -108,10 +109,16 @@ class JIRA:
         # dict whether a function for the given bug is deposited or not
         def __fetchStatusAndResolutionFromJira__(self):
             global JIRA_URL
+            bug = "%s-%d" % (self._bugType, self._number)
+            if bug in self._fetchResults_:
+                result = self._fetchResults_[bug]
+                self._resolution = result[0]
+                self._status = result[1]
+                return
             data = None
             if not self._localOnly:
                 try:
-                    bugReport = urllib2.urlopen('%s/%s-%d' % (JIRA_URL, self._bugType, self._number))
+                    bugReport = urllib2.urlopen('%s/%s' % (JIRA_URL, bug))
                     data = bugReport.read()
                 except:
                     data = self.__tryExternalTools__()
@@ -122,34 +129,33 @@ class JIRA:
                                      "ssl support OR install wget or curl to get rid of this warning!")
                         self._localOnly = True
             if data == None:
-                if '%s-%d' % (self._bugType, self._number) in self.__bugs__:
+                if bug in self.__bugs__:
                     test.warning("Using internal dict - bug status could have changed already",
                                  "Please check manually!")
                     self._status = None
                     self._resolution = None
-                    return
                 else:
-                    test.fatal("No workaround function deposited for %s-%d" % (self._bugType, self._number))
+                    test.fatal("No workaround function deposited for %s" % bug)
                     self._resolution = 'Done'
-                    return
             else:
                 data = data.replace("\r", "").replace("\n", "")
                 resPattern = re.compile('<span\s+id="resolution-val".*?>(?P<resolution>.*?)</span>')
                 statPattern = re.compile('<span\s+id="status-val".*?>(.*?<img.*?>)?(?P<status>.*?)</span>')
                 status = statPattern.search(data)
                 resolution = resPattern.search(data)
-            if status:
-                self._status = status.group("status").strip()
-            else:
-                test.fatal("FATAL: Cannot get status of bugreport %s-%d" % (self._bugType, self._number),
-                           "Looks like JIRA has changed.... Please verify!")
-                self._status = None
-            if resolution:
-                self._resolution = resolution.group("resolution").strip()
-            else:
-                test.fatal("FATAL: Cannot get resolution of bugreport %s-%d" % (self._bugType, self._number),
-                           "Looks like JIRA has changed.... Please verify!")
-                self._resolution = None
+                if status:
+                    self._status = status.group("status").strip()
+                else:
+                    test.fatal("FATAL: Cannot get status of bugreport %s" % bug,
+                               "Looks like JIRA has changed.... Please verify!")
+                    self._status = None
+                if resolution:
+                    self._resolution = resolution.group("resolution").strip()
+                else:
+                    test.fatal("FATAL: Cannot get resolution of bugreport %s" % bug,
+                               "Looks like JIRA has changed.... Please verify!")
+                    self._resolution = None
+            self._fetchResults_.update({bug:[self._resolution, self._status]})
 
         # simple helper function - used as fallback if python has no ssl support
         # tries to find curl or wget in PATH and fetches data with it instead of
@@ -186,7 +192,7 @@ class JIRA:
 
         def _workaroundCreator6853_(self, *args):
             if "Release" in args[0] and platform.system() == "Linux":
-                snooze(1)
+                snooze(2)
 
         def _workaroundCreator_MacEditorFocus_(self, *args):
             editor = args[0]
-- 
GitLab