Bug 141884

Summary: [iOS] run-webkit-tests --leaks is broken because IOSSimulatorPort has no is_snowleopard attribute
Product: WebKit Reporter: David Kilzer (:ddkilzer) <ddkilzer>
Component: Tools / TestsAssignee: David Kilzer (:ddkilzer) <ddkilzer>
Status: RESOLVED FIXED    
Severity: Normal CC: ap, commit-queue, dbates, glenn, jake.nielsen.webkit, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch v1 none

Description David Kilzer (:ddkilzer) 2015-02-22 18:06:12 PST
run-webkit-tests --leaks is broken because IOSSimulatorPort does not define an is_snowleopard attribute:

$ ./Tools/Scripts/run-webkit-tests --release --ios-simulator --results-directory /tmp/layout-test-results-adhoc-test --leaks 
[...]
Process worker/22:       
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
worker/22: AttributeError(''IOSSimulatorPort' object has no attribute 'is_snowleopard'') raised:
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/common/message_pool.py", line 255, in run
      worker.handle(message.name, message.src, *message.args)
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py", line 256, in handle
      self._run_test(test_input, test_list_name)
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py", line 280, in _run_test
      result = self._run_test_with_or_without_timeout(test_input, test_timeout_sec, stop_when_done)
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py", line 323, in _run_test_with_or_without_timeout
      return self._run_test_in_this_thread(test_input, stop_when_done)
    self.run()
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py", line 404, in _run_test_in_this_thread
      return self._run_single_test(self._driver, test_input, stop_when_done)
  File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/common/message_pool.py", line 271, in run
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py", line 408, in _run_single_test
      self._name, driver, test_input, stop_when_done)
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py", line 46, in run_single_test
      return runner.run()
    worker.stop()
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py", line 102, in run
  File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py", line 293, in stop
    self._kill_driver()
  File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py", line 318, in _kill_driver
      return self._run_reftest()
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py", line 291, in _run_reftest
    driver.stop()
  File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/driver.py", line 635, in stop
      test_output = self._driver.run_test(self._driver_input(), self._stop_when_done)
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/driver.py", line 629, in run_test
    self._driver.stop()
      return self._driver.run_test(driver_input, stop_when_done)
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/driver.py", line 203, in run_test
  File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/driver.py", line 347, in stop
      out, err = self._server_process.stop(self._port.driver_stop_timeout() if stop_when_done else 0.0)
    self._server_process.stop(self._port.driver_stop_timeout())
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/server_process.py", line 337, in stop
  File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/server_process.py", line 337, in stop
      self._port.check_for_leaks(self.name(), self.pid())
    self._port.check_for_leaks(self.name(), self.pid())
  File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/ios.py", line 257, in check_for_leaks
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/ios.py", line 257, in check_for_leaks
    self._leak_detector.check_for_leaks(process_name, process_pid)
  File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/leakdetector.py", line 133, in check_for_leaks
    leaks_output = self._port._run_script("run-leaks", self._leaks_args(process_pid), include_configuration_arguments=False, decode_output=False)
      self._leak_detector.check_for_leaks(process_name, process_pid)
  File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/leakdetector.py", line 80, in _leaks_args
    for callstack in self._callstacks_to_exclude_from_leaks():
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/leakdetector.py", line 133, in check_for_leaks
  File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/leakdetector.py", line 60, in _callstacks_to_exclude_from_leaks
    if self._port.is_snowleopard():
      leaks_output = self._port._run_script("run-leaks", self._leaks_args(process_pid)AttributeError: 'IOSSimulatorPort' object has no attribute 'is_snowleopard'
, include_configuration_arguments=False, decode_output=False)
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/leakdetector.py", line 80, in _leaks_args
      for callstack in self._callstacks_to_exclude_from_leaks():
    File "/Volumes/Data/WebKit.git/Tools/Scripts/webkitpy/port/leakdetector.py", line 60, in _callstacks_to_exclude_from_leaks
      if self._port.is_snowleopard():
Exception AttributeError: AttributeError("'IOSSimulatorPort' object has no attribute 'is_snowleopard'",) in <bound method IOSSimulatorDriver.__del__ of <webkitpy.port.driver.IOSSimulatorDriver object at 0x10a5ddd10>> ignored
Comment 1 David Kilzer (:ddkilzer) 2015-02-22 18:06:34 PST
<rdar://problem/19917423>
Comment 2 David Kilzer (:ddkilzer) 2015-02-22 18:15:44 PST
Created attachment 247089 [details]
Patch v1
Comment 3 David Kilzer (:ddkilzer) 2015-02-22 20:53:25 PST
Interestingly, even after this fix, run-webkit-tests --ios-simulator is checking leaks on the LayouTestRelay process, not the DumpRenderTree.app process, and MallocStackLogging=1 is not being set when launching DumpRenderTree.app.

So there is more work to do here.
Comment 4 David Kilzer (:ddkilzer) 2015-02-23 10:07:49 PST
(In reply to comment #3)
> Interestingly, even after this fix, run-webkit-tests --ios-simulator is
> checking leaks on the LayouTestRelay process, not the DumpRenderTree.app
> process, and MallocStackLogging=1 is not being set when launching
> DumpRenderTree.app.
> 
> So there is more work to do here.

Will do the follow-up work in another bug.
Comment 5 WebKit Commit Bot 2015-02-23 10:53:23 PST
Comment on attachment 247089 [details]
Patch v1

Clearing flags on attachment: 247089

Committed r180509: <http://trac.webkit.org/changeset/180509>
Comment 6 WebKit Commit Bot 2015-02-23 10:53:26 PST
All reviewed patches have been landed.  Closing bug.