summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStas Negara <snegara@google.com>2015-05-19 15:48:29 -0700
committerStas Negara <snegara@google.com>2015-05-19 15:52:10 -0700
commitc5e0c3d74500c5825b01e3d312caad3f5926bdb7 (patch)
tree9ba1b55587c4b6ad02248a75e0f20ab1382c8642
parentae29366ae1e5c77f635945cd8a0689847ddca89b (diff)
downloadtesting-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
-rw-r--r--src/com/google/gct/testing/CloudConfigurationProviderImpl.java3
-rw-r--r--src/com/google/gct/testing/dimension/ApiDimension.java13
-rw-r--r--src/com/google/gct/testing/dimension/DeviceDimension.java11
-rw-r--r--src/com/google/gct/testing/dimension/LanguageDimension.java24
-rw-r--r--src/com/google/gct/testing/dimension/OrientationDimension.java11
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();