blob: e88e2c0723987d19e61b98649cf941aca4c489ae [file] [log] [blame]
syntax = "proto3";
option go_package = "github.com/GoogleCloudPlatform/testgrid/pb/custom_evaluator";
import "pb/test_status/test_status.proto";
// A configuration sub-object used to do custom evaluation of test results.
// A collection of Rule objects. Used to define many rules.
message RuleSet { repeated Rule rules = 1; }
// A single rule that describes how to evaluate a test_cases_pb2.TestResult
message Rule {
// Multiple comparisons to run against a result. EVERY TestResultComparison
// has to succeed for this Rule to succeed.
repeated TestResultComparison test_result_comparisons = 1;
// Required: The TestStatus to return if the comparison succeeds.
TestStatus computed_status = 3;
}
// Describes how to get information the TestResult proto and how to compare the
// value against the comparison value.
message TestResultComparison {
// Required: This is the comparison that will be used as
Comparison comparison = 1;
oneof test_result_info {
// The name of the property to evaluate.
// Properties are usually strings, so a string comparison is assumed and
// required.
string property_key = 2;
// This will find the scalar field with the given name within the TestResult
// proto. The value of that field will be used to evaluate.
//
// Accepted junit values for junit results are:
// name: name of the test case
// error_count: 1 if the test case has an error message
// failure_count: 1 if the test case has a failure message
//
// NOTE: Only supported for string and numerical values.
string test_result_field = 3;
// This will find the field nested within the first error of the TestResult
// proto. The value of that field will be used to evaluate.
//
// Accepted values for junit results are:
// exception_type: the failure and/or error message.
//
// NOTE: Only supported for string and numerical values
string test_result_error_field = 4;
}
}
// The method of comparison used for evaluation. Describes how to compare two
// values.
message Comparison {
enum Operator {
// Unknown. May assume OP_EQ for legacy purposes, but should warn.
OP_UNKNOWN = 0;
// Equals operator.
OP_EQ = 1;
// Not equals operator.
OP_NE = 2;
// Comparison value less than TestResult's value
OP_LT = 3;
// Comparison value less than or equal TestResult's value
OP_LE = 4;
// Comparison value greater than TestResult's value
OP_GT = 5;
// Comparison value greater than or equal TestResult's value
OP_GE = 6;
// Regex match of Comparison.value string with the TestResult's evaluation
// value string.
OP_REGEX = 7;
// Checks to see if the evaluation value string starts with the
// Comparison.value string
OP_STARTS_WITH = 8;
// Checks to see if the evaluation value string is contained within the
// Comparison.value string
OP_CONTAINS = 9;
}
// Required: Defines how to compare two attributes.
// When the TestResult value is numerical, numerical_value will be used to
// compare. When the TestResult value is a string, string_value will be used.
Operator op = 1;
oneof comparison_value {
// For operations EQ, NE, REGEX, STARTS_WITH, CONTAINS
string string_value = 2;
// For operations EQ, NE, LT, LE, GT, GE
double numerical_value = 3;
}
}