blob: fd30aac5d75ac65bb228053b884dabdadab4f592 [file] [log] [blame]
syntax = "proto3";
package results_feed;
import "google/protobuf/timestamp.proto";
// Documentation of the data stored in the dart_ci Firestore database.
// This data is used by result_feed to display and approve new test failures.
// This proto definition file is not actually used in any of the code.
// No generated protobuf code for Dart is created from this.
// This file is currently just documentation.
// Describes a changed result on a test, on one or more configurations,
// that occurs on builds that test the commits in a given blamelist.
// When a test result is reported on a configuration that agrees in
// name, result, and previous result with this record, and the blamelist
// of this test run overlaps the blamelist of this record, then the
// configuration is added to the list of configurations and the blamelist
// is intersected with the blamelist of this run.
message Result {
// Unique document ID created by Firestore for this document.
// Not a field in the document.
string id = 1;
string name = 2; // The full path of the test, as output by test.py.
string result = 3; // The new result of the test.
// The result of the test on builds immediately before these builds.
string previous_result = 4;
// The expected result of this test, given in the test source.
// Some tests are written to produce an error of a specific type.
// This is not the approval status of the test.
string expected = 5;
// The configurations that produced this changed result when tested.
repeated string configurations = 6;
// Commits to sdk/master are indexed consecutively in the table 'commits'.
int32 blamelist_start_index = 7;
int32 blamelist_end_index = 8; // Inclusive: this commit is in the blamelist.
// Optional: The index of a the commit that is responsible for these changes.
// Chosen by a user in the results feed UI.
int32 pinned_index = 10;
// If the result has been approved, or subsequently unapproved, by a comment,
// this field is present and has the appropriate boolean value.
// If this field is present, then there is a comment record containing this
// result's "id" field in its "results" repeated field.
bool approved = 13;
}
// Similar to a Result message, but representing a result of a try builder on the CQ.
// There is no blamelist, instead, a patchset on a Gerrit CL describes the build.
message TryResult {
// Unique document ID created by Firestore for this document.
string id = 1;
string name = 2; // The full path of the test, as output by test.py.
string result = 3; // The new result of the test.
// The result of the test on builds immediately before these builds.
string previous_result = 4;
// The expected result of this test, given in the test source.
// Some tests are written to produce an error of a specific type.
// This is not the approval status of the test.
string expected = 5;
// The configurations that produced this changed result when tested.
repeated string configurations = 6;
// Used in Result. We may want to merge the two types later.
reserved 7 to 10;
// The Gerrit CL number.
int32 review = 11;
int32 patchset = 12;
// If the try result has been approved, or subsequently unapproved, by a
// comment, this field is present and has the appropriate boolean value.
// If this field is present, then there is a comment record containing this
// try result's "id" field in its "try_results" repeated field.
bool approved = 13;
}
// Represents a single build of a CI builder
message Build {
// The document ID is the concatenation of builder, a colon ':', and index.
string id = 1;
int32 build_number = 2; // The build number from buildbucket.
string builder = 3;
int32 index = 4; // The index of the commit this build built.
}
message Commit {
// The hash of a commit in the dart-sdk repo.
// Stored as the document ID, not a field.
string id = 1;
// The position of the commit in the sdk master branch, only considering
// the first parent of each commit, a linear chain.
int32 index = 2;
string author = 3; // The author of the commit, as an email address.
google.protobuf.Timestamp created = 4;
string title = 5; // The first line of the commit message.
}
// A map from configuration names to builder names.
// Currently some configurations are on multiple builders, so unstable. Fix.
message Configuration {
string id = 1; // The name of the configuration. Stored as the document ID.
string builder = 2;
}
// A Gerrit review. Only the information needed for our display of try results.
message Review {
string id = 1; // The Gerrit review number (CL number)
string subject = 2; // The first line of the commit message.
message Patchset {
string id = 1; // The patchset number.
string description = 2; // The description of this patchset.
// The string giving the type of patchset, a rebase, changed commit message,
// or a new upload, which is called 'REWORK'.
string kind = 3;
int32 number = 4; // Identical to id.
// The number of the first patchset that differs from this patchset only by
// rebases and commit message changes.
int32 patchset_group = 5;
}
repeated Patchset patchsets
}
message Comment {
// Unique document ID created by Firestore for this document.
string id = 1;
// The email address of the user who made this comment/approval.
string user = 2;
// The time that the comment/approval was entered
google.protobuf.Timestamp created = 3;
// The text of the comment (optional if link is present).
string comment = 4;
// The URL of a link to an issue (optional).
string link = 5;
// If approved is true, this comment approves the linked tests
// If approved is false, it unapproves them, removing earlier approvals
// If the field is missing, it does not change the current approval status
bool approved = 6;
// The results that this comment approves or disapproves.
// The field values are the document IDs of the Result or TryResult records
// If the comment is just a reply, and does not approve anything, these
// fields will be missing.
repeated string results = 7;
repeated string try_results = 8;
// The base comment, if this comment is a reply to a previous comment.
// All comments link to the beginning of their reply chain, not to the
// previous comment, and are only ordered by timestamp.
string base_comment = 9;
// These are copies of the fields in the results this comment refers to.
// These are the fields from a Result message
int32 blamelist_start_index = 10;
int32 blamelist_end_index = 11;
int32 pinned_index = 12;
// These are the fields from a TryResult message
int32 review = 13;
int32 patchset = 14;
}