Title: [118244] trunk/Tools
Revision
118244
Author
[email protected]
Date
2012-05-23 14:13:51 -0700 (Wed, 23 May 2012)

Log Message

[Chromium-Android] Fix chromium_android_unittest
https://bugs.webkit.org/show_bug.cgi?id=87196

Reviewed by Tony Chang.

Update unit tests after ChromiumAndroidPort supported apk based
DumpRenderTree.

* Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
(ChromiumAndroidPortTest):
(ChromiumAndroidPortTest.mock_run_command_fn): Moved out from test_get_last_stacktrace so that other tests can use it as a common command line handler.
(ChromiumAndroidPortTest.test_get_last_stacktrace):
(ChromiumAndroidPortTest.test_get_crash_log): Added to test our overridden _get_crash_log()
(ChromiumAndroidDriverTest):
(ChromiumAndroidDriverTest.setUp):
(ChromiumAndroidDriverTest.test_cmd_line): Added to test our overridden cmd_line()
(ChromiumAndroidDriverTest.test_write_command_and_read_line): Added test of unexpected EOF (indicating crash on Android)

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (118243 => 118244)


--- trunk/Tools/ChangeLog	2012-05-23 21:13:28 UTC (rev 118243)
+++ trunk/Tools/ChangeLog	2012-05-23 21:13:51 UTC (rev 118244)
@@ -1,3 +1,23 @@
+2012-05-23  Xianzhu Wang  <[email protected]>
+
+        [Chromium-Android] Fix chromium_android_unittest
+        https://bugs.webkit.org/show_bug.cgi?id=87196
+
+        Reviewed by Tony Chang.
+
+        Update unit tests after ChromiumAndroidPort supported apk based
+        DumpRenderTree.
+
+        * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
+        (ChromiumAndroidPortTest):
+        (ChromiumAndroidPortTest.mock_run_command_fn): Moved out from test_get_last_stacktrace so that other tests can use it as a common command line handler.
+        (ChromiumAndroidPortTest.test_get_last_stacktrace):
+        (ChromiumAndroidPortTest.test_get_crash_log): Added to test our overridden _get_crash_log()
+        (ChromiumAndroidDriverTest):
+        (ChromiumAndroidDriverTest.setUp):
+        (ChromiumAndroidDriverTest.test_cmd_line): Added to test our overridden cmd_line()
+        (ChromiumAndroidDriverTest.test_write_command_and_read_line): Added test of unexpected EOF (indicating crash on Android)
+
 2012-05-23  Caio Marcelo de Oliveira Filho  <[email protected]>
 
         [watchlist] Add myself and create a watch rule to catch Attribute related patches

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py (118243 => 118244)


--- trunk/Tools/Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py	2012-05-23 21:13:28 UTC (rev 118243)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py	2012-05-23 21:13:51 UTC (rev 118244)
@@ -39,64 +39,94 @@
 from webkitpy.layout_tests.port import Port
 
 
-# FIXME: Temporarily disabled. https://bugs.webkit.org/show_bug.cgi?id=87196
-
-class ChromiumAndroidPortTest: # (port_testcase.PortTestCase):
+class ChromiumAndroidPortTest(port_testcase.PortTestCase):
     port_name = 'chromium-android'
     port_maker = chromium_android.ChromiumAndroidPort
+    mock_logcat = ''
 
     def test_attributes(self):
         port = self.make_port()
         self.assertTrue(port.get_option('enable_hardware_gpu'))
         self.assertEquals(port.baseline_path(), port._webkit_baseline_path('chromium-android'))
 
