Title: [204672] trunk/Tools
Revision
204672
Author
[email protected]
Date
2016-08-19 19:53:00 -0700 (Fri, 19 Aug 2016)

Log Message

Unreviewed, rolling out r204659.

This change appears to have caused ios-simulator LayoutTests
to fail when shutting down the simulator

Reverted changeset:

"REGRESSION (r204477): Running LayoutTests on ios-simulator
became ~15 minutes slower"
https://bugs.webkit.org/show_bug.cgi?id=160985
http://trac.webkit.org/changeset/204659

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (204671 => 204672)


--- trunk/Tools/ChangeLog	2016-08-20 02:51:13 UTC (rev 204671)
+++ trunk/Tools/ChangeLog	2016-08-20 02:53:00 UTC (rev 204672)
@@ -1,3 +1,17 @@
+2016-08-19  Ryan Haddad  <[email protected]>
+
+        Unreviewed, rolling out r204659.
+
+        This change appears to have caused ios-simulator LayoutTests
+        to fail when shutting down the simulator
+
+        Reverted changeset:
+
+        "REGRESSION (r204477): Running LayoutTests on ios-simulator
+        became ~15 minutes slower"
+        https://bugs.webkit.org/show_bug.cgi?id=160985
+        http://trac.webkit.org/changeset/204659
+
 2016-08-19  Alexey Proskuryakov  <[email protected]>
 
         Build fix for non-USE_SIM_SERVICE_CONTEXT builds

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/views/printing.py (204671 => 204672)


--- trunk/Tools/Scripts/webkitpy/layout_tests/views/printing.py	2016-08-20 02:51:13 UTC (rev 204671)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/views/printing.py	2016-08-20 02:53:00 UTC (rev 204672)
@@ -94,7 +94,7 @@
         self._print_default("Regular timeout: %s, slow test timeout: %s" %
                   (self._options.time_out_ms, self._options.slow_time_out_ms))
 
-        self._print_default('Command line: ' + ' '.join(self._port.driver_cmd_line_for_logging()))
+        self._print_default('Command line: ' + ' '.join(self._port.driver_cmd_line()))
         self._print_default('')
 
     def print_found(self, num_all_test_files, num_to_run, repeat_each, iterations):

Modified: trunk/Tools/Scripts/webkitpy/port/base.py (204671 => 204672)


--- trunk/Tools/Scripts/webkitpy/port/base.py	2016-08-20 02:51:13 UTC (rev 204671)
+++ trunk/Tools/Scripts/webkitpy/port/base.py	2016-08-20 02:53:00 UTC (rev 204672)
@@ -658,7 +658,7 @@
             return test_name + '/'
         return test_name
 
-    def driver_cmd_line_for_logging(self):
+    def driver_cmd_line(self):
         """Prints the DRT command line that will be used."""
         driver = self.create_driver(0)
         return driver.cmd_line(self.get_option('pixel_tests'), [])

Modified: trunk/Tools/Scripts/webkitpy/port/driver.py (204671 => 204672)


--- trunk/Tools/Scripts/webkitpy/port/driver.py	2016-08-20 02:51:13 UTC (rev 204671)
+++ trunk/Tools/Scripts/webkitpy/port/driver.py	2016-08-20 02:53:00 UTC (rev 204672)
@@ -600,7 +600,7 @@
         product_dir = self._port._build_path()
         relay_args = [
             '-developerDir', self._port.developer_dir,
-            '-udid', self._port.device_id_for_worker_number(self._worker_number),
+            '-udid', self._port.testing_device(self._worker_number).udid,
             '-productDir', product_dir,
             '-app', dump_tool,
         ]

Modified: trunk/Tools/Scripts/webkitpy/port/ios.py (204671 => 204672)


--- trunk/Tools/Scripts/webkitpy/port/ios.py	2016-08-20 02:51:13 UTC (rev 204671)
+++ trunk/Tools/Scripts/webkitpy/port/ios.py	2016-08-20 02:53:00 UTC (rev 204672)
@@ -98,7 +98,6 @@
         super(IOSSimulatorPort, self).__init__(host, port_name, **kwargs)
 
         optional_device_class = self.get_option('device_class')
-        self._printing_cmd_line = False
         self._device_class = optional_device_class if optional_device_class else self.DEFAULT_DEVICE_CLASS
         _log.debug('IOSSimulatorPort _device_class is %s', self._device_class)
 
@@ -109,13 +108,6 @@
             return 'WebKitTestRunnerApp.app'
         return 'DumpRenderTree.app'
 
-    def driver_cmd_line_for_logging(self):
-        # Avoid spinning up devices just for logging the commandline.
-        self._printing_cmd_line = True
-        result = super(IOSSimulatorPort, self).driver_cmd_line_for_logging()
-        self._printing_cmd_line = False
-        return result
-
     @property
     @memoized
     def simulator_runtime(self):
@@ -232,6 +224,7 @@
         return list(reversed([self._filesystem.join(self._webkit_baseline_path(p), 'TestExpectations') for p in self.baseline_search_path()]))
 
     def _set_device_class(self, device_class):
