// 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 testplans;

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

import "testplans/common.proto";

// A list of test groups.
message TestGroups {
  repeated string name = 1;
}

// A description of how to remove test suites from the default set of test
// suites in Chrome OS CQ, as a result of source configuration.
// See http://go/cq-source-config
message SubtractiveRule {
  // Whether to disable hardware test suites.
  bool disable_hw_tests = 1;
  // Whether to disable virtual machine test suites.
  bool disable_vm_tests = 2;
  // Prunes away all default suites except those in the provided test groups.
  // e.g. setting this to "bluetooth" will have CQ run only those test suites
  // in the "bluetooth" test group.
  TestGroups only_keep_all_suites_in_groups = 3;
  // Prunes away all default suites except one in each provided test group.
  // e.g. can be used to ensure a test suite is launched on each of the
  // supported Chrome OS processor architectures.
  TestGroups only_keep_one_suite_from_each_group = 4;
}

// A descriptive of how to add extra test suites to a CQ run based on source
// configuration. An AdditiveRule will trigger so long as any file matches the
// relevant source pattern. AdditiveRules combine as a union of additional test
// suites to run. disable_by_default=True test suites are particularly relevant
// to AdditiveRules, since AdditiveRules are the only thing that will include
// them.
message AdditiveRule {
  // Adds on all test suites in the provided groups, even if they have
  // disable_by_default=True.
  // e.g. could be used to trigger wificell testing (which is expensive) based
  // on the presence of files in wifi-related directories.
  TestGroups add_all_suites_in_groups = 1;
  // Adds on one test suite from each of the provided groups, even if that suite
  // has disable_by_default=True.
  // e.g. could be used to trigger wificell testing (which is expensive) on one
  // board in each Chrome OS processor architecture.
  TestGroups add_one_suite_from_each_group = 2;
}

// A set of test subtractions and additions to perform for a source tree.
// See http://go/cq-source-config for documentation.
message SourceTestRules {
  // A file pattern, representing a segment of Chrome OS code.
  FilePattern file_pattern = 1;

  // A subtractive rule to apply to this file pattern. See the relevant message
  // documentation.
  SubtractiveRule subtractive_rule = 2;

  // An additive rule to apply to this file pattern. See the relevant message
  // documentation.
  AdditiveRule additive_rule = 3;
}

// Configures test restrictions for all relevant source trees.
// This is the root message.
message SourceTreeTestCfg {
  // Rules for how to test changes to specified source trees in the codebase.
  repeated SourceTestRules source_test_rules = 2;

  reserved 1;
}
