blob: ebbd945cbabe507898a45c62402732136a18538b [file] [log] [blame]
// 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.
// WARNING: DO NOT USE these protos outside of suite scheduler. This is
// only intended to help the transition to starlark configs. It will
// be deprecated once the new replacement is in place.
syntax = "proto3";
package testplans;
option go_package = "go.chromium.org/chromiumos/infra/proto/go/testplans";
// Defines a board, its variants and its models.
message Board {
// Name of the board. Eg: eve.
string name = 1;
// List of variants assiciated with the board.
// This should only be the suffixes. Eg: ['-kernelnext'].
repeated string variants = 2;
// List of models of the boards to test on.
repeated string models = 3;
}
// Aims to reflect data in lab_config.ini.
message LabConfig {
// List of board definitions.
repeated Board boards = 1;
}
// Specify a Board and Variant pair.
message BoardVariant {
string board = 1;
string variant = 2;
}
// Branches that can be targeted.
enum Branch {
BRANCH_UNSPECIFIED = 0;
// Canary Branch or ToT.
CANARY = 1;
// Dev Branch or ToT-1.
DEV = 2;
// Beta Branch or ToT-2.
BETA = 3;
// Stable Branch or ToT-3.
STABLE = 4;
}
// Most fields are the same as suite_scheduler.ini just better organized.
// The entries will be used to generate a suite_scheduler.ini in starlark scripts.
message SchedulerConfig {
// Name of the config. Needs to be unique.
string name = 1;
// Name of the suite to run.
string suite = 2;
// Contact emails will one day be paged in case of problems with the config.
message Contact {
string email = 1;
}
repeated Contact contacts = 3;
// LaunchCriteria specifies when the suite should be launched.
message LaunchCriteria {
// LaunchProfile defines how often the suite is launched.
enum LaunchProfile {
UNSPECIFIED = 0;
// Run on every new release build of the boards/variants targeted.
NEW_BUILD = 1;
// Run once a day at the specified hour. Used to be "NIGHTLY".
DAILY = 2;
// Run once a week at the specified time.
WEEKLY = 3;
// NOT SUPPORTED. Will be supported in the redesign.
CRON_BASED = 4;
}
LaunchProfile launch_profile = 1;
// Hour at which to run. Needs to be specified for nightly and weekly profiles.
// Has to be [0, 23].
int32 hour = 2;
// Day on which to run. Needs to be specified for weekly profile.
// Has to be [0, 6].
int32 day = 3;
// NOT SUPPORTED. Cron compatible schedule eg: "* * 1,3,5 * *".
string cron_schedule = 4;
}
LaunchCriteria launch_criteria = 4;
// Branches to target.
repeated Branch branches = 5;
// Set of boards, variants and models to target.
message TargetOptions {
// Use at the most one among the two fields below. If boards_list is empty,
// all boards are targeted. exclude_boards will exclude those boards from
// the all boards list.
repeated string boards_list = 1;
repeated string exclude_boards = 2;
// To specify variants, either all variants can be skipped.
bool skip_variants = 8;
// OR use at the most one among the two fields below. If variants_list is empty,
// all variants are targeted. exclude_variants will exclude those variants
// from the all variants list.
repeated BoardVariant variants_list = 3;
repeated BoardVariant exclude_variants = 4;
// There's two ways of specifying models. If all of these fields are empty,
// all possible models are targeted.
// Models to be targeted can be listed explicitly in models_list.
repeated string models_list = 5;
// OR start with the complete list and exclude some specific models.
// any_model only tests the suite on a single model.
bool any_model = 6;
repeated string exclude_models = 7;
}
TargetOptions target_options = 6;
// Aggregate of options related to DUT pool.
message PoolOptions {
// Quota Scheduler account to use.
string qs_account = 1;
// Pool to schedule on.
string pool = 2;
// Integer priority to assign. Only used by CTS. Quota scheduler takes care of
// priorities for the rest. Has to be [20, 255].
int32 priority = 3;
}
PoolOptions pool_options = 7;
// Whether to use firmware from ToT or firmware branch.
enum FirmwareBranch {
UNSPECIFIED = 0;
// ToT branch.
CROS = 1;
// Firmware branch.
FIRMWARE = 2;
}
FirmwareBranch firmware_ro_build_spec = 8;
// Execution related options.
message RunOptions {
// Whether to retry if the task fails.
bool retry = 1;
// A list of extra labels/dimensions to attach.
// Extra Swarming Dimensions that can be specified.
message SwarmingDimension {
string key = 1;
string value = 2;
}
repeated SwarmingDimension dimensions = 2;
// Timeout of the task.
int32 timeout_mins = 3;
// If sanity HW test passed, launch this test. Irrespective of the release build's
// final status.
bool only_sanity_test_required = 4;
}
RunOptions run_options = 9;
// Name of the config, used for analytics. Does not have to be unique.
string analytics_name = 10;
}
// A proto to contain all the configs.
message SchedulerCfg {
repeated SchedulerConfig configs = 1;
}