blob: 006327b9c6f9ce4cf50e763bdb8f99f477cdf519 [file] [log] [blame]
Kevin Cheng9170ad72017-12-12 16:07:47 -08001# Copyright 2017, The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15"""
16Various globals used by atest.
17"""
18
Jim Tang9da27dd2019-07-04 15:31:47 +080019import os
kellyhungf93d21f2019-06-25 18:15:25 +080020import re
mikehoran642764c2018-10-17 12:29:14 -070021
Kevin Cheng9170ad72017-12-12 16:07:47 -080022MODE = 'DEFAULT'
23
Kevin Cheng7edb0b92017-12-14 15:00:25 -080024# Result server constants for atest_utils.
Kevin Cheng9170ad72017-12-12 16:07:47 -080025RESULT_SERVER = ''
26RESULT_SERVER_ARGS = []
Kevin Cheng9dc66942018-01-04 12:11:12 -080027RESULT_SERVER_TIMEOUT = 5
Dan Shi6daad632018-08-30 10:58:03 -070028# Result arguments if tests are configured in TEST_MAPPING.
29TEST_MAPPING_RESULT_SERVER_ARGS = []
Kevin Cheng7edb0b92017-12-14 15:00:25 -080030
easoncyleedfbe02d2018-11-19 17:37:41 +080031# Google service key for gts tests.
32GTS_GOOGLE_SERVICE_ACCOUNT = ''
33
Kevin Cheng7edb0b92017-12-14 15:00:25 -080034# Arg constants.
35WAIT_FOR_DEBUGGER = 'WAIT_FOR_DEBUGGER'
36DISABLE_INSTALL = 'DISABLE_INSTALL'
mikehoran458b2b12018-02-28 16:07:13 -080037DISABLE_TEARDOWN = 'DISABLE_TEARDOWN'
Mike Ma0126b9b2018-01-11 19:11:16 -080038PRE_PATCH_ITERATIONS = 'PRE_PATCH_ITERATIONS'
39POST_PATCH_ITERATIONS = 'POST_PATCH_ITERATIONS'
40PRE_PATCH_FOLDER = 'PRE_PATCH_FOLDER'
41POST_PATCH_FOLDER = 'POST_PATCH_FOLDER'
easoncylee8809be02018-03-27 12:28:07 +080042SERIAL = 'SERIAL'
yangbillc614bdc2018-06-22 14:31:24 +080043ALL_ABI = 'ALL_ABI'
kellyhung0625d172018-06-21 16:40:27 +080044HOST = 'HOST'
Kevin Cheng21ea9102018-02-22 10:52:42 -080045CUSTOM_ARGS = 'CUSTOM_ARGS'
yangbillcc1a21f2018-12-12 20:03:12 +080046DRY_RUN = 'DRY_RUN'
easoncyleec0151632019-01-30 10:29:16 +080047ANDROID_SERIAL = 'ANDROID_SERIAL'
Julien Desprezd5168652019-02-06 14:49:01 -080048INSTANT = 'INSTANT'
yelinhsieh7be4a7f2019-08-15 14:27:22 +080049USER_TYPE = 'USER_TYPE'
Dan Shifa016d12018-02-02 00:37:19 -080050
51# Application exit codes.
52EXIT_CODE_SUCCESS = 0
53EXIT_CODE_ENV_NOT_SETUP = 1
54EXIT_CODE_BUILD_FAILURE = 2
55EXIT_CODE_ERROR = 3
56EXIT_CODE_TEST_NOT_FOUND = 4
yangbill848a7d12018-09-04 19:12:08 +080057EXIT_CODE_TEST_FAILURE = 5
yangbillbac1dd62019-06-03 17:06:40 +080058EXIT_CODE_VERIFY_FAILURE = 6
Kevin Cheng8b2c94c2017-12-18 14:43:26 -080059
kellyhungbedaf532019-09-10 16:39:47 +080060# Codes of specific events. These are exceptions that don't stop anything
61# but sending metrics.
62ACCESS_CACHE_FAILURE = 101
63ACCESS_HISTORY_FAILURE = 102
kellyhung7d244f82019-09-18 11:50:35 +080064IMPORT_FAILURE = 103
Jim Tang9c6aa862019-10-07 15:45:07 +080065MLOCATEDB_LOCKED = 104
kellyhungbedaf532019-09-10 16:39:47 +080066
Kevin Cheng8b2c94c2017-12-18 14:43:26 -080067# Test finder constants.
68MODULE_CONFIG = 'AndroidTest.xml'
nelsonlie3f90de2018-06-22 14:59:39 +080069MODULE_COMPATIBILITY_SUITES = 'compatibility_suites'
Kevin Cheng5be930e2018-02-20 09:39:22 -080070MODULE_NAME = 'module_name'
71MODULE_PATH = 'path'
72MODULE_CLASS = 'class'
73MODULE_INSTALLED = 'installed'
74MODULE_CLASS_ROBOLECTRIC = 'ROBOLECTRIC'
kellyhung0625d172018-06-21 16:40:27 +080075MODULE_CLASS_NATIVE_TESTS = 'NATIVE_TESTS'
76MODULE_CLASS_JAVA_LIBRARIES = 'JAVA_LIBRARIES'
nelsonli3cac1342018-08-21 15:33:45 +080077MODULE_TEST_CONFIG = 'test_config'
Kevin Cheng8b2c94c2017-12-18 14:43:26 -080078
79# Env constants
80ANDROID_BUILD_TOP = 'ANDROID_BUILD_TOP'
81ANDROID_OUT = 'OUT'
Kevin Chenge084eb02018-02-12 12:48:35 -080082ANDROID_OUT_DIR = 'OUT_DIR'
83ANDROID_HOST_OUT = 'ANDROID_HOST_OUT'
yangbill1067e482019-01-29 15:57:54 +080084ANDROID_PRODUCT_OUT = 'ANDROID_PRODUCT_OUT'
Kevin Cheng8b2c94c2017-12-18 14:43:26 -080085
86# Test Info data keys
Dan Shicdbda552018-05-18 23:31:33 -070087# Value of include-filter option.
Kevin Cheng8b2c94c2017-12-18 14:43:26 -080088TI_FILTER = 'filter'
89TI_REL_CONFIG = 'rel_config'
kellyhung0625d172018-06-21 16:40:27 +080090TI_MODULE_CLASS = 'module_class'
Dan Shicdbda552018-05-18 23:31:33 -070091# Value of module-arg option
92TI_MODULE_ARG = 'module-arg'
Kevin Cheng8b2c94c2017-12-18 14:43:26 -080093
94# Google TF
95GTF_MODULE = 'google-tradefed'
96GTF_TARGET = 'google-tradefed-core'
Dan Shi7a8e1ad2018-04-12 11:01:07 -070097
Dan Shicdbda552018-05-18 23:31:33 -070098# Test group for tests in TEST_MAPPING
99TEST_GROUP_PRESUBMIT = 'presubmit'
100TEST_GROUP_POSTSUBMIT = 'postsubmit'
Dan Shie4e267f2018-06-01 11:31:57 -0700101TEST_GROUP_ALL = 'all'
Dan Shi350e7472018-06-19 12:25:32 -0700102# Key in TEST_MAPPING file for a list of imported TEST_MAPPING file
103TEST_MAPPING_IMPORTS = 'imports'
Dan Shidf5210a2018-05-16 14:13:33 -0700104
105# TradeFed command line args
Julien Despreza2855e92018-11-30 18:24:58 +0000106TF_INCLUDE_FILTER_OPTION = 'include-filter'
107TF_EXCLUDE_FILTER_OPTION = 'exclude-filter'
Dan Shidf5210a2018-05-16 14:13:33 -0700108TF_INCLUDE_FILTER = '--include-filter'
Julien Despreza2855e92018-11-30 18:24:58 +0000109TF_EXCLUDE_FILTER = '--exclude-filter'
Dan Shi0beebb42018-05-24 15:02:57 -0700110TF_ATEST_INCLUDE_FILTER = '--atest-include-filter'
Dan Shicdbda552018-05-18 23:31:33 -0700111TF_ATEST_INCLUDE_FILTER_VALUE_FMT = '{test_name}:{test_filter}'
112TF_MODULE_ARG = '--module-arg'
113TF_MODULE_ARG_VALUE_FMT = '{test_name}:{option_name}:{option_value}'
Julien Despreza2855e92018-11-30 18:24:58 +0000114TF_SUITE_FILTER_ARG_VALUE_FMT = '"{test_name} {option_value}"'
easoncyleee7518952019-09-16 17:24:25 +0800115TF_SKIP_LOADING_CONFIG_JAR = '--skip-loading-config-jar'
easoncylee2dd42a92018-04-26 15:49:56 +0800116
easoncylee5f5cf032018-06-26 16:17:08 +0800117# Suite Plans
118SUITE_PLANS = frozenset(['cts'])
Jim Tang815b8892018-07-11 12:57:30 +0800119
120# Constants used for AtestArgParser
121HELP_DESC = 'Build, install and run Android tests locally.'
122BUILD_STEP = 'build'
123INSTALL_STEP = 'install'
124TEST_STEP = 'test'
125ALL_STEPS = [BUILD_STEP, INSTALL_STEP, TEST_STEP]
126REBUILD_MODULE_INFO_FLAG = '--rebuild-module-info'
nelsonlie3f90de2018-06-22 14:59:39 +0800127
128# ANSI code shift for colorful print
129BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8)
kellyhung0625d172018-06-21 16:40:27 +0800130
Jim Tangd740fa52019-03-14 16:07:08 +0800131# Answers equivalent to YES!
132AFFIRMATIVES = ['y', 'Y', 'yes', 'Yes', 'YES', '']
133LD_RANGE = 2
134
135# Types of Levenshetine Distance Cost
136COST_TYPO = (1, 1, 1)
137COST_SEARCH = (8, 1, 5)
138
kellyhung0625d172018-06-21 16:40:27 +0800139# Value of TestInfo install_locations.
140DEVICELESS_TEST = 'host'
141DEVICE_TEST = 'device'
142BOTH_TEST = 'both'
kellyhungd69de382018-08-07 18:32:58 +0800143
mikehoraned5d7fe2018-10-05 14:24:18 -0700144# Metrics
mikehoraned5d7fe2018-10-05 14:24:18 -0700145METRICS_URL = 'http://asuite-218222.appspot.com/atest/metrics'
kellyhung792fbcf2018-11-19 16:25:50 +0800146EXTERNAL = 'EXTERNAL_RUN'
147INTERNAL = 'INTERNAL_RUN'
148INTERNAL_EMAIL = '@google.com'
kellyhungde9bd292019-05-21 19:41:28 +0800149INTERNAL_HOSTNAME = '.google.com'
kellyhungbf737112019-01-18 17:01:36 +0800150CONTENT_LICENSES_URL = 'https://source.android.com/setup/start/licenses'
151CONTRIBUTOR_AGREEMENT_URL = {
152 'INTERNAL': 'https://cla.developers.google.com/',
153 'EXTERNAL': 'https://opensource.google.com/docs/cla/'
154}
155PRIVACY_POLICY_URL = 'https://policies.google.com/privacy'
156TERMS_SERVICE_URL = 'https://policies.google.com/terms'
kellyhung67f359d2019-04-01 11:22:39 +0800157TOOL_NAME = 'atest'
easoncylee1cace872019-09-19 09:03:29 +0800158TF_PREPARATION = 'tf-preparation'
mikehoraned5d7fe2018-10-05 14:24:18 -0700159
kellyhung7d004bb2019-04-02 11:54:59 +0800160# Detect type for local_detect_event.
161# Next expansion : DETECT_TYPE_XXX = 1
162DETECT_TYPE_BUG_DETECTED = 0
kellyhungaafad9a2019-06-04 17:21:32 +0800163# Considering a trade-off between speed and size, we set UPPER_LIMIT to 100000
164# to make maximum file space 10M(100000(records)*100(byte/record)) at most.
165# Therefore, to update history file will spend 1 sec at most in each run.
166UPPER_LIMIT = 100000
167TRIM_TO_SIZE = 50000
kellyhung7d004bb2019-04-02 11:54:59 +0800168
kellyhungd69de382018-08-07 18:32:58 +0800169# VTS plans
170VTS_STAGING_PLAN = 'vts-staging-default'
Simran Basi2cc996e2018-10-09 12:19:25 -0700171
172# TreeHugger TEST_MAPPING SUITE_PLANS
173TEST_MAPPING_SUITES = ['device-tests', 'general-tests']
yangbill22ed51a2018-12-04 16:48:24 +0800174
175# VTS TF
176VTS_TF_MODULE = 'vts-tradefed'
yangbill3eaf2842019-01-02 12:05:45 +0800177
178# ATest TF
179ATEST_TF_MODULE = 'atest-tradefed'
yangbill4b618ed2019-07-23 16:03:38 +0800180
181# Build environment variable for each build on ATest
182# With SOONG_COLLECT_JAVA_DEPS enabled, out/soong/module_bp_java_deps.json will
183# be generated when make.
184ATEST_BUILD_ENV = {'SOONG_COLLECT_JAVA_DEPS':'true'}
Jim Tang9da27dd2019-07-04 15:31:47 +0800185
Jim Tang139389a2019-09-27 14:48:30 +0800186# Atest index path and relative dirs/caches.
Jim Tang9da27dd2019-07-04 15:31:47 +0800187INDEX_DIR = os.path.join(os.getenv(ANDROID_HOST_OUT, ''), 'indexes')
188LOCATE_CACHE = os.path.join(INDEX_DIR, 'mlocate.db')
189INT_INDEX = os.path.join(INDEX_DIR, 'integration.idx')
190CLASS_INDEX = os.path.join(INDEX_DIR, 'classes.idx')
191CC_CLASS_INDEX = os.path.join(INDEX_DIR, 'cc_classes.idx')
192PACKAGE_INDEX = os.path.join(INDEX_DIR, 'packages.idx')
193QCLASS_INDEX = os.path.join(INDEX_DIR, 'fqcn.idx')
194MODULE_INDEX = os.path.join(INDEX_DIR, 'modules.idx')
Jim Tang139389a2019-09-27 14:48:30 +0800195VERSION_FILE = os.path.join(os.path.dirname(__file__), 'VERSION')
Jim Tang9da27dd2019-07-04 15:31:47 +0800196
197# Regeular Expressions
198CC_EXT_RE = re.compile(r'.*\.(cc|cpp)$')
199JAVA_EXT_RE = re.compile(r'.*\.(java|kt)$')
200# e.g. /path/to/ccfile.cc: TEST_F(test_name, method_name){
201CC_OUTPUT_RE = re.compile(r'(?P<file_path>/.*):\s*TEST(_F|_P)?[ ]*\('
202 r'(?P<test_name>\w+)\s*,\s*(?P<method_name>\w+)\)'
203 r'\s*\{')
Jim Tangb669f282019-07-05 16:54:12 +0800204CC_GREP_RE = r'^[ ]*TEST(_P|_F)?[ ]*\([[:alnum:]].*,'
Jim Tang9da27dd2019-07-04 15:31:47 +0800205# e.g. /path/to/Javafile.java:package com.android.settings.accessibility
206# grab the path, Javafile(class) and com.android.settings.accessibility(package)
207CLASS_OUTPUT_RE = re.compile(r'(?P<java_path>.*/(?P<class>[A-Z]\w+)\.\w+)[:].*')
208QCLASS_OUTPUT_RE = re.compile(r'(?P<java_path>.*/(?P<class>[A-Z]\w+)\.\w+)'
209 r'[:]\s*package\s+(?P<package>[^(;|\s)]+)\s*')
Jim Tang2759ea52019-08-13 00:18:17 +0800210PACKAGE_OUTPUT_RE = re.compile(r'(?P<java_dir>/.*/).*[.](java|kt)[:]\s*package\s+'
Jim Tang9da27dd2019-07-04 15:31:47 +0800211 r'(?P<package>[^(;|\s)]+)\s*')