blob: 5c00e60ddc30a8a80320b07d6ac8f64326a9dc09 [file] [log] [blame]
syntax = "proto3";
package cabe.v1;
option go_package = "go.skia.org/infra/cabe/go/proto";
import "google/api/annotations.proto";
import "cabe/proto/v1/analysis.proto";
import "cabe/proto/v1/spec.proto";
service Analysis {
// Get results of a performance experiment analysis.
rpc GetAnalysis(GetAnalysisRequest) returns (GetAnalysisResponse) {
option (google.api.http) = {
post: "/cabe.v1.Analysis/GetAnalysis"
};
}
}
message GetAnalysisRequest {
string pinpoint_job_id = 1;
// experiment_spec defines the experiment arms as well as which specific
// benchmarks and workloads it should expect to find in task result output
// files. If reality doesn't match the spec, CABE returns an error with
// some information about what didn't match the provided ExperimentSpec.
//
// If experiment_spec isn't set, CABE will infer one based on heuristics*
// and data available from Swarming and RBE-CAS at the time of the request.
// Note that this is best-effort and not guaranteed to do what the caller
// expects. If you have specific benchmarks and workloads that need to be
// either analyzed or cause errors if they are missing, you should specify an
// explicit experiment_spec value.
//
// *See infer_specs.go and infer_specs_test.go for implementation details.
ExperimentSpec experiment_spec = 2;
}
message GetAnalysisResponse {
repeated AnalysisResult results = 1;
// If an experiment_spec was not included in the GetAnalysisRequest,
// cabe will apply some best-effort heuristics to infer an experiment
// specification based on swarming task metadata and contents of task
// output json files. The GetAnalysis method will attach whatever
// it was able to infer the experiment to this field.
ExperimentSpec inferred_experiment_spec = 2;
// Extra information about the analysis and/or the process of generating
// the results.
AnalysisMetadata metadata = 3;
}