feat: add SmartSharding option for Android instrumentation tests

PiperOrigin-RevId: 533270079
pull/807/head
Google APIs 2 years ago committed by Copybara-Service
parent 00165a9d51
commit 53a0be29c4
  1. 44
      google/devtools/testing/v1/test_execution.proto

@ -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.

Loading…
Cancel
Save