|
|
|
@ -1213,6 +1213,9 @@ message ShardingOption { |
|
|
|
|
// Shards test cases into the specified groups of packages, classes, and/or |
|
|
|
|
// methods. |
|
|
|
|
ManualSharding manual_sharding = 2; |
|
|
|
|
|
|
|
|
|
// Shards test based on previous test case timing records. |
|
|
|
|
SmartSharding smart_sharding = 3; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -1259,6 +1262,47 @@ message TestTargetsForShard { |
|
|
|
|
repeated string test_targets = 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Shards test based on previous test case timing records. |
|
|
|
|
message SmartSharding { |
|
|
|
|
// The amount of time tests within a shard should take. |
|
|
|
|
// |
|
|
|
|
// Default: 300 seconds (5 minutes). |
|
|
|
|
// The minimum allowed: 120 seconds (2 minutes). |
|
|
|
|
// |
|
|
|
|
// The shard count is dynamically set based on time, up to the maximum shard |
|
|
|
|
// limit (described below). To guarantee at least one test case for each |
|
|
|
|
// shard, the number of shards will not exceed the number of test cases. Shard |
|
|
|
|
// duration will be exceeded if: |
|
|
|
|
// - The maximum shard limit is reached and there is more calculated test |
|
|
|
|
// time remaining to allocate into shards. |
|
|
|
|
// - Any individual test is estimated to be longer than the targeted shard |
|
|
|
|
// duration. |
|
|
|
|
// |
|
|
|
|
// Shard duration is not guaranteed because smart sharding uses test case |
|
|
|
|
// history and default durations which may not be accurate. The rules for |
|
|
|
|
// finding the test case timing records are: |
|
|
|
|
// - If the service has seen a test case in the last 30 days, the record |
|
|
|
|
// of the latest successful one will be used. |
|
|
|
|
// - For new test cases, the average duration of other known test cases will |
|
|
|
|
// be used. |
|
|
|
|
// - If there are no previous test case timing records available, the test |
|
|
|
|
// case is considered to be 15 seconds long by default. |
|
|
|
|
// |
|
|
|
|
// Because the actual shard duration can exceed the targeted shard duration, |
|
|
|
|
// we recommend setting the targeted value at least 5 minutes less than the |
|
|
|
|
// maximum allowed test timeout (45 minutes for physical devices and 60 |
|
|
|
|
// minutes for virtual), or using the custom test timeout value you set. This |
|
|
|
|
// approach avoids cancelling the shard before all tests can finish. |
|
|
|
|
// |
|
|
|
|
// Note that there is a limit for maximum number of shards. When you select |
|
|
|
|
// one or more physical devices, the number of shards must be <= 50. When you |
|
|
|
|
// select one or more ARM virtual devices, it must be <= 100. When you select |
|
|
|
|
// only x86 virtual devices, it must be <= 500. To guarantee at least one test |
|
|
|
|
// case for per shard, the number of shards will not exceed the number of test |
|
|
|
|
// cases. Each shard created will count toward daily test quota. |
|
|
|
|
google.protobuf.Duration targeted_shard_duration = 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Output only. Details about the shard. |
|
|
|
|
message Shard { |
|
|
|
|
// Output only. The index of the shard among all the shards. |
|
|
|
|