+        # Ideally we'd ensure that no simulators are running when this is called.
         self._device_class = device_class if device_class else self.DEFAULT_DEVICE_CLASS
 
     def _create_simulators(self):
@@ -243,13 +236,9 @@
         self._createSimulatorApps()
 
         for i in xrange(self.child_processes()):
-            self._create_device(i)
+            Simulator.wait_until_device_is_in_state(self.testing_device(i).udid, Simulator.DeviceState.SHUTDOWN)
+            Simulator.reset_device(self.testing_device(i).udid)
 
-        for i in xrange(self.child_processes()):
-            device_udid = self._testing_device(i).udid
-            Simulator.wait_until_device_is_in_state(device_udid, Simulator.DeviceState.SHUTDOWN)
-            Simulator.reset_device(device_udid)
-
     def setup_test_run(self, device_class=None):
         mac_os_version = self.host.platform.os_version
 
@@ -261,7 +250,7 @@
         self._create_simulators()
 
         for i in xrange(self.child_processes()):
-            device_udid = self._testing_device(i).udid
+            device_udid = self.testing_device(i).udid
             _log.debug('testing device %s has udid %s', i, device_udid)
 
             # FIXME: <rdar://problem/20916140> Switch to using CoreSimulator.framework for launching and quitting iOS Simulator
@@ -274,10 +263,10 @@
 
         _log.info('Waiting for all iOS Simulators to finish booting.')
         for i in xrange(self.child_processes()):
-            Simulator.wait_until_device_is_booted(self._testing_device(i).udid)
+            Simulator.wait_until_device_is_booted(self.testing_device(i).udid)
 
     def _quit_ios_simulator(self):
-        _log.debug("_quit_ios_simulator killing all Simulator processes")
+        _log.debug("_quit_ios_simulator")
         # FIXME: We should kill only the Simulators we started.
         subprocess.call(["killall", "-9", "-m", "Simulator"])
 
@@ -295,9 +284,7 @@
 
         for i in xrange(self.child_processes()):
             simulator_path = self.get_simulator_path(i)
-            device_udid = self._testing_device(i).udid
-            self._remove_device(i)
-
+            device_udid = self.testing_device(i).udid
             if not os.path.exists(simulator_path):
                 continue
             try:
@@ -314,6 +301,7 @@
                 _log.debug('rmtree %s', saved_state_path)
                 self._filesystem.rmtree(saved_state_path)
 
+                Simulator().delete_device(device_udid)
             except:
                 _log.warning('Unable to remove Simulator' + str(i))
 
@@ -381,21 +369,13 @@
             return stderr, None
         return stderr, crash_log
 
-    def _create_device(self, number):
-        return Simulator.create_device(number, self.simulator_device_type(), self.simulator_runtime)
+    def testing_device(self, number):
+        # FIXME: rather than calling lookup_or_create_device every time, we should just store a mapping of
+        # number to device_udid.
+        device_type = self.simulator_device_type()
+        _log.debug(' testing_device %s using device_type %s', number, device_type)
+        return Simulator().lookup_or_create_device(device_type.name + ' WebKit Tester' + str(number), device_type, self.simulator_runtime)
 
-    def _remove_device(self, number):
-        Simulator.remove_device(number)
-
-    def _testing_device(self, number):
-        return Simulator.device_number(number)
-
-    # This is only exposed so that IOSSimulatorDriver can use it.
-    def device_id_for_worker_number(self, number):
-        if self._printing_cmd_line:
-            return '<dummy id>'
-        return self._testing_device(number).udid
-
     def get_simulator_path(self, suffix=""):
         return os.path.join(self.SIMULATOR_DIRECTORY, "Simulator" + str(suffix) + ".app")
 

Modified: trunk/Tools/Scripts/webkitpy/port/port_testcase.py (204671 => 204672)


--- trunk/Tools/Scripts/webkitpy/port/port_testcase.py	2016-08-20 02:51:13 UTC (rev 204671)
+++ trunk/Tools/Scripts/webkitpy/port/port_testcase.py	2016-08-20 02:53:00 UTC (rev 204672)
@@ -100,11 +100,11 @@
 
     def test_driver_cmd_line(self):
         port = self.make_port()
-        self.assertTrue(len(port.driver_cmd_line_for_logging()))
+        self.assertTrue(len(port.driver_cmd_line()))
 
         options = MockOptions(additional_drt_flag=['--foo=bar', '--foo=baz'])
         port = self.make_port(options=options)
-        cmd_line = port.driver_cmd_line_for_logging()
+        cmd_line = port.driver_cmd_line()
         self.assertTrue('--foo=bar' in cmd_line)
         self.assertTrue('--foo=baz' in cmd_line)
 

Modified: trunk/Tools/Scripts/webkitpy/xcode/simulator.py (204671 => 204672)


--- trunk/Tools/Scripts/webkitpy/xcode/simulator.py	2016-08-20 02:51:13 UTC (rev 204671)
+++ trunk/Tools/Scripts/webkitpy/xcode/simulator.py	2016-08-20 02:53:00 UTC (rev 204672)
@@ -218,23 +218,6 @@
         return Simulator().find_device_by_udid(device_udid)
 
     @classmethod
