123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478 |
- // Copyright 2021 Google LLC
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- syntax = "proto3";
- package google.devtools.testing.v1;
- import "google/api/annotations.proto";
- import "google/devtools/testing/v1/test_execution.proto";
- import "google/protobuf/duration.proto";
- import "google/protobuf/timestamp.proto";
- import "google/type/date.proto";
- import "google/api/client.proto";
- option go_package = "google.golang.org/genproto/googleapis/devtools/testing/v1;testing";
- option java_multiple_files = true;
- option java_outer_classname = "TestEnvironmentDiscoveryProto";
- option java_package = "com.google.devtools.testing.v1";
- // Service for discovering environments supported by the TestExecutionService.
- //
- // Over time the TestService may add or remove devices or configuration options
- // (e.g., when new devices and APIs are released). Clients should check here
- // periodically to discover what options are supported.
- //
- // It defines the following resource model:
- //
- // - The API a collection of [TestEnvironmentCatalog]
- // [google.devtools.test.v1.TestEnvironmentCatalog] resources, named
- // `testEnvironmentCatalog/*`
- //
- // - Each TestEnvironmentCatalog resource describes a set of supported
- // environments.
- //
- // - An [AndroidDeviceCatalog][google.devtools.test.v1.AndroidDeviceCatalog]
- // describes supported Android devices. It contains lists of supported
- // [AndroidModels][google.devtools.test.v1.AndroidModel] and
- // [AndroidVersions][google.devtools.test.v1.AndroidVersion] along with a
- // [AndroidRuntimeConfiguration][google.devtools.test.v1.AndroidRuntimeConfiguration].
- // Each AndroidModel contains a list of Versions it supports. All
- // models support all locales and orientations described by the
- // AndroidRuntimeConfiguration
- //
- // - An [IosDeviceCatalog][google.devtools.test.v1.IosDeviceCatalog]
- // describes supported iOS devices. It contains lists of supported
- // [IosModels][google.devtools.test.v1.IosModel] and
- // [IosVersions][google.devtools.test.v1.IosVersion] along with a
- // [IosRuntimeConfiguration][google.devtools.test.v1.IosRuntimeConfiguration].
- // Each IosModel contains a list of Versions it supports. All
- // models support all locales and orientations described by the
- // IosRuntimeConfiguration.
- service TestEnvironmentDiscoveryService {
- option (google.api.default_host) = "testing.googleapis.com";
- option (google.api.oauth_scopes) =
- "https://www.googleapis.com/auth/cloud-platform,"
- "https://www.googleapis.com/auth/cloud-platform.read-only";
- // Gets the catalog of supported test environments.
- //
- // May return any of the following canonical error codes:
- //
- // - INVALID_ARGUMENT - if the request is malformed
- // - NOT_FOUND - if the environment type does not exist
- // - INTERNAL - if an internal error occurred
- rpc GetTestEnvironmentCatalog(GetTestEnvironmentCatalogRequest) returns (TestEnvironmentCatalog) {
- option (google.api.http) = {
- get: "/v1/testEnvironmentCatalog/{environment_type}"
- };
- }
- }
- // A single device IP block
- message DeviceIpBlock {
- // An IP address block in CIDR notation eg: 34.68.194.64/29
- string block = 1;
- // Whether this block is used by physical or virtual devices
- DeviceForm form = 2;
- // The date this block was added to Firebase Test Lab
- google.type.Date added_date = 3;
- }
- // Request to list the currently supported values for an environment type.
- message GetTestEnvironmentCatalogRequest {
- // Types of environments the Test API supports.
- enum EnvironmentType {
- // Do not use. For proto versioning only.
- ENVIRONMENT_TYPE_UNSPECIFIED = 0;
- // A device running a version of the Android OS.
- ANDROID = 1;
- // A device running a version of iOS.
- IOS = 3;
- // A network configuration to use when running a test.
- NETWORK_CONFIGURATION = 4;
- // The software environment provided by TestExecutionService.
- PROVIDED_SOFTWARE = 5;
- // The IP blocks used by devices in the test environment.
- DEVICE_IP_BLOCKS = 6;
- }
- // Required. The type of environment that should be listed.
- EnvironmentType environment_type = 1;
- // For authorization, the cloud project requesting the TestEnvironmentCatalog.
- string project_id = 2;
- }
- // A description of a test environment.
- message TestEnvironmentCatalog {
- // Output only.
- oneof environment_catalog {
- // Supported Android devices.
- AndroidDeviceCatalog android_device_catalog = 1;
- // Supported iOS devices.
- IosDeviceCatalog ios_device_catalog = 3;
- // Supported network configurations.
- NetworkConfigurationCatalog network_configuration_catalog = 4;
- // The software test environment provided by TestExecutionService.
- ProvidedSoftwareCatalog software_catalog = 5;
- // The IP blocks used by devices in the test environment.
- DeviceIpBlockCatalog device_ip_block_catalog = 6;
- }
- }
- // List of IP blocks used by the Firebase Test Lab
- message DeviceIpBlockCatalog {
- // The device IP blocks used by Firebase Test Lab
- repeated DeviceIpBlock ip_blocks = 1;
- }
- // The currently supported Android devices.
- message AndroidDeviceCatalog {
- // The set of supported Android device models.
- repeated AndroidModel models = 1;
- // The set of supported Android OS versions.
- repeated AndroidVersion versions = 2;
- // The set of supported runtime configurations.
- AndroidRuntimeConfiguration runtime_configuration = 3;
- }
- // Android configuration that can be selected at the time a test is run.
- message AndroidRuntimeConfiguration {
- // The set of available locales.
- repeated Locale locales = 1;
- // The set of available orientations.
- repeated Orientation orientations = 2;
- }
- // A description of an Android device tests may be run on.
- message AndroidModel {
- // The unique opaque id for this model.
- // Use this for invoking the TestExecutionService.
- string id = 1;
- // The human-readable marketing name for this device model.
- // Examples: "Nexus 5", "Galaxy S5".
- string name = 2;
- // The manufacturer of this device.
- string manufacturer = 3;
- // The company that this device is branded with.
- // Example: "Google", "Samsung".
- string brand = 9;
- // The name of the industrial design.
- // This corresponds to android.os.Build.DEVICE.
- string codename = 10;
- // Whether this device is virtual or physical.
- DeviceForm form = 4;
- // Whether this device is a phone, tablet, wearable, etc.
- DeviceFormFactor form_factor = 16;
- // Screen size in the horizontal (X) dimension measured in pixels.
- int32 screen_x = 5;
- // Screen size in the vertical (Y) dimension measured in pixels.
- int32 screen_y = 6;
- // Screen density in DPI.
- // This corresponds to ro.sf.lcd_density
- int32 screen_density = 12;
- // True if and only if tests with this model are recorded by stitching
- // together screenshots. See use_low_spec_video_recording in device config.
- bool low_fps_video_recording = 17;
- // The set of Android versions this device supports.
- repeated string supported_version_ids = 7;
- // The list of supported ABIs for this device.
- // This corresponds to either android.os.Build.SUPPORTED_ABIS (for API level
- // 21 and above) or android.os.Build.CPU_ABI/CPU_ABI2.
- // The most preferred ABI is the first element in the list.
- //
- // Elements are optionally prefixed by "version_id:" (where version_id is
- // the id of an AndroidVersion), denoting an ABI that is supported only on
- // a particular version.
- repeated string supported_abis = 11;
- // Tags for this dimension.
- // Examples: "default", "preview", "deprecated".
- repeated string tags = 8;
- // URL of a thumbnail image (photo) of the device.
- // e.g. https://lh3.googleusercontent.com/90WcauuJiCYABEl8U0lcZeuS5STUbf2yW...
- string thumbnail_url = 19;
- }
- // A version of the Android OS.
- message AndroidVersion {
- // An opaque id for this Android version.
- // Use this id to invoke the TestExecutionService.
- string id = 1;
- // A string representing this version of the Android OS.
- // Examples: "4.3", "4.4".
- string version_string = 2;
- // The API level for this Android version.
- // Examples: 18, 19.
- int32 api_level = 3;
- // The code name for this Android version.
- // Examples: "JellyBean", "KitKat".
- string code_name = 4;
- // The date this Android version became available in the market.
- google.type.Date release_date = 5;
- // Market share for this version.
- Distribution distribution = 6;
- // Tags for this dimension.
- // Examples: "default", "preview", "deprecated".
- repeated string tags = 7;
- }
- // Data about the relative number of devices running a
- // given configuration of the Android platform.
- message Distribution {
- // Output only. The time this distribution was measured.
- google.protobuf.Timestamp measurement_time = 1;
- // Output only. The estimated fraction (0-1) of the total market with this
- // configuration.
- double market_share = 2;
- }
- // The currently supported iOS devices.
- message IosDeviceCatalog {
- // The set of supported iOS device models.
- repeated IosModel models = 1;
- // The set of supported iOS software versions.
- repeated IosVersion versions = 2;
- // The set of supported Xcode versions.
- repeated XcodeVersion xcode_versions = 4;
- // The set of supported runtime configurations.
- IosRuntimeConfiguration runtime_configuration = 3;
- }
- // iOS configuration that can be selected at the time a test is run.
- message IosRuntimeConfiguration {
- // The set of available locales.
- repeated Locale locales = 1;
- // The set of available orientations.
- repeated Orientation orientations = 2;
- }
- // A description of an iOS device tests may be run on.
- message IosModel {
- // The unique opaque id for this model.
- // Use this for invoking the TestExecutionService.
- string id = 1;
- // The human-readable name for this device model.
- // Examples: "iPhone 4s", "iPad Mini 2".
- string name = 2;
- // The set of iOS major software versions this device supports.
- repeated string supported_version_ids = 3;
- // Tags for this dimension.
- // Examples: "default", "preview", "deprecated".
- repeated string tags = 4;
- // Device capabilities.
- // Copied from
- // https://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html
- repeated string device_capabilities = 5;
- // Screen size in the horizontal (X) dimension measured in pixels.
- int32 screen_x = 7;
- // Screen size in the vertical (Y) dimension measured in pixels.
- int32 screen_y = 8;
- // Screen density in DPI.
- int32 screen_density = 9;
- // Whether this device is a phone, tablet, wearable, etc.
- DeviceFormFactor form_factor = 6;
- }
- // An iOS version.
- message IosVersion {
- // An opaque id for this iOS version.
- // Use this id to invoke the TestExecutionService.
- string id = 1;
- // An integer representing the major iOS version.
- // Examples: "8", "9".
- int32 major_version = 2;
- // An integer representing the minor iOS version.
- // Examples: "1", "2".
- int32 minor_version = 4;
- // Tags for this dimension.
- // Examples: "default", "preview", "deprecated".
- repeated string tags = 3;
- // The available Xcode versions for this version.
- repeated string supported_xcode_version_ids = 5;
- }
- // A location/region designation for language.
- message Locale {
- // The id for this locale.
- // Example: "en_US".
- string id = 1;
- // A human-friendly name for this language/locale.
- // Example: "English".
- string name = 2;
- // A human-friendly string representing the region for this
- // locale. Example: "United States". Not present for every locale.
- string region = 3;
- // Tags for this dimension.
- // Example: "default".
- repeated string tags = 4;
- }
- // Screen orientation of the device.
- message Orientation {
- // The id for this orientation.
- // Example: "portrait".
- string id = 1;
- // A human-friendly name for this orientation.
- // Example: "portrait".
- string name = 2;
- // Tags for this dimension.
- // Example: "default".
- repeated string tags = 3;
- }
- // An Xcode version that an iOS version is compatible with.
- message XcodeVersion {
- // The id for this version.
- // Example: "9.2".
- string version = 1;
- // Tags for this Xcode version.
- // Example: "default".
- repeated string tags = 2;
- }
- message NetworkConfigurationCatalog {
- repeated NetworkConfiguration configurations = 1;
- }
- message NetworkConfiguration {
- // The unique opaque id for this network traffic configuration.
- string id = 1;
- // The emulation rule applying to the upload traffic.
- TrafficRule up_rule = 2;
- // The emulation rule applying to the download traffic.
- TrafficRule down_rule = 3;
- }
- // Network emulation parameters.
- message TrafficRule {
- // Packet delay, must be >= 0.
- google.protobuf.Duration delay = 1;
- // Packet loss ratio (0.0 - 1.0).
- float packet_loss_ratio = 2;
- // Packet duplication ratio (0.0 - 1.0).
- float packet_duplication_ratio = 3;
- // Bandwidth in kbits/second.
- float bandwidth = 4;
- // Burst size in kbits.
- float burst = 5;
- }
- // The currently provided software environment on the devices under test.
- message ProvidedSoftwareCatalog {
- // A string representing the current version of Android Test Orchestrator
- // that is used in the environment. The package is available at
- // https://maven.google.com/web/index.html#com.android.support.test:orchestrator.
- string orchestrator_version = 1;
- // A string representing the current version of AndroidX Test Orchestrator
- // that is used in the environment. The package is available at
- // https://maven.google.com/web/index.html#androidx.test:orchestrator.
- string androidx_orchestrator_version = 2;
- }
- // Whether the device is physical or virtual.
- enum DeviceForm {
- // Do not use. For proto versioning only.
- DEVICE_FORM_UNSPECIFIED = 0;
- // Android virtual device using Compute Engine native virtualization. Firebase
- // Test Lab only.
- VIRTUAL = 1;
- // Actual hardware.
- PHYSICAL = 2;
- // Android virtual device using emulator in nested virtualization. Equivalent
- // to Android Studio.
- EMULATOR = 3;
- }
- // The form factor of a device.
- enum DeviceFormFactor {
- // Do not use. For proto versioning only.
- DEVICE_FORM_FACTOR_UNSPECIFIED = 0;
- // This device has the shape of a phone.
- PHONE = 1;
- // This device has the shape of a tablet.
- TABLET = 2;
- // This device has the shape of a watch or other wearable.
- WEARABLE = 3;
- }
|