// Copyright 2020 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto3";

package test.custom_results.graphics;

option go_package = "go.chromium.org/chromiumos/infra/proto/go/test/custom_results/graphics";

import "google/protobuf/timestamp.proto";
import "test/custom_results/graphics/machine_id.proto";
import "test/custom_results/graphics/result_id.proto";
import "test/custom_results/graphics/software_config_id.proto";
import "test/custom_results/graphics/software_overrides_config.proto";
import "test/custom_results/graphics/trace_id.proto";

// Result of a single test, trace, or benchmark run.
// Next Tag: 19
message Result {
  // Global unique result identifier.
  ResultId id = 1;

  // When the result started and finished being collected.
  google.protobuf.Timestamp start_time = 2;
  google.protobuf.Timestamp end_time = 3;

  // Machine which generated the result.
  MachineId machine = 4;

  // Installed software at the time the result was collected.
  SoftwareConfigId software_config = 5;

  enum ExecutionEnvironment {
    UNKNOWN = 0;
    HOST = 1;
    TERMINA = 2;
    CROSTINI = 3;
    STEAM = 4;
    ARC = 5;
    ARCVM = 6;
    CROUTON = 7;
    CROSVM = 8;
  }
  ExecutionEnvironment execution_environment = 6;

  // Lab or user originating this result.
  // Format:
  // - lab/LABNAME
  // - user/USERNAME
  string invocation_source = 7;

  // Details on the invocation if it was generated as part of a test.
  // TODO(davidriley): Flesh these out better.
  // TODO(davidriley): Record test status and error messages.
  string test_id = 17;
  string test_name = 8;
  string test_job_id = 9;

  // Command line used invoke the test.
  string command_line = 10;

  // Thing being tested.
  string benchmark = 11;
  TraceId trace = 12;

  // TODO(davidriley): This unit could be made into a separate Message
  // a) This stanza is directly part of TraceResult with TraceResult repeated.
  // b) This stanze becomes a separate repeated Message within TraceResult.
  // c) This stanza becomes a separate Message with TraceResultId link to them.
  // Next Tag: 7
  message Metric {
    string name = 1;
    uint64 index = 2;
    double value = 3;
    string units = 4;
    bool larger_is_better = 5;
    bool externally_gathered = 6;
  }

  // fps, frames, time
  // usec for frame N
  // cpu/gpu utilization/frequency
  repeated Metric metrics = 13;

  // Identify the most interesting metric to show by default for a given result.
  string primary_metric_name = 14;

  // General non-numeric details collected about the environment or system
  // state.  eg Interesting environment variables, glxinfo info.
  // Next Tag: 4
  message Label {
    string name = 1;
    string value = 2;
    string grouping = 3;
  }
  repeated Label labels = 15;

  // Software that was explicitly overridden from the normal system software
  // for a given result.
  SoftwareOverridesConfig overrides = 18;
}

message ResultList { repeated Result value = 1; }
