diff options
author | Stas Negara <snegara@google.com> | 2015-05-19 15:48:29 -0700 |
---|---|---|
committer | Stas Negara <snegara@google.com> | 2015-05-19 15:52:10 -0700 |
commit | c5e0c3d74500c5825b01e3d312caad3f5926bdb7 (patch) | |
tree | 9ba1b55587c4b6ad02248a75e0f20ab1382c8642 | |
parent | ae29366ae1e5c77f635945cd8a0689847ddca89b (diff) | |
download | testing-c5e0c3d74500c5825b01e3d312caad3f5926bdb7.tar.gz |
Intermittent discovery API issues should not need restart.
If discovery API is back online, Android Studio should support
the cloud testing/debugging properly without needing to be
restarted.
Change-Id: I2be2daf96c2fdc24bf82096cbbe2735b0fdc7de3
5 files changed, 44 insertions, 18 deletions
diff --git a/src/com/google/gct/testing/CloudConfigurationProviderImpl.java b/src/com/google/gct/testing/CloudConfigurationProviderImpl.java index 3468fc2..ffc46aa 100644 --- a/src/com/google/gct/testing/CloudConfigurationProviderImpl.java +++ b/src/com/google/gct/testing/CloudConfigurationProviderImpl.java @@ -138,6 +138,9 @@ public class CloudConfigurationProviderImpl extends CloudConfigurationProvider { if (kind == SINGLE_DEVICE) { DeviceDimension.Device defaultDevice = DeviceDimension.getDefaultDevice(); ApiDimension.ApiLevel defaultApi = ApiDimension.getDefaultApi(); + if (defaultDevice == null || defaultApi == null) { + return ImmutableList.of(); + } String defaultDeviceName = defaultDevice.getConfigurationDialogDisplayName() + " API " + defaultApi.getId(); CloudConfigurationImpl defaultConfiguration = new CloudConfigurationImpl( CloudConfigurationImpl.DEFAULT_DEVICE_CONFIGURATION_ID, defaultDeviceName, SINGLE_DEVICE, AndroidIcons.Display, facet); diff --git a/src/com/google/gct/testing/dimension/ApiDimension.java b/src/com/google/gct/testing/dimension/ApiDimension.java index eaa3c7a..f526d61 100644 --- a/src/com/google/gct/testing/dimension/ApiDimension.java +++ b/src/com/google/gct/testing/dimension/ApiDimension.java @@ -102,7 +102,7 @@ public class ApiDimension extends CloudConfigurationDimension { } public static List<? extends CloudTestingType> getFullDomain() { - if (FULL_DOMAIN == null || FULL_DOMAIN.isEmpty() || shouldPollDiscoveryTestApi(DISPLAY_NAME)) { + if (isFullDomainMissing() || shouldPollDiscoveryTestApi(DISPLAY_NAME)) { List<ApiLevel> apiLevels = new LinkedList<ApiLevel>(); AndroidDeviceCatalog androidDeviceCatalog = getAndroidDeviceCatalog(); if (androidDeviceCatalog != null) { @@ -121,13 +121,20 @@ public class ApiDimension extends CloudConfigurationDimension { } } } - // Sort them in descending order of api version. - FULL_DOMAIN = ImmutableList.copyOf(Ordering.from(API_LEVEL_COMPARATOR).reverse().sortedCopy(apiLevels)); + // Do not reset a valid full domain if some intermittent issues happened. + if (isFullDomainMissing() || !apiLevels.isEmpty()) { + // Sort them in descending order of api version. + FULL_DOMAIN = ImmutableList.copyOf(Ordering.from(API_LEVEL_COMPARATOR).reverse().sortedCopy(apiLevels)); + } resetDiscoveryTestApiUpdateTimestamp(DISPLAY_NAME); } return FULL_DOMAIN; } + private static boolean isFullDomainMissing() { + return FULL_DOMAIN == null || FULL_DOMAIN.isEmpty(); + } + public static ApiLevel getDefaultApi() { if (defaultApi == null) { getFullDomain(); diff --git a/src/com/google/gct/testing/dimension/DeviceDimension.java b/src/com/google/gct/testing/dimension/DeviceDimension.java index 93a8c34..73b55ef 100644 --- a/src/com/google/gct/testing/dimension/DeviceDimension.java +++ b/src/com/google/gct/testing/dimension/DeviceDimension.java @@ -52,7 +52,7 @@ public class DeviceDimension extends CloudConfigurationDimension { } public static List<? extends CloudTestingType> getFullDomain() { - if (FULL_DOMAIN == null || FULL_DOMAIN.isEmpty() || shouldPollDiscoveryTestApi(DISPLAY_NAME)) { + if (isFullDomainMissing() || shouldPollDiscoveryTestApi(DISPLAY_NAME)) { ImmutableList.Builder<Device> fullDomainBuilder = new ImmutableList.Builder<Device>(); AndroidDeviceCatalog androidDeviceCatalog = getAndroidDeviceCatalog(); if (androidDeviceCatalog != null) { @@ -67,12 +67,19 @@ public class DeviceDimension extends CloudConfigurationDimension { } } } - FULL_DOMAIN = fullDomainBuilder.build(); + // Do not reset a valid full domain if some intermittent issues happened. + if (isFullDomainMissing() || !fullDomainBuilder.build().isEmpty()) { + FULL_DOMAIN = fullDomainBuilder.build(); + } resetDiscoveryTestApiUpdateTimestamp(DISPLAY_NAME); } return FULL_DOMAIN; } + private static boolean isFullDomainMissing() { + return FULL_DOMAIN == null || FULL_DOMAIN.isEmpty(); + } + public static Device getDefaultDevice() { if (defaultDevice == null) { getFullDomain(); diff --git a/src/com/google/gct/testing/dimension/LanguageDimension.java b/src/com/google/gct/testing/dimension/LanguageDimension.java index 0aef5e7..35e3581 100644 --- a/src/com/google/gct/testing/dimension/LanguageDimension.java +++ b/src/com/google/gct/testing/dimension/LanguageDimension.java @@ -41,14 +41,6 @@ public class LanguageDimension extends CloudConfigurationDimension { private static ImmutableList<Language> FULL_DOMAIN; - private static final Language localDefaultLanguage; - - static { - //TODO: Make sure we do not "guess" incorrectly the user's language. - Language userLanguage = getLanguage(System.getProperty("user.language")); - localDefaultLanguage = userLanguage != null ? new Language(userLanguage, true) : null; - } - private static Language defaultLanguage; private final List<Language> supportedLanguages; @@ -73,7 +65,10 @@ public class LanguageDimension extends CloudConfigurationDimension { } private void addLocalDefaultLocale() { - if (localDefaultLanguage != null) { + //TODO: Make sure we do not "guess" incorrectly the user's language. + Language userLanguage = getLanguage(System.getProperty("user.language")); + if (userLanguage != null) { + Language localDefaultLanguage = new Language(userLanguage, true); supportedLanguages.remove(localDefaultLanguage); supportedLanguages.add(0, localDefaultLanguage); } @@ -126,7 +121,7 @@ public class LanguageDimension extends CloudConfigurationDimension { } public static List<Language> getFullDomain() { - if (FULL_DOMAIN == null || FULL_DOMAIN.isEmpty() || shouldPollDiscoveryTestApi(DISPLAY_NAME)) { + if (isFullDomainMissing() || shouldPollDiscoveryTestApi(DISPLAY_NAME)) { ImmutableList.Builder<Language> fullDomainBuilder = new ImmutableList.Builder<Language>(); AndroidDeviceCatalog androidDeviceCatalog = getAndroidDeviceCatalog(); if (androidDeviceCatalog != null) { @@ -139,12 +134,19 @@ public class LanguageDimension extends CloudConfigurationDimension { } } } - FULL_DOMAIN = fullDomainBuilder.build(); + // Do not reset a valid full domain if some intermittent issues happened. + if (isFullDomainMissing() || !fullDomainBuilder.build().isEmpty()) { + FULL_DOMAIN = fullDomainBuilder.build(); + } resetDiscoveryTestApiUpdateTimestamp(DISPLAY_NAME); } return FULL_DOMAIN; } + private static boolean isFullDomainMissing() { + return FULL_DOMAIN == null || FULL_DOMAIN.isEmpty(); + } + public static Language getDefaultLanguage() { if (defaultLanguage == null) { getFullDomain(); diff --git a/src/com/google/gct/testing/dimension/OrientationDimension.java b/src/com/google/gct/testing/dimension/OrientationDimension.java index 47de3e8..2d39dae 100644 --- a/src/com/google/gct/testing/dimension/OrientationDimension.java +++ b/src/com/google/gct/testing/dimension/OrientationDimension.java @@ -46,7 +46,7 @@ public class OrientationDimension extends CloudConfigurationDimension { } public static List<? extends CloudTestingType> getFullDomain() { - if (FULL_DOMAIN == null || FULL_DOMAIN.isEmpty() || shouldPollDiscoveryTestApi(DISPLAY_NAME)) { + if (isFullDomainMissing() || shouldPollDiscoveryTestApi(DISPLAY_NAME)) { ImmutableList.Builder<Orientation> fullDomainBuilder = new ImmutableList.Builder<Orientation>(); AndroidDeviceCatalog androidDeviceCatalog = getAndroidDeviceCatalog(); if (androidDeviceCatalog != null) { @@ -61,12 +61,19 @@ public class OrientationDimension extends CloudConfigurationDimension { } } } - FULL_DOMAIN = fullDomainBuilder.build(); + // Do not reset a valid full domain if some intermittent issues happened. + if (isFullDomainMissing() || !fullDomainBuilder.build().isEmpty()) { + FULL_DOMAIN = fullDomainBuilder.build(); + } resetDiscoveryTestApiUpdateTimestamp(DISPLAY_NAME); } return FULL_DOMAIN; } + private static boolean isFullDomainMissing() { + return FULL_DOMAIN == null || FULL_DOMAIN.isEmpty(); + } + public static Orientation getDefaultOrientation() { if (defaultOrientation == null) { getFullDomain(); |