blob: ec740dc756cbe8a0875661485dbdefd731c75baf [file] [log] [blame]
// Copyright 2020 The LUCI Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package luci.resultdb.v1;
import "google/protobuf/struct.proto";
import "google/api/field_behavior.proto";
import "go.chromium.org/luci/resultdb/proto/v1/common.proto";
option go_package = "go.chromium.org/luci/resultdb/proto/v1;resultpb";
// Information about a test metadata.
message TestMetadataDetail {
// Can be used to refer to a test metadata, e.g. in ResultDB.QueryTestMetadata
// RPC.
// Format:
// "projects/{PROJECT}/refs/{REF_HASH}/tests/{URL_ESCAPED_TEST_ID}".
// where URL_ESCAPED_TEST_ID is test_id escaped with
// https://golang.org/pkg/net/url/#PathEscape. See also https://aip.dev/122.
//
// Output only.
string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// The LUCI project.
string project = 2;
// A unique identifier of a test in a LUCI project.
// Refer to TestResult.test_id for details.
string test_id = 3;
// Hexadecimal encoded hash string of the source_ref.
// A given source_ref always hashes to the same ref_hash value.
string ref_hash = 12;
// A reference in the source control system where the test metadata comes from.
SourceRef source_ref = 4;
// Test metadata content.
TestMetadata testMetadata = 5;
}
// Information about a test.
message TestMetadata {
// The original test name.
string name = 1;
// Where the test is defined, e.g. the file name.
// location.repo MUST be specified.
TestLocation location = 2;
// The issue tracker component associated with the test, if any.
// Bugs related to the test may be filed here.
BugComponent bug_component = 3;
// Identifies the schema of the JSON object in the properties field.
// Use the fully-qualified name of the source protocol buffer.
// eg. chromiumos.test.api.TestCaseInfo
// ResultDB will *not* validate the properties field with respect to this
// schema. Downstream systems may however use this field to inform how the
// properties field is interpreted.
string properties_schema = 4;
// Arbitrary JSON object that contains structured, domain-specific properties
// of the test.
//
// The serialized size must be <= 4096 bytes.
//
// If this field is specified, properties_schema must also be specified.
google.protobuf.Struct properties = 5;
}
// Location of the test definition.
message TestLocation {
// Gitiles URL as the identifier for a repo.
// Format for Gitiles URL: https://<host>/<project>
// For example "https://chromium.googlesource.com/chromium/src"
// Must not end with ".git".
// SHOULD be specified.
string repo = 1;
// Name of the file where the test is defined.
// For files in a repository, must start with "//"
// Example: "//components/payments/core/payment_request_data_util_unittest.cc"
// Max length: 512.
// MUST not use backslashes.
// Required.
string file_name = 2;
// One-based line number where the test is defined.
int32 line = 3;
}
// Represents a component in an issue tracker. A component is
// a container for issues.
message BugComponent {
oneof system {
// The Google Issue Tracker component.
IssueTrackerComponent issue_tracker = 1;
// The monorail component.
MonorailComponent monorail = 2;
}
}
// A component in Google Issue Tracker, sometimes known as Buganizer,
// available at https://issuetracker.google.com.
message IssueTrackerComponent {
// The Google Issue Tracker component ID.
int64 component_id = 1;
}
// A component in monorail issue tracker, available at
// https://bugs.chromium.org.
message MonorailComponent {
// The monorail project name.
string project = 1;
// The monorail component value. E.g. "Blink>Accessibility".
string value = 2;
}