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

syntax = "proto2";

package chromiumos.test.artifact;

option go_package = "go.chromium.org/chromiumos/config/go/test/artifact";

message Job {
  message KeyVal {
    required string name = 1;
    required string value = 2;
  }

  message Kernel {
    required string base = 1;
    required string kernel_hash = 2;
  }

  message Iteration {
    required int64 index = 1;
    repeated KeyVal attr_keyval = 2;
    repeated KeyVal perf_keyval = 3;
  }

  message Test {
    required string subdir = 1;
    required string testname = 2;
    required string status = 3;
    required string reason = 4;
    required Kernel kernel = 5;
    required string machine = 6;
    required int64 started_time = 7;
    required int64 finished_time = 8;
    repeated Iteration iterations = 9;
    repeated KeyVal attributes = 10;
    repeated string labels = 11;
    // Could be none. Don't depend it as the key for a test.
    optional int64 test_idx = 12;
  }

  required string dir = 1;
  repeated Test tests = 2;
  required string user = 3;
  required string label = 4;
  required string tag = 5;
  required int64 queued_time = 6;
  required int64 started_time = 7;
  required int64 finished_time = 8;
  required string machine = 9;
  required string machine_owner = 10;
  required string machine_group = 11;
  required string aborted_by = 12;
  required int64 aborted_on = 13;
  required string afe_job_id = 14;
  repeated KeyVal keyval_dict = 15;
  optional string afe_parent_job_id =
      16;  // If none, assuming parent job.
           // Could be none, use a generated id as foreign key to tests.
  optional int64 job_idx = 17;
  optional string build_version = 18;
  optional string suite = 19;
  optional string board = 20;
  optional string dlm_sku_id = 21;
  optional string hwid = 22;
  optional string uploader = 23;
}
