blob: 9118f79368e9c9261f709884dd468c2c5c844f76 [file] [log] [blame]
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
syntax = "proto2";
package benchmark;
// A Suite requests that some benchmarks should be run.
message Suite {
repeated Request requests = 1;
}
// A Request asks for samples for one benchmark.
message Request {
// The id of the benchmark to run.
optional BenchmarkID id = 1;
// The parameters to pass to the benchmark.
optional Params params = 2;
// The number of samples to collect.
optional int32 samples = 3;
// The duration of each sample in milliseconds.
optional int32 duration = 4;
}
enum BenchmarkID {
READ_INT32_FIELDS_JSON = 1;
READ_INT32_REPEATED_JSON = 2;
READ_INT64_FIELDS_JSON = 3;
READ_INT64_REPEATED_JSON = 4;
READ_STRING_FIELDS_JSON = 5;
READ_STRING_REPEATED_JSON = 6;
GET_STRINGS = 20;
SET_STRINGS = 21;
HAS_STRINGS = 22;
}
// Parameters to a particular benchmark.
// (See the class for the ones it actually uses.)
message Params {
// The number of (leaf) messages to use.
optional int32 message_count = 1;
// The number of int32 fields to set in each leaf.
optional int32 int32_field_count = 2;
// For repeated int32 fields, the number of values each should have.
optional int32 int32_repeat_count = 3;
// The number of int64 fields to set in each leaf.
optional int32 int64_field_count = 4;
// For repeated int64 fields, the number of values each should have.
optional int32 int64_repeat_count = 5;
// The number of string fields to set in each leaf.
optional int32 string_field_count = 6;
// For repeated string fields, the number of values each should have.
optional int32 string_repeat_count = 7;
// The size of the strings used in the benchmark.
optional int32 string_size = 8;
// An initial string value for filling the grid.
optional string string_value = 9;
}
// A Report records what is happening while a suite is being run.
message Report {
// status code.
optional Status status = 1;
// Top-level summary of what is happening.
// (May provide an error if there are no responses).
optional string message = 2;
// Describes the experimental setup.
optional Env env = 3;
// The result of each request.
repeated Response responses = 4;
}
enum Status {
RUNNING = 1;
DONE = 2;
FAILED = 3;
}
// An Env describes the environment in which the benchmark ran.
message Env {
// The script that was run, relative to "benchmarks" directory (VM only).
optional string script = 1;
// The path to the HTML page. (Browser tests only.)
optional string page = 2;
// The platform the benchmark was run on.
optional Platform platform = 10;
// The Dart package versions being exercised.
optional Packages packages = 11;
}
// A Platform describes the hardware, OS, and perhaps browser.
message Platform {
// values we can get from dart:io Platform
optional string hostname = 1;
optional OSType os_type = 2;
optional string dart_version = 3;
// values we can get from dart:html Navigator
optional string user_agent = 10;
// values we can get on any platform
optional bool checked_mode = 20;
optional bool dart_VM = 21;
}
enum OSType {
LINUX = 1;
MAC = 2;
WINDOWS = 3;
ANDROID = 4;
}
// Packages contains the Dart packages used.
message Packages {
// The dart-protoc-plugin version (from pubspec.yaml)
optional string version = 1;
// Package versions from pubspec.lock
repeated PackageVersion packages = 2;
}
// One entry in pubspec.lock, describing a Dart package.
message PackageVersion {
optional string name = 1;
optional string source = 2;
optional string version = 3;
optional string path = 4; // if set, this is a path dependency
}
// The result of running one Request.
message Response {
optional Request request = 1;
repeated Sample samples = 2;
}
// The output of running the benchmark in a loop.
message Sample {
// The wall-clock duration of the entire loop in microseconds.
optional int32 duration = 1;
// The number of times the loop iterated.
optional int32 loop_count = 2;
// Various other counters.
optional Counts counts = 3;
}
// Various counts measured for one sample in a benchmark run.
message Counts {
// The number of times an int32 was read during one sample.
optional int32 int32Reads = 1;
// The number of times an int64 was read during one sample.
optional int32 int64Reads = 2;
// The number of strings read during a sample.
optional int32 stringReads = 4;
// The number of strings written during a sample.
optional int32 stringWrites = 5;
}