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

syntax = "proto3";

package test.metadata.v1;

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

// go/cros-rtd-spec describes the Remote Test Driver bootstrapping flow inside
// the Remote Test Server. Remote Test Driver configures the bootstrapping flow
// for a test invocation.
message RemoteTestDriver {
  // All supported Remote Test Drivers, per go/cros-f20.
  enum ID {
    // Unspecified emote Test Driver. Must not be used.
    ID_UNSPECIFIED = 0;

    // See http://go/tauto-tests
    TAUTO = 1;

    // See http://go/tast
    TAST = 2;
  }

  // id is required to construct globally unique identifiers for test metadata.
  ID id = 1;

  // A container image containing all the required dependencies and other build
  // artifacts required for test invocations.
  //
  // Test Lab Environments should fail with an error indicating that the request
  // was invalid if the image fails to be found for a test invocation.
  BuildArtifact image = 2;

  // Command to invoke the Remote Test Driver inside `image`.
  //
  // Remote Test Servers must run `command` as
  //   $ ${command} -input_json ${input_json}
  // where ${intput_json} is an absolute file path.
  //
  // Remote Test Servers must populate `input_json` with a JSON encoded
  // test.invocation.Request message.
  string command = 3;
}

// A Chrome OS build artifact required for test execution.
message BuildArtifact {
  // All build artifacts are assumed to be archived in some common directory
  // root. `relative_path` is the relative path inside the root archive
  // directory.
  //
  // Infrastructure Test Lab Environment: Chrome OS Continuous Integration
  // builders archive build artifacts to a path on Google Storage. The Test
  // Platform requests include a reference to the root archival path.
  // e.g.,
  // * The builder archives all build artifacts to
  //   gs://chromeos-image-archive/link-release/R64-0.0.0.0/
  // * Test Platform request includes this archival path.
  // * `relative_path` is set to tast/mighty.bin
  // * Then, the full path to the artifact is
  //   gs://chromeos-image-archive/link-release/R64-0.0.0.0/tast/mighty.bin
  //
  // Developer Test Lab Environment: For developer flow outside of the
  // infrastructure, it is assumed that the build artifacts are available at a
  // local path with the same directory layout as the Google Storage archival.
  // e.g.,
  // * Local build copies all artifacts to /tmp/cbuildbot/archive/
  // * Local tooling includes a reference to this path.
  // * `relative_path` is set to tauto/ssp.bin
  // * Then, the full path to the artifact is
  //   /tmp/cbuildbot/archive/tauto/ssp.bin
  string relative_path = 1;
}