-    def shutdown(cls, udid):
-        """
-        Shut down the given CoreSimulator device.
-        :param udid: The udid of the device.
-        :type udid: str
-        """
-        device_state = Simulator.device_state(udid)
-        if device_state == Simulator.DeviceState.BOOTING or device_state == Simulator.DeviceState.BOOTED:
-            try:
-                _log.debug('xcrun simctl shutdown %s', udid)
-                subprocess.check_call(['xcrun', 'simctl', 'shutdown', udid])
-            except subprocess.CalledProcessError:
-                raise RuntimeError('"xcrun simctl shutdown" failed')
-
-        Simulator.wait_until_device_is_in_state(udid, Simulator.DeviceState.SHUTDOWN)
-
-    @classmethod
     def delete(cls, udid):
         """
         Delete the given CoreSimulator device.
@@ -241,7 +224,8 @@
         :param udid: The udid of the device.
         :type udid: str
         """
-        Device.shutdown(udid)
+        _log.debug('deleting device %s', udid)
+        Simulator.wait_until_device_is_in_state(udid, Simulator.DeviceState.SHUTDOWN)
         try:
             _log.debug('xcrun simctl delete %s', udid)
             subprocess.check_call(['xcrun', 'simctl', 'delete', udid])
@@ -255,7 +239,8 @@
         :param udid: The udid of the device.
         :type udid: str
         """
-        Device.shutdown(udid)
+        _log.debug('resetting device %s', udid)
+        Simulator.wait_until_device_is_in_state(udid, Simulator.DeviceState.SHUTDOWN)
         try:
             _log.debug('xcrun simctl erase %s', udid)
             subprocess.check_call(['xcrun', 'simctl', 'erase', udid])
@@ -296,8 +281,6 @@
     devices_re = re.compile(
         '\s*(?P<name>[^(]+ )\((?P<udid>[^)]+)\) \((?P<state>[^)]+)\)( \((?P<availability>[^)]+)\))?')
 
-    _managed_devices = {}
-
     def __init__(self, host=None):
         self._host = host or Host()
         self.runtimes = []
@@ -313,41 +296,7 @@
         BOOTED = 3
         SHUTTING_DOWN = 4
 
-    NAME_FOR_STATE = [
-        'CREATING',
-        'SHUTDOWN',
-        'BOOTING',
-        'BOOTED',
-        'SHUTTING_DOWN'
-    ]
-
     @staticmethod
-    def create_device(number, device_type, runtime):
-        device = Simulator().lookup_or_create_device(device_type.name + ' WebKit Tester' + str(number), device_type, runtime)
-        _log.debug('created device {} {}'.format(number, device))
-        assert(len(Simulator._managed_devices) == number)
-        Simulator._managed_devices[number] = device
-
-    @staticmethod
-    def remove_device(number):
-        if not Simulator._managed_devices[number]:
-            return
-        device_udid = Simulator._managed_devices[number].udid
-        _log.debug('removing device {} {}'.format(number, device_udid))
-        del Simulator._managed_devices[number]
-        Simulator.delete_device(device_udid)
-
-    @staticmethod
-    def device_number(number):
-        return Simulator._managed_devices[number]
-
-    @staticmethod
-    def device_state_description(state):
-        if (state == Simulator.DeviceState.DOES_NOT_EXIST):
-            return 'DOES_NOT_EXIST'
-        return Simulator.NAME_FOR_STATE[state]
-
-    @staticmethod
     def wait_until_device_is_booted(udid, timeout_seconds=60 * 5):
         Simulator.wait_until_device_is_in_state(udid, Simulator.DeviceState.BOOTED, timeout_seconds)
         with timeout(seconds=timeout_seconds):
@@ -366,17 +315,17 @@
 
     @staticmethod
     def wait_until_device_is_in_state(udid, wait_until_state, timeout_seconds=60 * 5):
-        _log.debug('waiting for device %s to enter state %s with timeout %s', udid, Simulator.device_state_description(wait_until_state), timeout_seconds)
+        _log.debug('waiting for device %s to enter state %s with timeout %s', udid, wait_until_state, timeout_seconds)
         with timeout(seconds=timeout_seconds):
             device_state = Simulator.device_state(udid)
             while (device_state != wait_until_state):
                 device_state = Simulator.device_state(udid)
-                _log.debug(' device state %s', Simulator.device_state_description(device_state))
+                _log.debug(' device state %s', device_state)
                 time.sleep(0.5)
 
         end_state = Simulator.device_state(udid)
         if (end_state != wait_until_state):
-            raise RuntimeError('Timed out waiting for simulator device to enter state {0}; current state is {1}'.format(Simulator.device_state_description(wait_until_state), Simulator.device_state_description(end_state)))
+            raise RuntimeError('Timed out waiting for simulator device to enter state {0}; current state is {1}'.format(wait_until_state, end_state))
 
     @staticmethod
     def device_state(udid):
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to