Bug 1222944 - [mozrunner] Dump kernel log for B2G emulator draft
authorEdgar Chen <echen@mozilla.com>
Wed, 28 Oct 2015 15:42:10 +0800
changeset 315679 2cb1590aff22851655f4e006800e1bb7a4267bd5
parent 315678 b636cdf673e222b574ee1ac9b658e52c63ea63ba
child 512071 ba889252b31c2c5d32f3233094dccf13788897ce
push id8447
push userechen@mozilla.com
push dateWed, 16 Dec 2015 03:37:17 +0000
bugs1222944
milestone46.0a1
Bug 1222944 - [mozrunner] Dump kernel log for B2G emulator
testing/mozbase/mozrunner/mozrunner/devices/base.py
testing/mozharness/scripts/b2g_emulator_unittest.py
--- a/testing/mozbase/mozrunner/mozrunner/devices/base.py
+++ b/testing/mozbase/mozrunner/mozrunner/devices/base.py
@@ -140,16 +140,25 @@ class Device(object):
             logcat_log = os.path.join(self.logdir, '%s.log' % serial)
             if os.path.isfile(logcat_log):
                 self._rotate_log(logcat_log)
             logcat_args = [self.app_ctx.adb, '-s', '%s' % serial,
                            'logcat', '-v', 'time', '-b', 'main', '-b', 'radio']
             self.logcat_proc = ProcessHandler(logcat_args, logfile=logcat_log)
             self.logcat_proc.run()
 
+            #save kernel log
+            kmsg_log = os.path.join(self.logdir, '%s_kmsg.log' % serial)
+            if os.path.isfile(kmsg_log):
+                self._rotate_log(kmsg_log)
+            kmsg_args = [self.app_ctx.adb, '-s', '%s' % serial,
+                         'shell', 'cat', '/proc/kmsg']
+            self.kmsg_proc = ProcessHandler(kmsg_args, logfile=kmsg_log)
+            self.kmsg_proc.run()
+
     def reboot(self):
         """
         Reboots the device via adb.
         """
         self.dm.reboot(wait=True)
 
     def install_busybox(self, busybox):
         """
--- a/testing/mozharness/scripts/b2g_emulator_unittest.py
+++ b/testing/mozharness/scripts/b2g_emulator_unittest.py
@@ -368,27 +368,30 @@ class B2GEmulatorTest(TestingMixin, VCSM
         parser = self.get_test_output_parser(suite_name,
                                              config=self.config,
                                              log_obj=self.log_obj,
                                              error_list=error_list)
         return_code = self.run_command(cmd, cwd=cwd, env=env,
                                        output_timeout=1000,
                                        output_parser=parser,
                                        success_codes=success_codes)
-
-        logcat = os.path.join(dirs['abs_work_dir'], 'emulator-5554.log')
+        tbpl_status, log_level = parser.evaluate_parser(return_code,
+                                                        success_codes=success_codes)
 
         qemu = os.path.join(dirs['abs_work_dir'], 'qemu.log')
         if os.path.isfile(qemu):
             self.copyfile(qemu, os.path.join(env['MOZ_UPLOAD_DIR'],
                                              os.path.basename(qemu)))
 
-        tbpl_status, log_level = parser.evaluate_parser(return_code,
-                                                        success_codes=success_codes)
+        kmsg = os.path.join(dirs['abs_work_dir'], 'emulator-5554_kmsg.log')
+        if os.path.isfile(kmsg):
+            self.copyfile(kmsg, os.path.join(env['MOZ_UPLOAD_DIR'],
+                                             os.path.basename(kmsg)))
 
+        logcat = os.path.join(dirs['abs_work_dir'], 'emulator-5554.log')
         if os.path.isfile(logcat):
             if tbpl_status != TBPL_SUCCESS:
                 # On failure, dump logcat, check if the emulator is still
                 # running, and if it is still accessible via adb.
                 self.info('dumping logcat')
                 self.run_command(['cat', logcat], error_list=LogcatErrorList)
 
                 self.run_command(['ps', '-C', 'emulator'])