constants.py revision 424c4d7b64af9d0d8fd9624f381f469654d5e3d2
1# Copyright (c) 2012 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""Defines a set of constants shared by test runners and other scripts."""
6
7import collections
8import os
9import subprocess
10import sys
11
12
13DIR_SOURCE_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__),
14                                               os.pardir, os.pardir, os.pardir))
15ISOLATE_DEPS_DIR = os.path.join(DIR_SOURCE_ROOT, 'isolate_deps_dir')
16EMULATOR_SDK_ROOT = os.path.abspath(os.path.join(DIR_SOURCE_ROOT, os.pardir,
17                                                 os.pardir))
18
19# TODO(craigdh): Remove these once references have been removed downstream.
20CHROME_PACKAGE = 'com.google.android.apps.chrome'
21CHROME_ACTIVITY = 'com.google.android.apps.chrome.Main'
22
23CHROME_STABLE_PACKAGE = 'com.android.chrome'
24CHROME_BETA_PACKAGE = 'com.chrome.beta'
25
26LEGACY_BROWSER_PACKAGE = 'com.google.android.browser'
27LEGACY_BROWSER_ACTIVITY = 'com.android.browser.BrowserActivity'
28
29CONTENT_SHELL_PACKAGE = 'org.chromium.content_shell_apk'
30CONTENT_SHELL_ACTIVITY = 'org.chromium.content_shell_apk.ContentShellActivity'
31
32CHROMIUM_TEST_SHELL_PACKAGE = 'org.chromium.chrome.testshell'
33CHROMIUM_TEST_SHELL_ACTIVITY = (
34    'org.chromium.chrome.testshell.ChromiumTestShellActivity')
35CHROMIUM_TEST_SHELL_DEVTOOLS_SOCKET = 'chromium_testshell_devtools_remote'
36CHROMIUM_TEST_SHELL_HOST_DRIVEN_DIR = os.path.join(
37    DIR_SOURCE_ROOT, 'chrome', 'android')
38
39
40PackageInfo = collections.namedtuple('PackageInfo',
41    ['package', 'activity', 'cmdline_file', 'devtools_socket',
42     'test_package'])
43
44PACKAGE_INFO = {
45    'chrome': PackageInfo(
46        CHROME_PACKAGE,
47        CHROME_ACTIVITY,
48        '/data/local/chrome-command-line',
49        'chrome_devtools_remote',
50        'com.google.android.apps.chrome.tests'),
51    'legacy_browser': PackageInfo(
52        LEGACY_BROWSER_PACKAGE,
53        LEGACY_BROWSER_ACTIVITY,
54        None,
55        None,
56        None),
57    'content_shell': PackageInfo(
58        CONTENT_SHELL_PACKAGE,
59        CONTENT_SHELL_ACTIVITY,
60        '/data/local/tmp/content-shell-command-line',
61        None,
62        None),
63    'chromium_test_shell': PackageInfo(
64        CHROMIUM_TEST_SHELL_PACKAGE,
65        CHROMIUM_TEST_SHELL_ACTIVITY,
66        '/data/local/tmp/chromium-testshell-command-line',
67        CHROMIUM_TEST_SHELL_DEVTOOLS_SOCKET,
68        'org.chromium.chrome.testshell.tests'),
69    'gtest': PackageInfo(
70        'org.chromium.native_test',
71        'org.chromium.native_test.ChromeNativeTestActivity',
72        '/data/local/tmp/chrome-native-tests-command-line',
73        None,
74        None),
75    'content_browsertests': PackageInfo(
76        'org.chromium.content_browsertests_apk',
77        'org.chromium.content_browsertests_apk.ContentBrowserTestsActivity',
78        '/data/local/tmp/content-browser-tests-command-line',
79        None,
80        None),
81}
82
83
84# Ports arrangement for various test servers used in Chrome for Android.
85# Lighttpd server will attempt to use 9000 as default port, if unavailable it
86# will find a free port from 8001 - 8999.
87LIGHTTPD_DEFAULT_PORT = 9000
88LIGHTTPD_RANDOM_PORT_FIRST = 8001
89LIGHTTPD_RANDOM_PORT_LAST = 8999
90TEST_SYNC_SERVER_PORT = 9031
91TEST_SEARCH_BY_IMAGE_SERVER_PORT = 9041
92
93# The net test server is started from port 10201.
94# TODO(pliard): http://crbug.com/239014. Remove this dirty workaround once
95# http://crbug.com/239014 is fixed properly.
96TEST_SERVER_PORT_FIRST = 10201
97TEST_SERVER_PORT_LAST = 30000
98# A file to record next valid port of test server.
99TEST_SERVER_PORT_FILE = '/tmp/test_server_port'
100TEST_SERVER_PORT_LOCKFILE = '/tmp/test_server_port.lock'
101
102TEST_EXECUTABLE_DIR = '/data/local/tmp'
103# Directories for common java libraries for SDK build.
104# These constants are defined in build/android/ant/common.xml
105SDK_BUILD_JAVALIB_DIR = 'lib.java'
106SDK_BUILD_TEST_JAVALIB_DIR = 'test.lib.java'
107SDK_BUILD_APKS_DIR = 'apks'
108
109# The directory on the device where perf test output gets saved to.
110DEVICE_PERF_OUTPUT_DIR = '/data/data/' + CHROME_PACKAGE + '/files'
111
112SCREENSHOTS_DIR = os.path.join(DIR_SOURCE_ROOT, 'out_screenshots')
113
114ANDROID_SDK_VERSION = 18
115ANDROID_SDK_ROOT = os.path.join(DIR_SOURCE_ROOT,
116                                'third_party/android_tools/sdk')
117ANDROID_NDK_ROOT = os.path.join(DIR_SOURCE_ROOT,
118                                'third_party/android_tools/ndk')
119
120UPSTREAM_FLAKINESS_SERVER = 'test-results.appspot.com'
121
122
123def GetBuildType():
124  try:
125    return os.environ['BUILDTYPE']
126  except KeyError:
127    raise Exception('The BUILDTYPE environment variable has not been set')
128
129
130def SetBuildType(build_type):
131  os.environ['BUILDTYPE'] = build_type
132
133
134def _GetADBPath():
135  if os.environ.get('ANDROID_SDK_ROOT'):
136    return 'adb'
137  # If envsetup.sh hasn't been sourced and there's no adb in the path,
138  # set it here.
139  try:
140    with file(os.devnull, 'w') as devnull:
141      subprocess.call(['adb', 'version'], stdout=devnull, stderr=devnull)
142    return 'adb'
143  except OSError:
144    print >> sys.stderr, 'No adb found in $PATH, fallback to checked in binary.'
145    return os.path.join(ANDROID_SDK_ROOT, 'platform-tools', 'adb')
146
147
148ADB_PATH = _GetADBPath()
149
150# Exit codes
151ERROR_EXIT_CODE = 1
152WARNING_EXIT_CODE = 88
153