// Copyright 2019 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_platform.phosphorus;

option go_package = "go.chromium.org/chromiumos/infra/proto/go/test_platform/phosphorus";

// BotEnvironment defines bot-specific parameters used by phosphorus.
message BotEnvironment {
  // Absolute path to the autotest directory for the bot, e.g.
  // "/usr/local/autotest".
  string autotest_dir = 1;
}

// TaskEnvironment defines task-specific parameters used by phosphorus.
message TaskEnvironment {
  // Path to the client offload directory relative to the results directory
  //  Intended for log-data which is needed synchronously with high reliability
  string synchronous_offload_dir = 1;

  // Absolute path to the results directory for a given run. Include results of
  //  both tests and non-test tasks like provision
  string results_dir = 2;

  // Absolute path to the results directory for a given run's tests.
  //  MUST be equal to ${results_dir}/autoserv_test if present. This restriction
  //  may be lifted in the future.
  string test_results_dir = 3;

  // The name of the base lxc image used for Server Side Packaging (SSP).
  //
  // autoserv fetches the base image from a hard-coded path on Google
  // Storage: gs://abci-ssp/autotest-containers/{name}.tar.xz
  //
  // See go/ctp-ssp for an overview of SSP.
  string ssp_base_image_name = 4;
}

// Knobs specific to the step that uploads log-data to Google Storage.
message LogDataUploadStep{
  // Controls the maximum number of files that may be uploaded concurrently.
  // If unset, a hard-coded constant is used to limit concurrency (i.e., there
  // is no way to request unlimited concurrent uploads).
  int32 max_concurrent_uploads = 1;
}

// Config defines configuration parameters common to phosphorus subcommands.
message Config {
  BotEnvironment bot = 1;
  TaskEnvironment task = 2;
  LogDataUploadStep log_data_upload_step = 3;
}
