1/* 2 * Copyright (C) 2018 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 */ 16syntax = "proto3"; 17 18import "google/protobuf/any.proto"; 19import "google/protobuf/timestamp.proto"; 20import "tools/asuite/atest/tf_proto/metric_measurement.proto"; 21 22option java_package = "com.android.tradefed.result.proto"; 23option java_outer_classname = "TestRecordProto"; 24 25package android_test_record; 26 27// A record containing the status, logs, and other information associated with a 28// particular test execution. 29message TestRecord { 30 // The UUID of this TestRecord. 31 string test_record_id = 1; 32 33 // The UUID of this TestRecord's parent. Unset if this is a top-level record. 34 string parent_test_record_id = 2; 35 36 // References to any finer-grained TestRecords that were generated as part of 37 // this test. 38 repeated ChildReference children = 3; 39 40 // The number of children this TestRecord was expected to have. Unset if not 41 // known in advance. 42 int64 num_expected_children = 4; 43 44 // The result status (Pass, Fail, etc) of this test unit. 45 TestStatus status = 5; 46 47 // Extra debugging information. 48 DebugInfo debug_info = 6; 49 50 // The time at which this test started executing. 51 google.protobuf.Timestamp start_time = 7; 52 53 // The time at which this test finished executing. 54 google.protobuf.Timestamp end_time = 8; 55 56 // Any artifact files associated with this test. 57 map<string, google.protobuf.Any> artifacts = 9; 58 59 // Any metrics or measurements associated with this test. 60 map<string, tradefed.metric.Metric> metrics = 10; 61 62 // Metadata describing the test that was run. 63 google.protobuf.Any description = 11; 64 65 // The attempt number of a target if the target ran several times. First 66 // attempt is 0 (Default value). 67 int64 attempt_id = 12; 68} 69 70// A reference to a finer-grained TestRecord. 71message ChildReference { 72 oneof reference { 73 // The UUID of the TestRecord. 74 string test_record_id = 1; 75 76 // An inlined TestRecord. 77 TestRecord inline_test_record = 2; 78 } 79} 80 81// The overall pass / fail status for a particular TestRecord. 82enum TestStatus { 83 UNKNOWN = 0; 84 PASS = 1; 85 FAIL = 2; 86 IGNORED = 3; 87 ASSUMPTION_FAILURE = 4; 88} 89 90// Associated debugging information to accompany a TestStatus. 91message DebugInfo { 92 // An error message. 93 string error_message = 1; 94 95 // A stacktrace. 96 string trace = 2; 97 98 // A more detailed failure status description. 99 FailureStatus failure_status = 3; 100 101 // Optional context to the failure 102 DebugInfoContext debug_info_context = 4; 103} 104 105// A Fail TestStatus can be associated with a more granular failure status that helps understanding 106// the context. 107enum FailureStatus { 108 UNSET = 0; 109 // The test in progress was the reason for the failure. 110 TEST_FAILURE = 1; 111 // A timeout condition on the operation in progress occurred. 112 TIMED_OUT = 2; 113 // The test in progress was cancelled. 114 CANCELLED = 3; 115 // A failure attributed to something not functioning properly. 116 INFRA_FAILURE = 10; 117 // System under test crashed and caused the test to fail. 118 SYSTEM_UNDER_TEST_CRASHED = 20; 119 // The test was expected to run but did not. 120 NOT_EXECUTED = 30; 121 // System under test became unavailable and never came back available again. 122 LOST_SYSTEM_UNDER_TEST = 35; 123 // Represent an error caused by an unmet dependency that the current infra 124 // depends on. For example: Unfound resources, Device error, Hardware issue 125 // (lab host, device wear), Underlying tools 126 DEPENDENCY_ISSUE = 40; 127 // Represent an error caused by the input from the end user. For example: 128 // Unexpected option combination, Configuration error, Bad flags 129 CUSTOMER_ISSUE = 41; 130} 131 132// A context to DebugInfo that allows to optionally specify some debugging context. 133message DebugInfoContext { 134 // Category of the action that was in progress during the failure 135 string action_in_progress = 1; 136 137 // A free-formed text that can help debugging the issue at hand. 138 string debug_help_message = 10; 139 140 // The fully-qualified name of the exception class associated with the error. 141 string error_type = 20; 142 143 // Error Identifiers 144 // The name identifying the error 145 string error_name = 30; 146 // The class that raised the error 147 string origin = 31; 148 // The error code associated with the error_name 149 int64 error_code = 32; 150} 151