• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.tradefed.result.error;
17 
18 import com.android.tradefed.result.proto.TestRecordProto.FailureStatus;
19 
20 import javax.annotation.Nonnull;
21 
22 /** Error Identifiers from Trade Federation infra, and dependent infra (like Build infra). */
23 public enum InfraErrorIdentifier implements ErrorIdentifier {
24 
25     // ********************************************************************************************
26     // Infra: 500_001 ~ 510_000
27     // ********************************************************************************************
28     // 500_001 - 500_500: General errors
29     ARTIFACT_NOT_FOUND(500_001, FailureStatus.DEPENDENCY_ISSUE),
30     FAIL_TO_CREATE_FILE(500_002, FailureStatus.INFRA_FAILURE),
31     INVOCATION_CANCELLED(500_003, FailureStatus.CANCELLED),
32     CODE_COVERAGE_ERROR(500_004, FailureStatus.INFRA_FAILURE),
33     MODULE_SETUP_RUNTIME_EXCEPTION(500_005, FailureStatus.CUSTOMER_ISSUE),
34     CONFIGURED_ARTIFACT_NOT_FOUND(500_006, FailureStatus.CUSTOMER_ISSUE),
35     INVOCATION_TIMEOUT(500_007, FailureStatus.TIMED_OUT),
36     OPTION_CONFIGURATION_ERROR(500_008, FailureStatus.CUSTOMER_ISSUE),
37     RUNNER_ALLOCATION_ERROR(500_009, FailureStatus.INFRA_FAILURE),
38     SCHEDULER_ALLOCATION_ERROR(500_010, FailureStatus.CUSTOMER_ISSUE),
39     HOST_BINARY_FAILURE(500_011, FailureStatus.DEPENDENCY_ISSUE),
40     MISMATCHED_BUILD_DEVICE(500_012, FailureStatus.CUSTOMER_ISSUE),
41     LAB_HOST_FILESYSTEM_ERROR(500_013, FailureStatus.INFRA_FAILURE),
42     TRADEFED_SHUTTING_DOWN(500_014, FailureStatus.INFRA_FAILURE),
43     LAB_HOST_FILESYSTEM_FULL(500_015, FailureStatus.INFRA_FAILURE),
44     TRADEFED_SKIPPED_TESTS_DURING_SHUTDOWN(500_016, FailureStatus.CANCELLED),
45     SCHEDULING_ERROR(500_017, FailureStatus.INFRA_FAILURE),
46     EVENT_PROCESSING_TIMEOUT(500_018, FailureStatus.INFRA_FAILURE),
47     OUT_OF_MEMORY_ERROR(500_019, FailureStatus.INFRA_FAILURE),
48     // Use a catch-all error during bring up of the new feature
49     INCREMENTAL_FLASHING_ERROR(500_020, FailureStatus.INFRA_FAILURE),
50     BLOCK_COMPARE_ERROR(500_021, FailureStatus.INFRA_FAILURE),
51     FLASHSTATION_CACHE_PREPARATION_ERROR(500_022, FailureStatus.INFRA_FAILURE),
52     FLASHSTATION_SETUP_ERROR(500_023, FailureStatus.INFRA_FAILURE),
53 
54     // 500_400 - 500_500: General errors - subprocess related
55     INTERRUPTED_DURING_SUBPROCESS_SHUTDOWN(500_401, FailureStatus.INFRA_FAILURE),
56 
57     // 500_501 - 501_000: Build, Artifacts download related errors
58     ARTIFACT_REMOTE_PATH_NULL(500_501, FailureStatus.INFRA_FAILURE),
59     ARTIFACT_UNSUPPORTED_PATH(500_502, FailureStatus.INFRA_FAILURE),
60     ARTIFACT_DOWNLOAD_ERROR(500_503, FailureStatus.DEPENDENCY_ISSUE),
61     GCS_ERROR(500_504, FailureStatus.DEPENDENCY_ISSUE),
62     ANDROID_PARTNER_SERVER_ERROR(500_505, FailureStatus.DEPENDENCY_ISSUE),
63     ARTIFACT_INVALID(500_506, FailureStatus.DEPENDENCY_ISSUE),
64     SANDBOX_SETUP_ERROR(500_507, FailureStatus.INFRA_FAILURE),
65 
66     // 501_001 - 501_500: environment issues: For example: lab wifi
67     WIFI_FAILED_CONNECT(501_001, FailureStatus.DEPENDENCY_ISSUE),
68     GOOGLE_ACCOUNT_SETUP_FAILED(501_002, FailureStatus.DEPENDENCY_ISSUE),
69     NO_WIFI(501_003, FailureStatus.DEPENDENCY_ISSUE),
70     NO_DISK_SPACE(501_004, FailureStatus.DEPENDENCY_ISSUE),
71     VIRTUAL_WIFI_FAILED_CONNECT(501_005, FailureStatus.DEPENDENCY_ISSUE),
72 
73     // 502_000 - 502_100: Test issues detected by infra
74     EXPECTED_TESTS_MISMATCH(502_000, FailureStatus.TEST_FAILURE),
75 
76     // 505_000 - 505_250: Acloud errors
77     // The error codes should be aligned with errors defined in
78     // tools/acloud/internal/constants.py
79     NO_ACLOUD_REPORT(505_000, FailureStatus.DEPENDENCY_ISSUE),
80     ACLOUD_UNDETERMINED(505_001, FailureStatus.DEPENDENCY_ISSUE),
81     ACLOUD_TIMED_OUT(505_002, FailureStatus.DEPENDENCY_ISSUE),
82     ACLOUD_UNRECOGNIZED_ERROR_TYPE(505_003, FailureStatus.DEPENDENCY_ISSUE),
83     ACLOUD_INIT_ERROR(505_004, FailureStatus.DEPENDENCY_ISSUE),
84     ACLOUD_CREATE_GCE_ERROR(505_005, FailureStatus.DEPENDENCY_ISSUE),
85     ACLOUD_DOWNLOAD_ARTIFACT_ERROR(505_006, FailureStatus.DEPENDENCY_ISSUE),
86     ACLOUD_BOOT_UP_ERROR(505_007, FailureStatus.LOST_SYSTEM_UNDER_TEST),
87     GCE_QUOTA_ERROR(505_008, FailureStatus.DEPENDENCY_ISSUE),
88     ACLOUD_SSH_CONNECT_ERROR(505_009, FailureStatus.DEPENDENCY_ISSUE),
89     ACLOUD_OXYGEN_LEASE_ERROR(505_010, FailureStatus.DEPENDENCY_ISSUE),
90     ACLOUD_OXYGEN_RELEASE_ERROR(505_011, FailureStatus.DEPENDENCY_ISSUE),
91     OXYGEN_DEVICE_LAUNCHER_FAILURE(505_012, FailureStatus.LOST_SYSTEM_UNDER_TEST),
92     OXYGEN_SERVER_SHUTTING_DOWN(505_013, FailureStatus.DEPENDENCY_ISSUE),
93     OXYGEN_BAD_GATEWAY_ERROR(505_014, FailureStatus.DEPENDENCY_ISSUE),
94     OXYGEN_REQUEST_TIMEOUT(505_015, FailureStatus.DEPENDENCY_ISSUE),
95     OXYGEN_RESOURCE_EXHAUSTED(505_016, FailureStatus.DEPENDENCY_ISSUE),
96     OXYGEN_SERVER_CONNECTION_FAILURE(505_017, FailureStatus.DEPENDENCY_ISSUE),
97     OXYGEN_CLIENT_BINARY_TIMEOUT(505_018, FailureStatus.INFRA_FAILURE),
98     OXYGEN_CLIENT_BINARY_ERROR(505_019, FailureStatus.INFRA_FAILURE),
99     OXYGEN_CLIENT_LEASE_ERROR(505_020, FailureStatus.INFRA_FAILURE),
100     OXYGEN_NOT_ENOUGH_RESOURCE(505_021, FailureStatus.INFRA_FAILURE),
101     OXYGEN_DEVICE_LAUNCHER_TIMEOUT(505_022, FailureStatus.LOST_SYSTEM_UNDER_TEST),
102     OXYGEN_SERVER_LB_CONNECTION_ERROR(505_023, FailureStatus.INFRA_FAILURE),
103     ACLOUD_INVALID_SERVICE_ACCOUNT_KEY(505_024, FailureStatus.DEPENDENCY_ISSUE),
104     ACLOUD_QUOTA_EXCEED_GPU(505_025, FailureStatus.DEPENDENCY_ISSUE),
105 
106     // 505_251 - 505_300: Configuration errors
107     INTERNAL_CONFIG_ERROR(505_251, FailureStatus.INFRA_FAILURE),
108     CLASS_NOT_FOUND(505_252, FailureStatus.CUSTOMER_ISSUE),
109     CONFIGURATION_NOT_FOUND(505_253, FailureStatus.CUSTOMER_ISSUE),
110     UNEXPECTED_DEVICE_CONFIGURED(505_254, FailureStatus.CUSTOMER_ISSUE),
111     KEYSTORE_CONFIG_ERROR(505_255, FailureStatus.DEPENDENCY_ISSUE),
112     TEST_MAPPING_PATH_COLLISION(505_256, FailureStatus.DEPENDENCY_ISSUE),
113     TEST_MAPPING_FILE_FORMAT_ISSUE(505_257, FailureStatus.CUSTOMER_ISSUE),
114     TEST_MAPPING_FILE_NOT_EXIST(505_258, FailureStatus.CUSTOMER_ISSUE),
115 
116     // 505_301 - 505_400: Cuttlefish launch failure
117     // Cuttlefish boot failure signature: bluetooth_failed
118     CUTTLEFISH_LAUNCH_FAILURE_BLUETOOTH(505_301, FailureStatus.DEPENDENCY_ISSUE),
119     // Cuttlefish boot failure signature: fetch_cvd_failure_resolve_host
120     CUTTLEFISH_LAUNCH_FAILURE_CVD_RESOLVE_HOST(505_302, FailureStatus.DEPENDENCY_ISSUE),
121     // Cuttlefish boot failure signature: fetch_cvd_failure_connect_server
122     CUTTLEFISH_LAUNCH_FAILURE_CVD_SERVER_CONNECTION(505_303, FailureStatus.DEPENDENCY_ISSUE),
123     // Cuttlefish boot failure signature: launch_cvd_port_collision
124     CUTTLEFISH_LAUNCH_FAILURE_CVD_PORT_COLLISION(505_304, FailureStatus.DEPENDENCY_ISSUE),
125     // Cuttlefish boot failure signature: fetch_cvd_failure_general
126     CUTTLEFISH_LAUNCH_FAILURE_CVD_FETCH(505_305, FailureStatus.DEPENDENCY_ISSUE),
127     // Cuttlefish boot failure signature: cf_webrtc_crash
128     CUTTLEFISH_LAUNCH_FAILURE_WEBRTC_CRASH(505_306, FailureStatus.DEPENDENCY_ISSUE),
129     CUTTLEFISH_LAUNCH_FAILURE_OPENWRT(505_307, FailureStatus.DEPENDENCY_ISSUE),
130     CUTTLEFISH_LAUNCH_FAILURE_CROSVM(505_308, FailureStatus.DEPENDENCY_ISSUE),
131     CUTTLEFISH_LAUNCH_FAILURE_NGINX(505_309, FailureStatus.DEPENDENCY_ISSUE),
132     CUTTLEFISH_LAUNCH_FAILURE_CVD_FETCH_HANG(505_310, FailureStatus.DEPENDENCY_ISSUE),
133     CUTTLEFISH_LAUNCH_FAILURE_RUN_CVD_MISSING(505_311, FailureStatus.DEPENDENCY_ISSUE),
134 
135     UNDETERMINED(510_000, FailureStatus.UNSET);
136 
137     private final long code;
138     private final @Nonnull FailureStatus status;
139 
InfraErrorIdentifier(int code, FailureStatus status)140     InfraErrorIdentifier(int code, FailureStatus status) {
141         this.code = code;
142         this.status = (status == null ? FailureStatus.UNSET : status);
143     }
144 
145     @Override
code()146     public long code() {
147         return code;
148     }
149 
150     @Override
status()151     public @Nonnull FailureStatus status() {
152         return status;
153     }
154 }
155