def LaunchChromeTestServerSpawner(self):
   """Launches test server spawner."""
   server_ready = False
   error_msgs = []
   # TODO(pliard): deflake this function. The for loop should be removed as
   # well as IsHttpServerConnectable(). spawning_server.Start() should also
   # block until the server is ready.
   # Try 3 times to launch test spawner server.
   for i in xrange(0, 3):
     self.test_server_spawner_port = ports.AllocateTestServerPort()
     self._ForwardPorts(
         [(self.test_server_spawner_port, self.test_server_spawner_port)])
     self._spawning_server = SpawningServer(self.test_server_spawner_port,
                                            self.adb,
                                            self.tool,
                                            self.build_type)
     self._spawning_server.Start()
     server_ready, error_msg = ports.IsHttpServerConnectable(
         '127.0.0.1', self.test_server_spawner_port, path='/ping',
         expected_read='ready')
     if server_ready:
       break
     else:
       error_msgs.append(error_msg)
     self._spawning_server.Stop()
     # Wait for 2 seconds then restart.
     time.sleep(2)
   if not server_ready:
     logging.error(';'.join(error_msgs))
     raise Exception('Can not start the test spawner server.')
   self._PushTestServerPortInfoToDevice()
    def __init__(self, test_options, device, test_package):
        """Single test suite attached to a single device.

    Args:
      test_options: A GTestOptions object.
      device: Device to run the tests.
      test_package: An instance of TestPackage class.
    """

        super(TestRunner, self).__init__(device, test_options.tool)

        self.test_package = test_package
        self.test_package.tool = self.tool
        self._test_arguments = test_options.test_arguments

        timeout = test_options.timeout
        if timeout == 0:
            timeout = 60
        # On a VM (e.g. chromium buildbots), this timeout is way too small.
        if os.environ.get('BUILDBOT_SLAVENAME'):
            timeout = timeout * 2

        self._timeout = timeout * self.tool.GetTimeoutScale()
        if _TestSuiteRequiresHighPerfMode(self.test_package.suite_name):
            self._perf_controller = perf_control.PerfControl(self.device)

        if _TestSuiteRequiresMockTestServer(self.test_package.suite_name):
            self._servers = [
                local_test_server_spawner.LocalTestServerSpawner(
                    ports.AllocateTestServerPort(), self.device, self.tool)
            ]
        else:
            self._servers = []
示例#3
0
 def LaunchChromeTestServerSpawner(self):
     """Launches test server spawner."""
     server_ready = False
     error_msgs = []
     # Try 3 times to launch test spawner server.
     for i in xrange(0, 3):
         # Do not allocate port for test server here. We will allocate
         # different port for individual test in TestServerThread.
         self.test_server_spawner_port = ports.AllocateTestServerPort()
         self._spawning_server = SpawningServer(
             self.test_server_spawner_port, self.adb, self.tool,
             self.build_type)
         self._spawning_server.Start()
         server_ready, error_msg = ports.IsHttpServerConnectable(
             '127.0.0.1',
             self.test_server_spawner_port,
             path='/ping',
             expected_read='ready')
         if server_ready:
             break
         else:
             error_msgs.append(error_msg)
         self._spawning_server.Stop()
         # Wait for 2 seconds then restart.
         time.sleep(2)
     if not server_ready:
         logging.error(';'.join(error_msgs))
         raise Exception('Can not start the test spawner server.')
     self._PushTestServerPortInfoToDevice()
     self._spawner_forwarder = self._CreateAndRunForwarder(
         self.adb,
         [(self.test_server_spawner_port, self.test_server_spawner_port)],
         self.tool, '127.0.0.1', self.build_type)
示例#4
0
    def __init__(self, android_platform_backend, browser_options,
                 backend_settings, output_profile_path, extensions_to_load,
                 target_arch):
        assert isinstance(
            android_platform_backend,
            android_platform_backend_module.AndroidPlatformBackend)
        super(AndroidBrowserBackend, self).__init__(
            android_platform_backend,
            supports_tab_control=backend_settings.supports_tab_control,
            supports_extensions=False,
            browser_options=browser_options,
            output_profile_path=output_profile_path,
            extensions_to_load=extensions_to_load)
        if len(extensions_to_load) > 0:
            raise browser_backend.ExtensionsNotSupportedException(
                'Android browser does not support extensions.')

        # Initialize fields so that an explosion during init doesn't break in Close.
        self._backend_settings = backend_settings
        self._target_arch = target_arch
        self._saved_sslflag = ''

        # TODO(tonyg): This is flaky because it doesn't reserve the port that it
        # allocates. Need to fix this.
        self._port = ports.AllocateTestServerPort()

        # TODO(wuhu): Move to network controller backend.
        self.platform_backend.InstallTestCa()

        # Kill old browser.
        self._KillBrowser()

        if self.device.HasRoot() or self.device.NeedsSU():
            if self.browser_options.profile_dir:
                self.platform_backend.PushProfile(
                    self._backend_settings.package,
                    self.browser_options.profile_dir)
            elif not self.browser_options.dont_override_profile:
                self.platform_backend.RemoveProfile(
                    self._backend_settings.package,
                    self._backend_settings.profile_ignore_list)

        if self.browser_options.netsim:
            assert self.platform_backend.use_rndis_forwarder, (
                'Netsim requires RNDIS forwarding.')
            self.wpr_port_pairs = forwarders.PortPairs(
                http=forwarders.PortPair(0, 80),
                https=forwarders.PortPair(0, 443),
                dns=forwarders.PortPair(0, 53))

        # Set the debug app if needed.
        self.platform_backend.SetDebugApp(self._backend_settings.package)
示例#5
0
        def individual_device_set_up(dev, host_device_tuples):
            # Install test APK.
            self._delegate.Install(dev)

            # Push data dependencies.
            external_storage = dev.GetExternalStoragePath()
            host_device_tuples = [(h, d if d is not None else external_storage)
                                  for h, d in host_device_tuples]
            dev.PushChangedFiles(host_device_tuples)

            self._servers[str(dev)] = []
            if self.TestPackage() in _SUITE_REQUIRES_TEST_SERVER_SPAWNER:
                self._servers[str(dev)].append(
                    local_test_server_spawner.LocalTestServerSpawner(
                        ports.AllocateTestServerPort(), dev,
                        self.GetTool(dev)))

            for s in self._servers[str(dev)]:
                s.SetUp()
示例#6
0
def AllocateTestServerPort():
    return ports.AllocateTestServerPort()
示例#7
0
 def __init__(self, app_backend, pid, name):
   self._app_backend = app_backend
   self._pid = pid
   self._name = name
   self._local_port = ports.AllocateTestServerPort()
   self._devtools_client = None