+    @staticmethod
+    def mock_run_command_fn(args):
+        if args[1] == 'shell':
+            if args[2:] == ['ls', '-n', '/data/tombstones']:
+                # For 'adb shell ls -n /data/tombstones'
+                return ('-rw------- 1000     1000       218643 2012-04-26 18:15 tombstone_00\n'
+                        '-rw------- 1000     1000       241695 2012-04-26 18:15 tombstone_01\n'
+                        '-rw------- 1000     1000       219472 2012-04-26 18:16 tombstone_02\n'
+                        '-rw------- 1000     1000        45316 2012-04-27 16:33 tombstone_03\n'
+                        '-rw------- 1000     1000        82022 2012-04-23 16:57 tombstone_04\n'
+                        '-rw------- 1000     1000        82015 2012-04-23 16:57 tombstone_05\n'
+                        '-rw------- 1000     1000        81974 2012-04-23 16:58 tombstone_06\n'
+                        '-rw------- 1000     1000       237409 2012-04-26 17:41 tombstone_07\n'
+                        '-rw------- 1000     1000       276089 2012-04-26 18:15 tombstone_08\n'
+                        '-rw------- 1000     1000       219618 2012-04-26 18:15 tombstone_09\n')
+            elif args[2] == 'cat':
+                return args[3] + '\nmock_contents\n'
+        elif args[1] == 'logcat':
+            return ChromiumAndroidPortTest.mock_logcat
+        else:
+            return ''
+
     def test_get_last_stacktrace(self):
         port = self.make_port()
 
         def mock_run_command_no_dir(args):
             return '/data/tombstones: No such file or directory'
         port._executive = MockExecutive2(run_command_fn=mock_run_command_no_dir)
-        self.assertEquals(port.get_last_stacktrace(), '')
+        self.assertEquals(port._get_last_stacktrace(), '')
 
         def mock_run_command_no_file(args):
             return ''
         port._executive = MockExecutive2(run_command_fn=mock_run_command_no_file)
-        self.assertEquals(port.get_last_stacktrace(), '')
+        self.assertEquals(port._get_last_stacktrace(), '')
 
-        def mock_run_command_non_empty(args):
-            if args[2] == 'ls':
-                # For 'adb shell ls -n /data/tombstones'
-                return '''-rw------- 1000     1000       218643 2012-04-26 18:15 tombstone_00
--rw------- 1000     1000       241695 2012-04-26 18:15 tombstone_01
--rw------- 1000     1000       219472 2012-04-26 18:16 tombstone_02
--rw------- 1000     1000        45316 2012-04-27 16:33 tombstone_03
--rw------- 1000     1000        82022 2012-04-23 16:57 tombstone_04
--rw------- 1000     1000        82015 2012-04-23 16:57 tombstone_05
--rw------- 1000     1000        81974 2012-04-23 16:58 tombstone_06
--rw------- 1000     1000       237409 2012-04-26 17:41 tombstone_07
--rw------- 1000     1000       276089 2012-04-26 18:15 tombstone_08
--rw------- 1000     1000       219618 2012-04-26 18:15 tombstone_09
-'''
-            else:
-                # For 'adb shell cat {tombstone}'
-                return args[3]
-        port._executive = MockExecutive2(run_command_fn=mock_run_command_non_empty)
-        self.assertEquals(port.get_last_stacktrace(), '/data/tombstones/tombstone_03')
+        port._executive = MockExecutive2(run_command_fn=ChromiumAndroidPortTest.mock_run_command_fn)
+        self.assertEquals(port._get_last_stacktrace(),
+                          '-rw------- 1000 1000 45316 2012-04-27 16:33 tombstone_03\n'
+                          '/data/tombstones/tombstone_03\nmock_contents\n')
 
