blob: ffba94f8d44a2d6338700106f687f5e4d11cf236 [file] [log] [blame]
syntax = "proto3";
package cabe.proto;
option go_package = "go.skia.org/infra/cabe/go/proto";
import "google/api/annotations.proto";
import "cabe/proto/analysis.proto";
import "cabe/proto/spec.proto";
service Analysis {
// Get results of a performance experiment analysis.
rpc GetAnalysis(GetAnalysisRequest) returns (GetAnalysisResponse) {
option (google.api.http) = {
post: "/cabe.proto.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;
}