Fixes up a couple of differences between the server and client side
job.run_test implementations. In particular, this changes the
behaviour of the tag parameter to work the same way on the server
as it does on the client, and it adds a boolean return to run_test
that returns True on a GOOD result, False otherwise, the same as it
already does on the client.

Risk: Medium
Visibility: The server job.run_test is now a bit more like the client
side version.

Signed-off-by: John Admanski <jadmanski@google.com>



git-svn-id: http://test.kernel.org/svn/autotest/trunk@2039 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/server/server_job.py b/server/server_job.py
index 14e4ef5..e58ee3c 100755
--- a/server/server_job.py
+++ b/server/server_job.py
@@ -394,12 +394,11 @@
         """
 
         (group, testname) = self.pkgmgr.get_package_name(url, 'test')
-        tag = None
-        subdir = testname
 
         tag = dargs.pop('tag', None)
         if tag:
-            subdir += '.' + tag
+            testname += '.' + tag
+        subdir = testname
 
         outputdir = os.path.join(self.resultdir, subdir)
         if os.path.exists(outputdir):
@@ -422,14 +421,21 @@
             else:
                 self.record('GOOD', subdir, testname,
                             'completed successfully')
-        self._run_group(testname, subdir, group_func)
+
+        result, exc_info = self._run_group(testname, subdir, group_func)
+        if exc_info and isinstance(exc_info[1], error.TestBaseException):
+            return False
+        elif exc_info:
+            raise exc_info[0], exc_info[1], exc_info[2]
+        else:
+            return True
 
 
     def _run_group(self, name, subdir, function, *args, **dargs):
         """\
         Underlying method for running something inside of a group.
         """
-        result = None
+        result, exc_info = None, None
         old_record_prefix = self.record_prefix
         try:
             self.record('START', subdir, name)
@@ -440,6 +446,7 @@
                 self.record_prefix = old_record_prefix
         except error.TestBaseException, e:
             self.record("END %s" % e.exit_status, subdir, name, str(e))
+            exc_info = sys.exc_info()
         except Exception, e:
             err_msg = str(e) + '\n'
             err_msg += traceback.format_exc()
@@ -448,7 +455,7 @@
         else:
             self.record('END GOOD', subdir, name)
 
-        return result
+        return result, exc_info
 
 
     def run_group(self, function, *args, **dargs):
@@ -466,7 +473,7 @@
         if tag:
             name = tag
 
-        return self._run_group(name, None, function, *args, **dargs)
+        return self._run_group(name, None, function, *args, **dargs)[0]
 
 
     def run_reboot(self, reboot_func, get_kernel_func):