Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(202)

Side by Side Diff: build/android/base_test_runner.py

Issue 9494007: Upstream test sharder. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: N emulators launched asynchronously Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | build/android/base_test_sharder.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import logging 5 import logging
6 import os 6 import os
7 7
8 import android_commands 8 import android_commands
9 from chrome_test_server_spawner import SpawningServer 9 from chrome_test_server_spawner import SpawningServer
10 from flag_changer import FlagChanger 10 from flag_changer import FlagChanger
11 import lighttpd_server 11 import lighttpd_server
12 import run_tests_helper 12 import run_tests_helper
13 13
14 FORWARDER_PATH = '/data/local/tmp/forwarder' 14 FORWARDER_PATH = '/data/local/tmp/forwarder'
15 # These ports must match up with the constants in net/test/test_server.cc 15 # These ports must match up with the constants in net/test/test_server.cc
16 TEST_SERVER_SPAWNER_PORT = 8001 16 TEST_SERVER_SPAWNER_PORT = 8001
17 TEST_SERVER_PORT = 8002 17 TEST_SERVER_PORT = 8002
18 TEST_SYNC_SERVER_PORT = 8003 18 TEST_SYNC_SERVER_PORT = 8003
19 19
20 20
21 class BaseTestRunner(object): 21 class BaseTestRunner(object):
22 """Base class for running tests on a single device.""" 22 """Base class for running tests on a single device.
23 23
24 def __init__(self, device): 24 A subclass should implement RunTests() with no parameter, so that calling
25 the Run() method will set up tests, run them and tear them down.
26 """
27
28 def __init__(self, device, shard_index):
25 """ 29 """
26 Args: 30 Args:
27 device: Tests will run on the device of this ID. 31 device: Tests will run on the device of this ID.
32 shard_index: Index number of the shard on which the test suite will run.
28 """ 33 """
29 self.device = device 34 self.device = device
30 self.adb = android_commands.AndroidCommands(device=device) 35 self.adb = android_commands.AndroidCommands(device=device)
31 # Synchronize date/time between host and device. Otherwise same file on 36 # Synchronize date/time between host and device. Otherwise same file on
32 # host and device may have different timestamp which may cause 37 # host and device may have different timestamp which may cause
33 # AndroidCommands.PushIfNeeded failed, or a test which may compare timestamp 38 # AndroidCommands.PushIfNeeded failed, or a test which may compare timestamp
34 # got from http head and local time could be failed. 39 # got from http head and local time could be failed.
35 self.adb.SynchronizeDateTime() 40 self.adb.SynchronizeDateTime()
36 self._http_server = None 41 self._http_server = None
37 self._forwarder = None 42 self._forwarder = None
38 self._spawning_server = None 43 self._spawning_server = None
39 self._spawner_forwarder = None 44 self._spawner_forwarder = None
40 self._forwarder_device_port = 8000 45 self._forwarder_device_port = 8000
41 self.forwarder_base_url = ('http://localhost:%d' % 46 self.forwarder_base_url = ('http://localhost:%d' %
42 self._forwarder_device_port) 47 self._forwarder_device_port)
43 self.flags = FlagChanger(self.adb) 48 self.flags = FlagChanger(self.adb)
49 self.shard_index = shard_index
44 50
45 def RunTests(self): 51 def Run(self):
46 # TODO(bulach): this should actually do SetUp / RunTestsInternal / TearDown. 52 """Calls subclass functions to set up tests, run them and tear them down.
47 # Refactor the various subclasses to expose a RunTestsInternal without 53
48 # any params. 54 Returns:
49 raise NotImplementedError 55 Test results returned from RunTests().
56 """
57 self.SetUp()
58 try:
59 return self.RunTests()
60 finally:
61 self.TearDown()
50 62
51 def SetUp(self): 63 def SetUp(self):
52 """Called before tests run.""" 64 """Called before tests run."""
53 pass 65 pass
54 66
67 def RunTests(self):
68 """Runs the tests. Need to be overridden."""
69 raise NotImplementedError
70
55 def TearDown(self): 71 def TearDown(self):
56 """Called when tests finish running.""" 72 """Called when tests finish running."""
57 self.ShutdownHelperToolsForTestSuite() 73 self.ShutdownHelperToolsForTestSuite()
58 74
59 def CopyTestData(self, test_data_paths, dest_dir): 75 def CopyTestData(self, test_data_paths, dest_dir):
60 """Copies |test_data_paths| list of files/directories to |dest_dir|. 76 """Copies |test_data_paths| list of files/directories to |dest_dir|.
61 77
62 Args: 78 Args:
63 test_data_paths: A list of files or directories relative to |dest_dir| 79 test_data_paths: A list of files or directories relative to |dest_dir|
64 which should be copied to the device. The paths must exist in 80 which should be copied to the device. The paths must exist in
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 """Launches test server spawner.""" 153 """Launches test server spawner."""
138 self._spawning_server = SpawningServer(TEST_SERVER_SPAWNER_PORT, 154 self._spawning_server = SpawningServer(TEST_SERVER_SPAWNER_PORT,
139 TEST_SERVER_PORT) 155 TEST_SERVER_PORT)
140 self._spawning_server.Start() 156 self._spawning_server.Start()
141 # TODO(yfriedman): Ideally we'll only try to start up a port forwarder if 157 # TODO(yfriedman): Ideally we'll only try to start up a port forwarder if
142 # there isn't one already running but for now we just get an error message 158 # there isn't one already running but for now we just get an error message
143 # and the existing forwarder still works. 159 # and the existing forwarder still works.
144 self._spawner_forwarder = run_tests_helper.ForwardDevicePorts( 160 self._spawner_forwarder = run_tests_helper.ForwardDevicePorts(
145 self.adb, [(TEST_SERVER_SPAWNER_PORT, TEST_SERVER_SPAWNER_PORT), 161 self.adb, [(TEST_SERVER_SPAWNER_PORT, TEST_SERVER_SPAWNER_PORT),
146 (TEST_SERVER_PORT, TEST_SERVER_PORT)]) 162 (TEST_SERVER_PORT, TEST_SERVER_PORT)])
OLDNEW
« no previous file with comments | « no previous file | build/android/base_test_sharder.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698