blob: 0c0e1dc59e030bfac8a3107d935f6657b326a1bf [file] [log] [blame]
// Copyright 2025 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;
option go_package = "go.chromium.org/luci/resultdb/proto/v1;resultpb";
option java_package = "com.google.luci.resultdb.v1";
option java_multiple_files = true;
// Service to read test schema.
service Schemas {
// Reads information about the test result schema used on this ResultDB deployment.
rpc Get(GetSchemaRequest) returns (Schema) {};
}
message GetSchemaRequest {
// The resource name of the schema to retrieve.
// Currently there is only a single schema resource and its name is "schemas/global".
string name = 1;
}
// Schema contains information about the schema used for test results.
message Schema {
// The resource name of the schema.
// Format: "schemas/global".
string name = 1;
// The schemes available for use in test identifiers.
repeated Scheme schemes = 2;
}
// A scheme represents a kind of test type. For example, a JUnit tests
// or Google Tests. Schemes control how tests with that type are
// presented on the UI.
//
// Tests are associated with a type at the module level, via the module
// type field.
//
// Schemes are ResultDB deployment-level configuration.
//
// Next id: 6.
message Scheme {
// The identifier for the scheme, e.g. 'junit'.
//
// Limited to ^[a-z][a-z0-9]{0,19}$.
string id = 1;
// A human readable name for the scheme, describing the test type.
// For example, "JUnit" or "Web Tests".
//
// Please pay attention to capitalisation (should be similar to examples above)
// and avoid any punctuation.
string human_readable_name = 3;
// Configuration for a level of test hierarchy.
message Level {
// The human readable name for the hierarchy level, as it should appear on the UI.
// For example, "Package", "Class" or "Method".
//
// Please pay attention to capitalisation (should be similar to examples above)
// and avoid any punctuation.
//
// Required.
string human_readable_name = 1;
// The regexp that defines valid values for this field. The value here will be
// wrapped in ^...$. Validation will apply to all newly uploaded test results.
// Use RE2 syntax.
//
// If blank, all values are taken to be valid.
//
// Please take care changing this value, as uploads may start to fail.
string validation_regexp = 2;
}
// The coarse level in the test hierarchy. Optional.
//
// If it is set, this level is enabled and a value for this hierarchy level must be set
// for all test results using this scheme.
// If it is not set, a value for this hierarchy level must NOT be set for test results
// using this scheme.
//
// Enabling or disabling a hierarchy level after it has been created is not permitted unless
// no data has been uploaded for the scheme.
//
// If only one of coarse and fine hierarchy should be enabled, enable the fine hierarchy
// only.
Level coarse = 4;
// The fine level in the test hierarchy. Optional.
//
// If it is set, this level is enabled and a value for this hierarchy level must be set
// for all test results using this scheme.
// If it is not set, a value for this hierarchy level must NOT be set for test results
// using this scheme.
//
// Enabling or disabling a hierarchy level on a scheme after it is already being used
// will result in existing uploads breaking and break presentation of already uploaded
// data. Please use extreme caution if doing this; generally, it is better to define
// a new scheme instead.
Level fine = 5;
// The case level in the test hierarchy. This is the finest level. Required.
Level case = 6;
}