+    def test_get_crash_log(self):
+        port = self.make_port()
+        port._executive = MockExecutive2(run_command_fn=ChromiumAndroidPortTest.mock_run_command_fn)
+        ChromiumAndroidPortTest.mock_logcat = 'logcat contents\n'
+        self.assertEquals(port._get_crash_log('foo', 1234, 'out bar\nout baz\n', 'err bar\nerr baz\n', newer_than=None),
+            (u'crash log for foo (pid 1234):\n'
+             u'STDOUT: out bar\n'
+             u'STDOUT: out baz\n'
+             u'STDOUT: ********* Logcat:\n'
+             u'STDOUT: logcat contents\n'
+             u'STDERR: err bar\n'
+             u'STDERR: err baz\n'
+             u'STDERR: ********* Tombstone file:\n'
+             u'STDERR: -rw------- 1000 1000 45316 2012-04-27 16:33 tombstone_03\n'
+             u'STDERR: /data/tombstones/tombstone_03\n'
+             u'STDERR: mock_contents\n'))
+        self.assertEquals(port._get_crash_log(None, None, None, None, newer_than=None),
+            (u'crash log for <unknown process name> (pid <unknown>):\n'
+             u'STDOUT: ********* Logcat:\n'
+             u'STDOUT: logcat contents\n'
+             u'STDERR: ********* Tombstone file:\n'
+             u'STDERR: -rw------- 1000 1000 45316 2012-04-27 16:33 tombstone_03\n'
+             u'STDERR: /data/tombstones/tombstone_03\n'
+             u'STDERR: mock_contents\n'))
 
-class ChromiumAndroidDriverTest: # (unittest.TestCase):
+
+class ChromiumAndroidDriverTest(unittest.TestCase):
     def setUp(self):
-        mock_port = Port(MockSystemHost())
+        mock_port = chromium_android.ChromiumAndroidPort(MockSystemHost(), 'chromium-android')
         self.driver = chromium_android.ChromiumAndroidDriver(mock_port, worker_number=0, pixel_tests=True)
 
-    def test_get_drt_return_value(self):
-        self.assertEquals(self.driver._get_drt_return_value('#DRT_RETURN 0'), 0)
-        self.assertEquals(self.driver._get_drt_return_value(''), None)
+    def test_cmd_line(self):
+        cmd_line = self.driver.cmd_line(True, ['--a'])
+        self.assertTrue('--a' in cmd_line)
+        self.assertTrue('--in-fifo=' + chromium_android.DRT_APP_FILE_DIR + 'DumpRenderTree.in' in cmd_line)
+        self.assertTrue('--out-fifo=' + chromium_android.DRT_APP_FILE_DIR + 'DumpRenderTree.out' in cmd_line)
+        self.assertTrue('--err-file=' + chromium_android.DRT_APP_FILE_DIR + 'DumpRenderTree.err' in cmd_line)
 
-    def test_has_crash_hint(self):
-        self.assertTrue(self.driver._has_crash_hint('[1] + Stopped (signal)'))
-        self.assertFalse(self.driver._has_crash_hint(''))
-
     def test_read_prompt(self):
         self.driver._proc = Mock()  # FIXME: This should use a tighter mock.
         self.driver._proc.stdout = StringIO.StringIO("root@android:/ # ")
@@ -113,10 +143,12 @@
 
     def test_write_command_and_read_line(self):
         self.driver._proc = Mock()  # FIXME: This should use a tighter mock.
-        self.driver._proc.stdout = StringIO.StringIO("#URL:file:///data/local/tmp/third_party/WebKit/LayoutTests/test.html\noutput\n[1] + Stopped (signal)\n")
+        self.driver._proc.stdout = StringIO.StringIO("#URL:file:///data/local/tmp/third_party/WebKit/LayoutTests/test.html\noutput\n\n")
         self.assertEquals(self.driver._write_command_and_read_line(), ('#URL:file:///mock-checkout/LayoutTests/test.html\n', False))
         self.assertEquals(self.driver._write_command_and_read_line(), ('output\n', False))
-        self.assertEquals(self.driver._write_command_and_read_line(), ('[1] + Stopped (signal)\n', True))
+        self.assertEquals(self.driver._write_command_and_read_line(), ('\n', False))
+        # Unexpected EOF is treated as crash.
+        self.assertEquals(self.driver._write_command_and_read_line(), ('', True))
 
 
 if __name__ == '__main__':
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to