[Branch,~linaro-validation/lava-dispatcher/trunk] Rev 101: fix bug 833246 push result even no getting test case results

Message ID 20110907020813.13937.27268.launchpad@ackee.canonical.com
State Accepted
Headers show

Commit Message

Spring Zhang Sept. 7, 2011, 2:08 a.m.
Merge authors:
  Spring Zhang (qzhang)
Related merge proposals:
  https://code.launchpad.net/~qzhang/lava-dispatcher/fix-833246/+merge/74190
  proposed by: Spring Zhang (qzhang)
  review: Approve - Spring Zhang (qzhang)
------------------------------------------------------------
revno: 101 [merge]
committer: Spring Zhang <spring.zhang@linaro.org>
branch nick: fix-833246
timestamp: Wed 2011-09-07 10:06:38 +0800
message:
  fix bug 833246 push result even no getting test case results
modified:
  lava_dispatcher/actions/launch_control.py
  lava_dispatcher/client.py


--
lp:lava-dispatcher
https://code.launchpad.net/~linaro-validation/lava-dispatcher/trunk

You are subscribed to branch lp:lava-dispatcher.
To unsubscribe from this branch go to https://code.launchpad.net/~linaro-validation/lava-dispatcher/trunk/+edit-subscription

Patch

=== modified file 'lava_dispatcher/actions/launch_control.py'
--- lava_dispatcher/actions/launch_control.py	2011-09-02 03:24:06 +0000
+++ lava_dispatcher/actions/launch_control.py	2011-09-06 09:35:13 +0000
@@ -91,38 +91,37 @@ 
             'tar czf /tmp/lava_results.tgz -C /tmp/%s .' % LAVA_RESULT_DIR)
 
         master_ip = client.get_master_ip()
-        if master_ip == None:
-            raise NetworkError("Getting master image IP address failed")
-        # Set 80 as server port
-        client.run_cmd_master('python -m SimpleHTTPServer 80 &> /dev/null &')
-        time.sleep(3)
-
-        result_tarball = "http://%s/lava_results.tgz" % master_ip
-        tarball_dir = mkdtemp(dir=LAVA_IMAGE_TMPDIR)
-        os.chmod(tarball_dir, 0755)
-
-        # download test result with a retry mechanism
-        # set retry timeout to 2mins
-        now = time.time()
-        timeout = 120
-        while time.time() < now+timeout:
-            try:
-                result_path = download(result_tarball, tarball_dir)
-            except:
-                if time.time() >= now+timeout:
-                    raise
-
-        client.run_cmd_master('kill %1')
-
-        tar = tarfile.open(result_path)
-        for tarinfo in tar:
-            if os.path.splitext(tarinfo.name)[1] == ".bundle":
-                f = tar.extractfile(tarinfo)
-                content = f.read()
-                f.close()
-                self.all_bundles.append(json.loads(content))
-        tar.close()
-        shutil.rmtree(tarball_dir)
+        if master_ip != None:
+            # Set 80 as server port
+            client.run_cmd_master('python -m SimpleHTTPServer 80 &> /dev/null &')
+            time.sleep(3)
+
+            result_tarball = "http://%s/lava_results.tgz" % master_ip
+            tarball_dir = mkdtemp(dir=LAVA_IMAGE_TMPDIR)
+            os.chmod(tarball_dir, 0755)
+
+            # download test result with a retry mechanism
+            # set retry timeout to 2mins
+            now = time.time()
+            timeout = 120
+            while time.time() < now+timeout:
+                try:
+                    result_path = download(result_tarball, tarball_dir)
+                except:
+                    if time.time() >= now+timeout:
+                        raise
+
+            client.run_cmd_master('kill %1')
+
+            tar = tarfile.open(result_path)
+            for tarinfo in tar:
+                if os.path.splitext(tarinfo.name)[1] == ".bundle":
+                    f = tar.extractfile(tarinfo)
+                    content = f.read()
+                    f.close()
+                    self.all_bundles.append(json.loads(content))
+            tar.close()
+            shutil.rmtree(tarball_dir)
 
         #flush the serial log
         client.run_shell_command("")
@@ -130,6 +129,12 @@ 
         main_bundle = self.combine_bundles()
         self.context.test_data.add_seriallog(
             self.context.client.get_seriallog())
+        # add submit_results failure info if no available network to get test
+        # case result
+        if master_ip == None:
+            err_msg = "Getting master image IP address failed, \
+no test case result retrived."
+            self.context.test_data.add_result('submit_results', 'fail', err_msg)
         main_bundle['test_runs'].append(self.context.test_data.get_test_run())
         for test_run in main_bundle['test_runs']:
             attributes = test_run.get('attributes',{})
@@ -139,6 +144,9 @@ 
         print >> self.context.oob_file, 'dashboard-put-result:', \
               srv.put_ex(json_bundle, 'lava-dispatcher.bundle', stream)
 
+        if master_ip == None:
+            raise NetworkError(err_msg)
+
     def combine_bundles(self):
         if not self.all_bundles:
             return {

=== modified file 'lava_dispatcher/client.py'
--- lava_dispatcher/client.py	2011-09-06 02:22:12 +0000
+++ lava_dispatcher/client.py	2011-09-06 09:36:46 +0000
@@ -152,7 +152,7 @@ 
         self.wait_network_up()
         #tty device uses minimal match, see pexpect wiki
         #pattern1 = ".*\n(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})"
-        pattern1 = "(\d+\d?\d?\.\d+\d?\d?\.\d+\d?\d?\.\d+\d?\d?)"
+        pattern1 = "(\d?\d?\d?\.\d?\d?\d?\.\d?\d?\d?\.\d?\d?\d?)"
         cmd = ("ifconfig %s | grep 'inet addr' | awk -F: '{print $2}' |"
                 "awk '{print $1}'" % self.board.default_network_interface)
         self.proc.sendline(cmd)