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/tradefederation/core/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}
124
125// A context to DebugInfo that allows to optionally specify some debugging context.
126message DebugInfoContext {
127  // Category of the action that was in progress during the failure
128  string action_in_progress = 1;
129
130  // A free-formed text that can help debugging the issue at hand.
131  string debug_help_message = 10;
132
133  // The fully-qualified name of the exception class associated with the error.
134  string error_type = 20;
135
136  // Error Identifiers
137  // The name identifying the error
138  string error_name = 30;
139  // The class that raised the error
140  string origin = 31;
141  // The error code associated with the error_name
142  int64 error_code = 32;
143}
144