Changeset 219088 in webkit


Ignore:
Timestamp:
Jul 3, 2017 1:15:04 PM (7 years ago)
Author:
Jonathan Bedard
Message:

webkitpy: Properly number duplicated crashlogs
https://bugs.webkit.org/show_bug.cgi?id=172002

Reviewed by Aakash Jain.

  • Scripts/webkitpy/common/system/crashlogs.py:

(CrashLogs._find_all_logs_darwin): Number multiple crash logs for a single process with
an increasing integer.

  • Scripts/webkitpy/common/system/crashlogs_unittest.py:

(CrashLogsTest.create_crash_logs_darwin): Create duplicated crashlog for testing.
(CrashLogsTest.test_find_all_log_darwin): Now 7 Darwin logs instead of 5.
(CrashLogsTest.test_duplicate_log_darwin): Test that duplicated logs are correctly numbered.

Location:
trunk/Tools
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r219087 r219088  
     12017-07-03  Jonathan Bedard  <jbedard@apple.com>
     2
     3        webkitpy: Properly number duplicated crashlogs
     4        https://bugs.webkit.org/show_bug.cgi?id=172002
     5
     6        Reviewed by Aakash Jain.
     7
     8        * Scripts/webkitpy/common/system/crashlogs.py:
     9        (CrashLogs._find_all_logs_darwin): Number multiple crash logs for a single process with
     10        an increasing integer.
     11        * Scripts/webkitpy/common/system/crashlogs_unittest.py:
     12        (CrashLogsTest.create_crash_logs_darwin): Create duplicated crashlog for testing.
     13        (CrashLogsTest.test_find_all_log_darwin): Now 7 Darwin logs instead of 5.
     14        (CrashLogsTest.test_duplicate_log_darwin): Test that duplicated logs are correctly numbered.
     15
    1162017-07-03  Ryosuke Niwa  <rniwa@webkit.org>
    217
  • trunk/Tools/Scripts/webkitpy/common/system/crashlogs.py

    r217853 r219088  
    162162                        result_name = parsed_name + "-" + str(parsed_pid)
    163163
    164                     while result_name in crash_logs:
    165                         result_name = result_name + "-1"
    166                     crash_logs[result_name] = errors + log_contents
     164                    # Processes can remain running after Sandbox violations, which generate crash logs.
     165                    # This means that we can have mutliple crash logs attributed to the same process.
     166                    # The unique_name must be named in the format PROCESS_NAME-PID-#, where '-#' is optional.
     167                    # This is because of how DarwinPort._merge_crash_logs parses the crash name.
     168                    count = 1
     169                    unique_name = result_name
     170                    while unique_name in crash_logs:
     171                        unique_name = result_name + '-' + str(count)
     172                        count += 1
     173                    crash_logs[unique_name] = errors + log_contents
    167174            except IOError, e:
    168175                if include_errors:
  • trunk/Tools/Scripts/webkitpy/common/system/crashlogs_unittest.py

    r217853 r219088  
    249249        self.misformatted_mock_crash_report = 'Junk that should not appear in a crash report' + make_mock_crash_report_darwin('DumpRenderTree', 28526)[200:]
    250250        self.files = {}
    251         self.files['/Users/mock/Library/Logs/DiagnosticReports/DumpRenderTree_2011-06-13-150718_quadzen.crash'] = self.older_mock_crash_report
     251        self.files['/Users/mock/Library/Logs/DiagnosticReports/DumpRenderTree_2011-06-13-150716_quadzen.crash'] = self.older_mock_crash_report
     252        self.files['/Users/mock/Library/Logs/DiagnosticReports/DumpRenderTree_2011-06-13-150717_quadzen_1.crash'] = self.older_mock_crash_report
     253        self.files['/Users/mock/Library/Logs/DiagnosticReports/DumpRenderTree_2011-06-13-150718_quadzen_2.crash'] = self.older_mock_crash_report
    252254        self.files['/Users/mock/Library/Logs/DiagnosticReports/DumpRenderTree_2011-06-13-150719_quadzen.crash'] = self.mock_crash_report
    253255        self.files['/Users/mock/Library/Logs/DiagnosticReports/DumpRenderTree_2011-06-13-150720_quadzen.crash'] = self.newer_mock_crash_report
     
    268270        crash_logs = self.create_crash_logs_darwin()
    269271        all_logs = crash_logs.find_all_logs()
    270         self.assertEqual(len(all_logs), 5)
     272        self.assertEqual(len(all_logs), 7)
    271273
    272274        for test, crash_log in all_logs.iteritems():
    273275            self.assertTrue(crash_log in self.files.values())
    274276            self.assertTrue(test == "Unknown" or int(test.split("-")[1]) in range(28527, 28531))
     277
     278    def test_duplicate_log_darwin(self):
     279        if not SystemHost().platform.is_mac():
     280            return
     281
     282        crash_logs = self.create_crash_logs_darwin()
     283        all_logs = crash_logs.find_all_logs()
     284        expected_logs = ['DumpRenderTree-28528', 'DumpRenderTree-28528-1', 'DumpRenderTree-28528-2',
     285                         'DumpRenderTree-28529', 'DumpRenderTree-28530', 'FooProcess-28527', 'Unknown']
     286
     287        for log in expected_logs:
     288            self.assertIn(log, all_logs)
     289        for log in all_logs:
     290            self.assertIn(log, expected_logs)
    275291
    276292    def test_find_log_darwin(self):
Note: See TracChangeset for help on using the changeset viewer.