Kevin Cheng | 9170ad7 | 2017-12-12 16:07:47 -0800 | [diff] [blame] | 1 | # 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 | """ |
| 16 | Various globals used by atest. |
| 17 | """ |
| 18 | |
Jim Tang | 9da27dd | 2019-07-04 15:31:47 +0800 | [diff] [blame] | 19 | import os |
kellyhung | f93d21f | 2019-06-25 18:15:25 +0800 | [diff] [blame] | 20 | import re |
mikehoran | 642764c | 2018-10-17 12:29:14 -0700 | [diff] [blame] | 21 | |
Kevin Cheng | 9170ad7 | 2017-12-12 16:07:47 -0800 | [diff] [blame] | 22 | MODE = 'DEFAULT' |
| 23 | |
Kevin Cheng | 7edb0b9 | 2017-12-14 15:00:25 -0800 | [diff] [blame] | 24 | # Result server constants for atest_utils. |
Kevin Cheng | 9170ad7 | 2017-12-12 16:07:47 -0800 | [diff] [blame] | 25 | RESULT_SERVER = '' |
| 26 | RESULT_SERVER_ARGS = [] |
Kevin Cheng | 9dc6694 | 2018-01-04 12:11:12 -0800 | [diff] [blame] | 27 | RESULT_SERVER_TIMEOUT = 5 |
Dan Shi | 6daad63 | 2018-08-30 10:58:03 -0700 | [diff] [blame] | 28 | # Result arguments if tests are configured in TEST_MAPPING. |
| 29 | TEST_MAPPING_RESULT_SERVER_ARGS = [] |
Kevin Cheng | 7edb0b9 | 2017-12-14 15:00:25 -0800 | [diff] [blame] | 30 | |
easoncylee | dfbe02d | 2018-11-19 17:37:41 +0800 | [diff] [blame] | 31 | # Google service key for gts tests. |
| 32 | GTS_GOOGLE_SERVICE_ACCOUNT = '' |
| 33 | |
Kevin Cheng | 7edb0b9 | 2017-12-14 15:00:25 -0800 | [diff] [blame] | 34 | # Arg constants. |
| 35 | WAIT_FOR_DEBUGGER = 'WAIT_FOR_DEBUGGER' |
| 36 | DISABLE_INSTALL = 'DISABLE_INSTALL' |
mikehoran | 458b2b1 | 2018-02-28 16:07:13 -0800 | [diff] [blame] | 37 | DISABLE_TEARDOWN = 'DISABLE_TEARDOWN' |
Mike Ma | 0126b9b | 2018-01-11 19:11:16 -0800 | [diff] [blame] | 38 | PRE_PATCH_ITERATIONS = 'PRE_PATCH_ITERATIONS' |
| 39 | POST_PATCH_ITERATIONS = 'POST_PATCH_ITERATIONS' |
| 40 | PRE_PATCH_FOLDER = 'PRE_PATCH_FOLDER' |
| 41 | POST_PATCH_FOLDER = 'POST_PATCH_FOLDER' |
easoncylee | 8809be0 | 2018-03-27 12:28:07 +0800 | [diff] [blame] | 42 | SERIAL = 'SERIAL' |
yangbill | c614bdc | 2018-06-22 14:31:24 +0800 | [diff] [blame] | 43 | ALL_ABI = 'ALL_ABI' |
kellyhung | 0625d17 | 2018-06-21 16:40:27 +0800 | [diff] [blame] | 44 | HOST = 'HOST' |
Kevin Cheng | 21ea910 | 2018-02-22 10:52:42 -0800 | [diff] [blame] | 45 | CUSTOM_ARGS = 'CUSTOM_ARGS' |
yangbill | cc1a21f | 2018-12-12 20:03:12 +0800 | [diff] [blame] | 46 | DRY_RUN = 'DRY_RUN' |
easoncylee | c015163 | 2019-01-30 10:29:16 +0800 | [diff] [blame] | 47 | ANDROID_SERIAL = 'ANDROID_SERIAL' |
Julien Desprez | d516865 | 2019-02-06 14:49:01 -0800 | [diff] [blame] | 48 | INSTANT = 'INSTANT' |
yelinhsieh | 7be4a7f | 2019-08-15 14:27:22 +0800 | [diff] [blame] | 49 | USER_TYPE = 'USER_TYPE' |
Dan Shi | fa016d1 | 2018-02-02 00:37:19 -0800 | [diff] [blame] | 50 | |
| 51 | # Application exit codes. |
| 52 | EXIT_CODE_SUCCESS = 0 |
| 53 | EXIT_CODE_ENV_NOT_SETUP = 1 |
| 54 | EXIT_CODE_BUILD_FAILURE = 2 |
| 55 | EXIT_CODE_ERROR = 3 |
| 56 | EXIT_CODE_TEST_NOT_FOUND = 4 |
yangbill | 848a7d1 | 2018-09-04 19:12:08 +0800 | [diff] [blame] | 57 | EXIT_CODE_TEST_FAILURE = 5 |
yangbill | bac1dd6 | 2019-06-03 17:06:40 +0800 | [diff] [blame] | 58 | EXIT_CODE_VERIFY_FAILURE = 6 |
Kevin Cheng | 8b2c94c | 2017-12-18 14:43:26 -0800 | [diff] [blame] | 59 | |
kellyhung | bedaf53 | 2019-09-10 16:39:47 +0800 | [diff] [blame] | 60 | # Codes of specific events. These are exceptions that don't stop anything |
| 61 | # but sending metrics. |
| 62 | ACCESS_CACHE_FAILURE = 101 |
| 63 | ACCESS_HISTORY_FAILURE = 102 |
kellyhung | 7d244f8 | 2019-09-18 11:50:35 +0800 | [diff] [blame] | 64 | IMPORT_FAILURE = 103 |
Jim Tang | 9c6aa86 | 2019-10-07 15:45:07 +0800 | [diff] [blame] | 65 | MLOCATEDB_LOCKED = 104 |
kellyhung | bedaf53 | 2019-09-10 16:39:47 +0800 | [diff] [blame] | 66 | |
Kevin Cheng | 8b2c94c | 2017-12-18 14:43:26 -0800 | [diff] [blame] | 67 | # Test finder constants. |
| 68 | MODULE_CONFIG = 'AndroidTest.xml' |
nelsonli | e3f90de | 2018-06-22 14:59:39 +0800 | [diff] [blame] | 69 | MODULE_COMPATIBILITY_SUITES = 'compatibility_suites' |
Kevin Cheng | 5be930e | 2018-02-20 09:39:22 -0800 | [diff] [blame] | 70 | MODULE_NAME = 'module_name' |
| 71 | MODULE_PATH = 'path' |
| 72 | MODULE_CLASS = 'class' |
| 73 | MODULE_INSTALLED = 'installed' |
| 74 | MODULE_CLASS_ROBOLECTRIC = 'ROBOLECTRIC' |
kellyhung | 0625d17 | 2018-06-21 16:40:27 +0800 | [diff] [blame] | 75 | MODULE_CLASS_NATIVE_TESTS = 'NATIVE_TESTS' |
| 76 | MODULE_CLASS_JAVA_LIBRARIES = 'JAVA_LIBRARIES' |
nelsonli | 3cac134 | 2018-08-21 15:33:45 +0800 | [diff] [blame] | 77 | MODULE_TEST_CONFIG = 'test_config' |
Kevin Cheng | 8b2c94c | 2017-12-18 14:43:26 -0800 | [diff] [blame] | 78 | |
| 79 | # Env constants |
| 80 | ANDROID_BUILD_TOP = 'ANDROID_BUILD_TOP' |
| 81 | ANDROID_OUT = 'OUT' |
Kevin Cheng | e084eb0 | 2018-02-12 12:48:35 -0800 | [diff] [blame] | 82 | ANDROID_OUT_DIR = 'OUT_DIR' |
| 83 | ANDROID_HOST_OUT = 'ANDROID_HOST_OUT' |
yangbill | 1067e48 | 2019-01-29 15:57:54 +0800 | [diff] [blame] | 84 | ANDROID_PRODUCT_OUT = 'ANDROID_PRODUCT_OUT' |
Kevin Cheng | 8b2c94c | 2017-12-18 14:43:26 -0800 | [diff] [blame] | 85 | |
| 86 | # Test Info data keys |
Dan Shi | cdbda55 | 2018-05-18 23:31:33 -0700 | [diff] [blame] | 87 | # Value of include-filter option. |
Kevin Cheng | 8b2c94c | 2017-12-18 14:43:26 -0800 | [diff] [blame] | 88 | TI_FILTER = 'filter' |
| 89 | TI_REL_CONFIG = 'rel_config' |
kellyhung | 0625d17 | 2018-06-21 16:40:27 +0800 | [diff] [blame] | 90 | TI_MODULE_CLASS = 'module_class' |
Dan Shi | cdbda55 | 2018-05-18 23:31:33 -0700 | [diff] [blame] | 91 | # Value of module-arg option |
| 92 | TI_MODULE_ARG = 'module-arg' |
Kevin Cheng | 8b2c94c | 2017-12-18 14:43:26 -0800 | [diff] [blame] | 93 | |
| 94 | # Google TF |
| 95 | GTF_MODULE = 'google-tradefed' |
| 96 | GTF_TARGET = 'google-tradefed-core' |
Dan Shi | 7a8e1ad | 2018-04-12 11:01:07 -0700 | [diff] [blame] | 97 | |
Dan Shi | cdbda55 | 2018-05-18 23:31:33 -0700 | [diff] [blame] | 98 | # Test group for tests in TEST_MAPPING |
| 99 | TEST_GROUP_PRESUBMIT = 'presubmit' |
| 100 | TEST_GROUP_POSTSUBMIT = 'postsubmit' |
Dan Shi | e4e267f | 2018-06-01 11:31:57 -0700 | [diff] [blame] | 101 | TEST_GROUP_ALL = 'all' |
Dan Shi | 350e747 | 2018-06-19 12:25:32 -0700 | [diff] [blame] | 102 | # Key in TEST_MAPPING file for a list of imported TEST_MAPPING file |
| 103 | TEST_MAPPING_IMPORTS = 'imports' |
Dan Shi | df5210a | 2018-05-16 14:13:33 -0700 | [diff] [blame] | 104 | |
| 105 | # TradeFed command line args |
Julien Desprez | a2855e9 | 2018-11-30 18:24:58 +0000 | [diff] [blame] | 106 | TF_INCLUDE_FILTER_OPTION = 'include-filter' |
| 107 | TF_EXCLUDE_FILTER_OPTION = 'exclude-filter' |
Dan Shi | df5210a | 2018-05-16 14:13:33 -0700 | [diff] [blame] | 108 | TF_INCLUDE_FILTER = '--include-filter' |
Julien Desprez | a2855e9 | 2018-11-30 18:24:58 +0000 | [diff] [blame] | 109 | TF_EXCLUDE_FILTER = '--exclude-filter' |
Dan Shi | 0beebb4 | 2018-05-24 15:02:57 -0700 | [diff] [blame] | 110 | TF_ATEST_INCLUDE_FILTER = '--atest-include-filter' |
Dan Shi | cdbda55 | 2018-05-18 23:31:33 -0700 | [diff] [blame] | 111 | TF_ATEST_INCLUDE_FILTER_VALUE_FMT = '{test_name}:{test_filter}' |
| 112 | TF_MODULE_ARG = '--module-arg' |
| 113 | TF_MODULE_ARG_VALUE_FMT = '{test_name}:{option_name}:{option_value}' |
Julien Desprez | a2855e9 | 2018-11-30 18:24:58 +0000 | [diff] [blame] | 114 | TF_SUITE_FILTER_ARG_VALUE_FMT = '"{test_name} {option_value}"' |
easoncylee | e751895 | 2019-09-16 17:24:25 +0800 | [diff] [blame] | 115 | TF_SKIP_LOADING_CONFIG_JAR = '--skip-loading-config-jar' |
easoncylee | 2dd42a9 | 2018-04-26 15:49:56 +0800 | [diff] [blame] | 116 | |
easoncylee | 5f5cf03 | 2018-06-26 16:17:08 +0800 | [diff] [blame] | 117 | # Suite Plans |
| 118 | SUITE_PLANS = frozenset(['cts']) |
Jim Tang | 815b889 | 2018-07-11 12:57:30 +0800 | [diff] [blame] | 119 | |
| 120 | # Constants used for AtestArgParser |
| 121 | HELP_DESC = 'Build, install and run Android tests locally.' |
| 122 | BUILD_STEP = 'build' |
| 123 | INSTALL_STEP = 'install' |
| 124 | TEST_STEP = 'test' |
| 125 | ALL_STEPS = [BUILD_STEP, INSTALL_STEP, TEST_STEP] |
| 126 | REBUILD_MODULE_INFO_FLAG = '--rebuild-module-info' |
nelsonli | e3f90de | 2018-06-22 14:59:39 +0800 | [diff] [blame] | 127 | |
| 128 | # ANSI code shift for colorful print |
| 129 | BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8) |
kellyhung | 0625d17 | 2018-06-21 16:40:27 +0800 | [diff] [blame] | 130 | |
Jim Tang | d740fa5 | 2019-03-14 16:07:08 +0800 | [diff] [blame] | 131 | # Answers equivalent to YES! |
| 132 | AFFIRMATIVES = ['y', 'Y', 'yes', 'Yes', 'YES', ''] |
| 133 | LD_RANGE = 2 |
| 134 | |
| 135 | # Types of Levenshetine Distance Cost |
| 136 | COST_TYPO = (1, 1, 1) |
| 137 | COST_SEARCH = (8, 1, 5) |
| 138 | |
kellyhung | 0625d17 | 2018-06-21 16:40:27 +0800 | [diff] [blame] | 139 | # Value of TestInfo install_locations. |
| 140 | DEVICELESS_TEST = 'host' |
| 141 | DEVICE_TEST = 'device' |
| 142 | BOTH_TEST = 'both' |
kellyhung | d69de38 | 2018-08-07 18:32:58 +0800 | [diff] [blame] | 143 | |
mikehoran | ed5d7fe | 2018-10-05 14:24:18 -0700 | [diff] [blame] | 144 | # Metrics |
mikehoran | ed5d7fe | 2018-10-05 14:24:18 -0700 | [diff] [blame] | 145 | METRICS_URL = 'http://asuite-218222.appspot.com/atest/metrics' |
kellyhung | 792fbcf | 2018-11-19 16:25:50 +0800 | [diff] [blame] | 146 | EXTERNAL = 'EXTERNAL_RUN' |
| 147 | INTERNAL = 'INTERNAL_RUN' |
| 148 | INTERNAL_EMAIL = '@google.com' |
kellyhung | de9bd29 | 2019-05-21 19:41:28 +0800 | [diff] [blame] | 149 | INTERNAL_HOSTNAME = '.google.com' |
kellyhung | bf73711 | 2019-01-18 17:01:36 +0800 | [diff] [blame] | 150 | CONTENT_LICENSES_URL = 'https://source.android.com/setup/start/licenses' |
| 151 | CONTRIBUTOR_AGREEMENT_URL = { |
| 152 | 'INTERNAL': 'https://cla.developers.google.com/', |
| 153 | 'EXTERNAL': 'https://opensource.google.com/docs/cla/' |
| 154 | } |
| 155 | PRIVACY_POLICY_URL = 'https://policies.google.com/privacy' |
| 156 | TERMS_SERVICE_URL = 'https://policies.google.com/terms' |
kellyhung | 67f359d | 2019-04-01 11:22:39 +0800 | [diff] [blame] | 157 | TOOL_NAME = 'atest' |
easoncylee | 1cace87 | 2019-09-19 09:03:29 +0800 | [diff] [blame] | 158 | TF_PREPARATION = 'tf-preparation' |
mikehoran | ed5d7fe | 2018-10-05 14:24:18 -0700 | [diff] [blame] | 159 | |
kellyhung | 7d004bb | 2019-04-02 11:54:59 +0800 | [diff] [blame] | 160 | # Detect type for local_detect_event. |
| 161 | # Next expansion : DETECT_TYPE_XXX = 1 |
| 162 | DETECT_TYPE_BUG_DETECTED = 0 |
kellyhung | aafad9a | 2019-06-04 17:21:32 +0800 | [diff] [blame] | 163 | # 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. |
| 166 | UPPER_LIMIT = 100000 |
| 167 | TRIM_TO_SIZE = 50000 |
kellyhung | 7d004bb | 2019-04-02 11:54:59 +0800 | [diff] [blame] | 168 | |
kellyhung | d69de38 | 2018-08-07 18:32:58 +0800 | [diff] [blame] | 169 | # VTS plans |
| 170 | VTS_STAGING_PLAN = 'vts-staging-default' |
Simran Basi | 2cc996e | 2018-10-09 12:19:25 -0700 | [diff] [blame] | 171 | |
| 172 | # TreeHugger TEST_MAPPING SUITE_PLANS |
| 173 | TEST_MAPPING_SUITES = ['device-tests', 'general-tests'] |
yangbill | 22ed51a | 2018-12-04 16:48:24 +0800 | [diff] [blame] | 174 | |
| 175 | # VTS TF |
| 176 | VTS_TF_MODULE = 'vts-tradefed' |
yangbill | 3eaf284 | 2019-01-02 12:05:45 +0800 | [diff] [blame] | 177 | |
| 178 | # ATest TF |
| 179 | ATEST_TF_MODULE = 'atest-tradefed' |
yangbill | 4b618ed | 2019-07-23 16:03:38 +0800 | [diff] [blame] | 180 | |
| 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. |
| 184 | ATEST_BUILD_ENV = {'SOONG_COLLECT_JAVA_DEPS':'true'} |
Jim Tang | 9da27dd | 2019-07-04 15:31:47 +0800 | [diff] [blame] | 185 | |
Jim Tang | 139389a | 2019-09-27 14:48:30 +0800 | [diff] [blame] | 186 | # Atest index path and relative dirs/caches. |
Jim Tang | 9da27dd | 2019-07-04 15:31:47 +0800 | [diff] [blame] | 187 | INDEX_DIR = os.path.join(os.getenv(ANDROID_HOST_OUT, ''), 'indexes') |
| 188 | LOCATE_CACHE = os.path.join(INDEX_DIR, 'mlocate.db') |
| 189 | INT_INDEX = os.path.join(INDEX_DIR, 'integration.idx') |
| 190 | CLASS_INDEX = os.path.join(INDEX_DIR, 'classes.idx') |
| 191 | CC_CLASS_INDEX = os.path.join(INDEX_DIR, 'cc_classes.idx') |
| 192 | PACKAGE_INDEX = os.path.join(INDEX_DIR, 'packages.idx') |
| 193 | QCLASS_INDEX = os.path.join(INDEX_DIR, 'fqcn.idx') |
| 194 | MODULE_INDEX = os.path.join(INDEX_DIR, 'modules.idx') |
Jim Tang | 139389a | 2019-09-27 14:48:30 +0800 | [diff] [blame] | 195 | VERSION_FILE = os.path.join(os.path.dirname(__file__), 'VERSION') |
Jim Tang | 9da27dd | 2019-07-04 15:31:47 +0800 | [diff] [blame] | 196 | |
| 197 | # Regeular Expressions |
| 198 | CC_EXT_RE = re.compile(r'.*\.(cc|cpp)$') |
| 199 | JAVA_EXT_RE = re.compile(r'.*\.(java|kt)$') |
| 200 | # e.g. /path/to/ccfile.cc: TEST_F(test_name, method_name){ |
| 201 | CC_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 Tang | b669f28 | 2019-07-05 16:54:12 +0800 | [diff] [blame] | 204 | CC_GREP_RE = r'^[ ]*TEST(_P|_F)?[ ]*\([[:alnum:]].*,' |
Jim Tang | 9da27dd | 2019-07-04 15:31:47 +0800 | [diff] [blame] | 205 | # e.g. /path/to/Javafile.java:package com.android.settings.accessibility |
| 206 | # grab the path, Javafile(class) and com.android.settings.accessibility(package) |
| 207 | CLASS_OUTPUT_RE = re.compile(r'(?P<java_path>.*/(?P<class>[A-Z]\w+)\.\w+)[:].*') |
| 208 | QCLASS_OUTPUT_RE = re.compile(r'(?P<java_path>.*/(?P<class>[A-Z]\w+)\.\w+)' |
| 209 | r'[:]\s*package\s+(?P<package>[^(;|\s)]+)\s*') |
Jim Tang | 2759ea5 | 2019-08-13 00:18:17 +0800 | [diff] [blame] | 210 | PACKAGE_OUTPUT_RE = re.compile(r'(?P<java_dir>/.*/).*[.](java|kt)[:]\s*package\s+' |
Jim Tang | 9da27dd | 2019-07-04 15:31:47 +0800 | [diff] [blame] | 211 | r'(?P<package>[^(;|\s)]+)\s*') |