diff options
author | Stas Negara <snegara@google.com> | 2015-03-31 12:46:45 -0700 |
---|---|---|
committer | Stas Negara <snegara@google.com> | 2015-04-07 16:39:23 -0700 |
commit | 78f8656b63a37526220a3d8de4caf22be2250181 (patch) | |
tree | c086b2aa2953b5cffd4bfaf61babffe21a8a114c | |
parent | 703cfcd68fef032d3a3e3143c41dfd49c44689d6 (diff) | |
download | testing-78f8656b63a37526220a3d8de4caf22be2250181.tar.gz |
Add support for launching cloud devices.
Also, a lot of refactoring (mostly renames).
Change-Id: Ief13a5cca01c8cc9cde41bd193e6ff6c9f35472f
33 files changed, 491 insertions, 355 deletions
diff --git a/src/META-INF/plugin.xml b/src/META-INF/plugin.xml index 3bb5496..b999ed2 100644 --- a/src/META-INF/plugin.xml +++ b/src/META-INF/plugin.xml @@ -32,21 +32,21 @@ <projectService serviceInterface="com.google.gct.testing.config.GoogleCloudTestingDeveloperSettings" serviceImplementation="com.google.gct.testing.config.GoogleCloudTestingDeveloperSettings"/> - <moduleService serviceInterface="com.google.gct.testing.GoogleCloudTestingCustomPersistentConfigurations" - serviceImplementation="com.google.gct.testing.GoogleCloudTestingCustomPersistentConfigurations"/> + <moduleService serviceInterface="com.google.gct.testing.CloudCustomPersistentConfigurations" + serviceImplementation="com.google.gct.testing.CloudCustomPersistentConfigurations"/> - <moduleService serviceInterface="com.google.gct.testing.GoogleCloudTestingDefaultPersistentConfigurations" - serviceImplementation="com.google.gct.testing.GoogleCloudTestingDefaultPersistentConfigurations"/> + <moduleService serviceInterface="com.google.gct.testing.CloudDefaultPersistentConfigurations" + serviceImplementation="com.google.gct.testing.CloudDefaultPersistentConfigurations"/> </extensions> <extensions defaultExtensionNs="com.android.tools.idea"> - <run.cloudTestingConfigurationProvider id="myCloudTestConfigurationProvider" order="first" implementation="com.google.gct.testing.CloudTestConfigurationProviderImpl"/> + <run.cloudConfigurationProvider id="myCloudConfigurationProvider" order="first" implementation="com.google.gct.testing.CloudConfigurationProviderImpl"/> </extensions> <extensionPoints> - <extensionPoint name="googleTestingListener" interface="com.google.gct.testing.GoogleTestingListener"/> + <extensionPoint name="cloudTestingListener" interface="com.google.gct.testing.CloudTestingListener"/> </extensionPoints> </idea-plugin> diff --git a/src/com/google/gct/testing/CloudConfigurationChooserDialog.java b/src/com/google/gct/testing/CloudConfigurationChooserDialog.java index 5dbfa69..f651097 100644 --- a/src/com/google/gct/testing/CloudConfigurationChooserDialog.java +++ b/src/com/google/gct/testing/CloudConfigurationChooserDialog.java @@ -16,6 +16,7 @@ package com.google.gct.testing; import com.android.annotations.Nullable; +import com.android.tools.idea.run.CloudConfiguration.Kind; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -30,11 +31,13 @@ import com.intellij.openapi.ui.DialogWrapper; import com.intellij.openapi.ui.Splitter; import com.intellij.ui.*; import com.intellij.ui.treeStructure.Tree; +import com.intellij.util.IconUtil; import com.intellij.util.PlatformIcons; import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.tree.TreeUtil; import icons.AndroidIcons; import org.jetbrains.android.facet.AndroidFacet; +import org.jetbrains.annotations.NotNull; import javax.swing.*; import javax.swing.event.DocumentEvent; @@ -52,8 +55,8 @@ import static com.google.gct.testing.CloudTestingUtils.createConfigurationChoose public class CloudConfigurationChooserDialog extends DialogWrapper implements ConfigurationChangeListener { - private final List<CloudTestConfigurationImpl> editableConfigurations; - private final List<CloudTestConfigurationImpl> defaultConfigurations; + private final List<CloudConfigurationImpl> editableConfigurations; + private final List<CloudConfigurationImpl> defaultConfigurations; private final MyAddAction myAddAction = new MyAddAction(); private final MyRemoveAction myRemoveAction = new MyRemoveAction(); private final MyCopyActionButton myCopyActionButton = new MyCopyActionButton(); @@ -63,6 +66,8 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co private final DefaultMutableTreeNode customRoot = new DefaultMutableTreeNode("Custom"); private final DefaultMutableTreeNode defaultsRoot = new DefaultMutableTreeNode("Defaults"); + private final Kind configurationKind; + private JPanel myPanel; private final Splitter mySplitter = new Splitter(false); private JPanel myConfigurationPanel; @@ -80,17 +85,20 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co // The configuration that is currently selected in the tree @Nullable - private CloudTestConfigurationImpl selectedConfiguration; + private CloudConfigurationImpl selectedConfiguration; private final AndroidFacet facet; public CloudConfigurationChooserDialog(Module module, - List<CloudTestConfigurationImpl> editableConfigurations, - List<CloudTestConfigurationImpl> defaultConfigurations, - final CloudTestConfigurationImpl initiallySelectedConfiguration) { + List<CloudConfigurationImpl> editableConfigurations, + List<CloudConfigurationImpl> defaultConfigurations, + @Nullable final CloudConfigurationImpl initiallySelectedConfiguration, + @NotNull Kind configurationKind) { super(module.getProject(), true); + this.configurationKind = configurationKind; + myConfigurationInfoPanel.setPreferredSize(new Dimension(470, UIUtil.isUnderDarcula() ? 166 : 169)); // Note that we are editing the list we were given. // This could be dangerous. @@ -112,14 +120,17 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co updateConfigurationControls(false); DefaultMutableTreeNode selectedGroup = (DefaultMutableTreeNode)selectedPath.getPath()[1]; if (selectedGroup.equals(customRoot)) { - myGroupDescriptionLabel.setText("User-defined configurations"); + myGroupDescriptionLabel.setText("User-defined configurations. To add a new one click "); + myGroupDescriptionLabel.setIcon(IconUtil.getAddIcon()); + myGroupDescriptionLabel.setHorizontalTextPosition(SwingConstants.LEFT); } else { myGroupDescriptionLabel.setText("Default configurations"); + myGroupDescriptionLabel.setIcon(null); } selectedConfiguration = null; } else { updateConfigurationControls(true); - selectedConfiguration = (CloudTestConfigurationImpl) ((DefaultMutableTreeNode)selectedPath.getPath()[2]).getUserObject(); + selectedConfiguration = (CloudConfigurationImpl) ((DefaultMutableTreeNode)selectedPath.getPath()[2]).getUserObject(); myConfigurationName.setText(selectedConfiguration.getName()); myConfigurationName.setEnabled(selectedConfiguration.isEditable()); } @@ -152,10 +163,9 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co } else if (node == defaultsRoot) { append("Defaults", SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES); setIcon(AllIcons.General.Settings); - } else if (node.getUserObject() instanceof CloudTestConfigurationImpl) { - CloudTestConfigurationImpl config = (CloudTestConfigurationImpl) node.getUserObject(); - //TODO: Remove the cap > 100 - boolean isInvalidConfiguration = config.getDeviceConfigurationCount() < 1 || config.getDeviceConfigurationCount() > 100; + } else if (node.getUserObject() instanceof CloudConfigurationImpl) { + CloudConfigurationImpl config = (CloudConfigurationImpl) node.getUserObject(); + boolean isInvalidConfiguration = config.getDeviceConfigurationCount() < 1; boolean oldMySelected = mySelected; // This is a trick to avoid using white color for the selected element if it has to be red. if (isInvalidConfiguration) { @@ -175,7 +185,10 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co //Disposer.register(myDisposable, ???); - myConfigurationName.setText(initiallySelectedConfiguration.getName()); + if (initiallySelectedConfiguration != null) { + myConfigurationName.setText(initiallySelectedConfiguration.getName()); + } + myConfigurationName.getDocument().addDocumentListener(new DocumentAdapter() { @Override protected void textChanged(DocumentEvent e) { @@ -196,10 +209,11 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co myConfigurationTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); treeModel.insertNodeInto(customRoot, rootNode, 0); treeModel.insertNodeInto(defaultsRoot, rootNode, 1); - for (CloudTestConfigurationImpl configuration : editableConfigurations) { + selectTreeNode(customRoot); + for (CloudConfigurationImpl configuration : editableConfigurations) { addConfigurationToTree(-1, configuration, configuration.equals(initiallySelectedConfiguration)); } - for (CloudTestConfigurationImpl configuration : defaultConfigurations) { + for (CloudConfigurationImpl configuration : defaultConfigurations) { addConfigurationToTree(-1, configuration, configuration.equals(initiallySelectedConfiguration)); } @@ -225,7 +239,7 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co /** * Adds the given configuration to the appropriate place in the tree and selects it if desired. */ - private void addConfigurationToTree(int index, CloudTestConfigurationImpl configuration, boolean makeSelected) { + private void addConfigurationToTree(int index, CloudConfigurationImpl configuration, boolean makeSelected) { configuration.addConfigurationChangeListener(this); final DefaultMutableTreeNode newChild = new DefaultMutableTreeNode(configuration); @@ -260,7 +274,7 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co /** * Removes the given configuration from the tree. We only look under the custom root. */ - private void removeConfigurationFromTree(CloudTestConfigurationImpl configuration) { + private void removeConfigurationFromTree(CloudConfigurationImpl configuration) { configuration.removeConfigurationChangeListener(this); MutableTreeNode toRemove = (MutableTreeNode) TreeUtil.findNodeWithObject(configuration, myConfigurationTree.getModel(), customRoot); customRoot.remove(toRemove); @@ -288,10 +302,10 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co return myToolbarDecorator.createPanel(); } - LoadingCache<CloudTestConfigurationImpl, TwoPanelTree> dimensionTreeCache = CacheBuilder.newBuilder() - .build(new CacheLoader<CloudTestConfigurationImpl, TwoPanelTree>() { + LoadingCache<CloudConfigurationImpl, TwoPanelTree> dimensionTreeCache = CacheBuilder.newBuilder() + .build(new CacheLoader<CloudConfigurationImpl, TwoPanelTree>() { @Override - public TwoPanelTree load(CloudTestConfigurationImpl configuration) throws Exception { + public TwoPanelTree load(CloudConfigurationImpl configuration) throws Exception { final TwoPanelTree tree = new TwoPanelTree(configuration); final TwoPanelTreeSelectionListener treeSelectionListener = new TwoPanelTreeSelectionListener() { @Override @@ -328,7 +342,7 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co }); - private void updateConfigurationDetailsPanel(CloudTestConfigurationImpl configuration) { + private void updateConfigurationDetailsPanel(CloudConfigurationImpl configuration) { myConfigurationEditorPanel.removeAll(); @@ -350,7 +364,6 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co myConfigurationName.setVisible(isRealConfiguration); myConfigurationNameLabel.setVisible(isRealConfiguration); myGroupDescriptionLabel.setVisible(!isRealConfiguration); - getOKAction().setEnabled(isRealConfiguration); } private void expandAllRows(Tree tree) { @@ -359,7 +372,7 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co } } - public CloudTestConfigurationImpl getSelectedConfiguration() { + public CloudConfigurationImpl getSelectedConfiguration() { return selectedConfiguration; } @@ -441,9 +454,9 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co @Override public void actionPerformed(AnActionEvent e) { // selectedConfiguration should not be null here, but handle this scenario just in case. - CloudTestConfigurationImpl newConfiguration = selectedConfiguration != null + CloudConfigurationImpl newConfiguration = selectedConfiguration != null ? selectedConfiguration.copy("Copy of ") - : new CloudTestConfigurationImpl(facet); + : new CloudConfigurationImpl(facet, configurationKind); addNewConfiguration(newConfiguration); } @@ -467,7 +480,7 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co } private void doAdd() { - addNewConfiguration(new CloudTestConfigurationImpl(facet)); + addNewConfiguration(new CloudConfigurationImpl(facet, configurationKind)); } @Override @@ -476,8 +489,8 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co } } - private void addNewConfiguration(CloudTestConfigurationImpl newConfiguration) { - newConfiguration.setIcon(CloudTestConfigurationProviderImpl.DEFAULT_ICON); + private void addNewConfiguration(CloudConfigurationImpl newConfiguration) { + newConfiguration.setIcon(CloudConfigurationProviderImpl.DEFAULT_ICON); int addIndex = selectedConfiguration == null ? editableConfigurations.size() : editableConfigurations.indexOf(selectedConfiguration) + 1; @@ -546,7 +559,7 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co } } - private void moveConfigurationToIndex(int index, CloudTestConfigurationImpl configuration) { + private void moveConfigurationToIndex(int index, CloudConfigurationImpl configuration) { editableConfigurations.remove(configuration); editableConfigurations.add(index, configuration); removeConfigurationFromTree(configuration); diff --git a/src/com/google/gct/testing/CloudTestConfigurationImpl.java b/src/com/google/gct/testing/CloudConfigurationImpl.java index 4ea11a8..0d46a1e 100644 --- a/src/com/google/gct/testing/CloudTestConfigurationImpl.java +++ b/src/com/google/gct/testing/CloudConfigurationImpl.java @@ -15,7 +15,7 @@ */ package com.google.gct.testing; -import com.android.tools.idea.run.CloudTestConfiguration; +import com.android.tools.idea.run.CloudConfiguration; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; import com.google.common.base.Preconditions; @@ -30,7 +30,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Set; -public class CloudTestConfigurationImpl extends CloudTestConfiguration { +public class CloudConfigurationImpl extends CloudConfiguration { public static final int ALL_ID = Integer.MAX_VALUE; @@ -38,6 +38,7 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { private int id; private String name; + private Kind kind; private Icon icon; private final AndroidFacet facet; private boolean isEditable; @@ -50,26 +51,28 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { LanguageDimension languageDimension; OrientationDimension orientationDimension; - public CloudTestConfigurationImpl(int id, String name, Icon icon, AndroidFacet facet) { + public CloudConfigurationImpl(int id, String name, Kind kind, Icon icon, AndroidFacet facet) { if (id != ALL_ID && id >= nextAvailableID) { nextAvailableID = id + 1; } this.id = id; this.name = name; + this.kind = kind; this.icon = icon; this.facet = facet; isEditable = true; createDimensions(); } - public CloudTestConfigurationImpl(String name, Icon icon, AndroidFacet facet) { - this(nextAvailableID++, name, icon, facet); + public CloudConfigurationImpl(String name, Kind kind, Icon icon, AndroidFacet facet) { + this(nextAvailableID++, name, kind, icon, facet); } @VisibleForTesting - CloudTestConfigurationImpl(String name, int minSdkVersion, List<String> locales) { + CloudConfigurationImpl(String name, Kind kind, int minSdkVersion, List<String> locales) { id = nextAvailableID++; this.name = name; + this.kind = kind; facet = null; isEditable = true; deviceDimension = new DeviceDimension(this); @@ -78,10 +81,11 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { orientationDimension = new OrientationDimension(this); } - public CloudTestConfigurationImpl(AndroidFacet facet) { + public CloudConfigurationImpl(AndroidFacet facet, Kind kind) { id = nextAvailableID++; name = "Unnamed"; - icon = CloudTestConfigurationProviderImpl.DEFAULT_ICON; + this.kind = kind; + icon = CloudConfigurationProviderImpl.DEFAULT_ICON; this.facet = facet; isEditable = true; createDimensions(); @@ -98,19 +102,23 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { return name; } + public Kind getKind() { + return kind; + } + /** * A single number representation of a matrix configuration. */ private int getHash() { - return (name + FluentIterable.from(getDimensions()).transform(new Function<GoogleCloudTestingDimension, String>() { + return (name + FluentIterable.from(getDimensions()).transform(new Function<CloudConfigurationDimension, String>() { @Override - public String apply(GoogleCloudTestingDimension dimension) { + public String apply(CloudConfigurationDimension dimension) { return getStringRepresentation(dimension); } }).toString()).hashCode(); } - private String getStringRepresentation(GoogleCloudTestingDimension dimension) { + private String getStringRepresentation(CloudConfigurationDimension dimension) { StringBuffer sb = new StringBuffer(); sb.append(dimension.getId()); for (CloudTestingType type : dimension.getEnabledTypes()) { @@ -136,7 +144,7 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { } } - public List<GoogleCloudTestingDimension> getDimensions() { + public List<CloudConfigurationDimension> getDimensions() { return ImmutableList.of(deviceDimension, apiDimension, languageDimension, orientationDimension); } @@ -164,7 +172,7 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { return changeListeners.remove(listener); } - public void dimensionChanged(GoogleCloudTestingDimension dimension) { + public void dimensionChanged(CloudConfigurationDimension dimension) { for (ConfigurationChangeListener changeListener : changeListeners) { changeListener.configurationChanged(new ConfigurationChangeEvent(this)); } @@ -178,7 +186,7 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { public int getDeviceConfigurationCount() { int product = 1; - for (GoogleCloudTestingDimension dimension : getDimensions()) { + for (CloudConfigurationDimension dimension : getDimensions()) { product *= dimension.getEnabledTypes().size(); } @@ -188,7 +196,7 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { public int countCombinationsCollapsingOrientation() { int product = 1; - for (GoogleCloudTestingDimension dimension : getDimensions()) { + for (CloudConfigurationDimension dimension : getDimensions()) { if (dimension instanceof OrientationDimension) { product *= Math.min(dimension.getEnabledTypes().size(), 1); } else { @@ -230,7 +238,7 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { StringBuffer bf = new StringBuffer(); boolean firstDim = true; - for (GoogleCloudTestingDimension dimension : getDimensions()) { + for (CloudConfigurationDimension dimension : getDimensions()) { if(!firstDim) { bf.append(" && "); } @@ -277,7 +285,7 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { } } - private StringBuffer prepareDimensionRequest(GoogleCloudTestingDimension dimension) { + private StringBuffer prepareDimensionRequest(CloudConfigurationDimension dimension) { StringBuffer bf = new StringBuffer(); boolean firstType = true; for (CloudTestingType type : dimension.getEnabledTypes()) { @@ -291,14 +299,14 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { } @Override - public CloudTestConfigurationImpl clone() { + public CloudConfigurationImpl clone() { return copy(null); } - public CloudTestConfigurationImpl copy(String prefix) { - CloudTestConfigurationImpl newConfiguration = prefix == null - ? new CloudTestConfigurationImpl(id, name, icon, facet) //clone - : new CloudTestConfigurationImpl(prefix + name, icon, facet); + public CloudConfigurationImpl copy(String prefix) { + CloudConfigurationImpl newConfiguration = prefix == null + ? new CloudConfigurationImpl(id, name, kind, icon, facet) //clone + : new CloudConfigurationImpl(prefix + name, kind, icon, facet); newConfiguration.deviceDimension.enableAll(deviceDimension.getEnabledTypes()); newConfiguration.apiDimension.enableAll(apiDimension.getEnabledTypes()); newConfiguration.languageDimension.enableAll(languageDimension.getEnabledTypes()); @@ -306,10 +314,11 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { return newConfiguration; } - public GoogleCloudTestingPersistentConfiguration getPersistentConfiguration() { - GoogleCloudTestingPersistentConfiguration persistentConfiguration = new GoogleCloudTestingPersistentConfiguration(); + public CloudPersistentConfiguration getPersistentConfiguration() { + CloudPersistentConfiguration persistentConfiguration = new CloudPersistentConfiguration(); persistentConfiguration.id = id; persistentConfiguration.name = name; + persistentConfiguration.kind = kind; persistentConfiguration.devices = getEnabledTypes(deviceDimension); persistentConfiguration.apiLevels = getEnabledTypes(apiDimension); persistentConfiguration.languages = getEnabledTypes(languageDimension); @@ -317,7 +326,7 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { return persistentConfiguration; } - private List<String> getEnabledTypes(GoogleCloudTestingDimension dimension) { + private List<String> getEnabledTypes(CloudConfigurationDimension dimension) { List<String> enabledTypes = new LinkedList<String>(); for (CloudTestingType type : dimension.getEnabledTypes()) { enabledTypes.add(type.getId()); @@ -330,7 +339,7 @@ public class CloudTestConfigurationImpl extends CloudTestConfiguration { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - CloudTestConfigurationImpl that = (CloudTestConfigurationImpl)o; + CloudConfigurationImpl that = (CloudConfigurationImpl)o; //return getHash() == that.getHash() && id == that.id; return id == that.id; diff --git a/src/com/google/gct/testing/CloudTestConfigurationProviderImpl.java b/src/com/google/gct/testing/CloudConfigurationProviderImpl.java index 466e4e2..2a07984 100644 --- a/src/com/google/gct/testing/CloudTestConfigurationProviderImpl.java +++ b/src/com/google/gct/testing/CloudConfigurationProviderImpl.java @@ -15,11 +15,14 @@ */ package com.google.gct.testing; -import com.android.tools.idea.run.CloudTestConfiguration; -import com.android.tools.idea.run.CloudTestConfigurationProvider; +import com.android.tools.idea.run.CloudConfiguration; +import com.android.tools.idea.run.CloudConfiguration.Kind; +import com.android.tools.idea.run.CloudConfigurationProvider; +import com.android.tools.idea.sdk.IdeSdks; import com.google.api.services.storage.Storage; import com.google.api.services.storage.model.Buckets; -import com.google.api.services.testing.model.TestExecution; +import com.google.api.services.testing.model.AndroidDevice; +import com.google.api.services.testing.model.Device; import com.google.api.services.testing.model.TestMatrix; import com.google.common.base.Function; import com.google.common.base.Predicate; @@ -38,6 +41,7 @@ import com.intellij.execution.DefaultExecutionResult; import com.intellij.execution.ExecutionException; import com.intellij.execution.ExecutionResult; import com.intellij.execution.Executor; +import com.intellij.execution.process.ProcessHandler; import com.intellij.execution.process.ProcessOutputTypes; import com.intellij.execution.ui.ConsoleView; import com.intellij.openapi.module.Module; @@ -54,29 +58,34 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.io.File; import java.io.FilenameFilter; +import java.io.IOException; import java.util.*; -public class CloudTestConfigurationProviderImpl extends CloudTestConfigurationProvider { +import static com.android.tools.idea.run.CloudConfiguration.Kind.MATRIX; +import static com.android.tools.idea.run.CloudConfiguration.Kind.SINGLE_DEVICE; +import static com.google.gct.testing.launcher.CloudAuthenticator.getTest; + +public class CloudConfigurationProviderImpl extends CloudConfigurationProvider { private static final String TEST_RUN_ID_PREFIX = "GoogleCloudTest:"; - private static final Map<String, CloudTestConfigurationImpl> testRunIdToCloudConfiguration = new HashMap<String, CloudTestConfigurationImpl>(); + private static final Map<String, CloudConfigurationImpl> testRunIdToCloudConfiguration = new HashMap<String, CloudConfigurationImpl>(); private static final Map<String, CloudResultsAdapter> testRunIdToCloudResultsAdapter = new HashMap<String, CloudResultsAdapter>(); public static final Icon DEFAULT_ICON = AndroidIcons.AndroidFile; - public static final Function<CloudTestConfiguration, CloudTestConfigurationImpl> CLONE_CONFIGURATIONS = - new Function<CloudTestConfiguration, CloudTestConfigurationImpl>() { + public static final Function<CloudConfiguration, CloudConfigurationImpl> CLONE_CONFIGURATIONS = + new Function<CloudConfiguration, CloudConfigurationImpl>() { @Override - public CloudTestConfigurationImpl apply(CloudTestConfiguration configuration) { - return ((CloudTestConfigurationImpl) configuration).clone(); + public CloudConfigurationImpl apply(CloudConfiguration configuration) { + return ((CloudConfigurationImpl) configuration).clone(); } }; - public static final Function<CloudTestConfiguration, CloudTestConfigurationImpl> CAST_CONFIGURATIONS = - new Function<CloudTestConfiguration, CloudTestConfigurationImpl>() { + public static final Function<CloudConfiguration, CloudConfigurationImpl> CAST_CONFIGURATIONS = + new Function<CloudConfiguration, CloudConfigurationImpl>() { @Override - public CloudTestConfigurationImpl apply(CloudTestConfiguration configuration) { - return (CloudTestConfigurationImpl) configuration; + public CloudConfigurationImpl apply(CloudConfiguration configuration) { + return (CloudConfigurationImpl) configuration; } }; @@ -91,16 +100,26 @@ public class CloudTestConfigurationProviderImpl extends CloudTestConfigurationPr @NotNull @Override - public List<? extends CloudTestConfiguration> getTestingConfigurations(@NotNull AndroidFacet facet) { - List<GoogleCloudTestingPersistentConfiguration> googleCloudTestingPersistentConfigurations = - GoogleCloudTestingCustomPersistentConfigurations.getInstance(facet.getModule()).getState().myGoogleCloudTestingPersistentConfigurations; - return Lists.newArrayList(Iterables.concat(deserializeConfigurations(googleCloudTestingPersistentConfigurations, true, facet), - getDefaultConfigurations(facet))); + public List<? extends CloudConfiguration> getCloudConfigurations(@NotNull AndroidFacet facet, @NotNull final Kind configurationKind) { + + List<CloudPersistentConfiguration> cloudPersistentConfigurations = Lists.newArrayList(Iterables.filter( + CloudCustomPersistentConfigurations.getInstance(facet.getModule()).getState().myCloudPersistentConfigurations, + new Predicate<CloudPersistentConfiguration>() { + @Override + public boolean apply(@Nullable CloudPersistentConfiguration configuration) { + return configuration != null && configuration.kind == configurationKind; + } + })); + return Lists.newArrayList(Iterables.concat(deserializeConfigurations(cloudPersistentConfigurations, true, facet), + getDefaultConfigurations(facet, configurationKind))); } - private List<? extends CloudTestConfiguration> getDefaultConfigurations(AndroidFacet facet) { - CloudTestConfigurationImpl allConfiguration = - new CloudTestConfigurationImpl(CloudTestConfigurationImpl.ALL_ID, "All Compatible", AndroidIcons.Display, facet); + private List<? extends CloudConfiguration> getDefaultConfigurations(AndroidFacet facet, Kind kind) { + if (kind == SINGLE_DEVICE) { // No default single device configurations. + return Lists.newArrayList(); + } + CloudConfigurationImpl allConfiguration = + new CloudConfigurationImpl(CloudConfigurationImpl.ALL_ID, "All Compatible", MATRIX, AndroidIcons.Display, facet); allConfiguration.deviceDimension.enableAll(); allConfiguration.apiDimension.enableAll(); allConfiguration.languageDimension.enableAll(); @@ -108,55 +127,75 @@ public class CloudTestConfigurationProviderImpl extends CloudTestConfigurationPr allConfiguration.setNonEditable(); return ImmutableList.of(allConfiguration); //TODO: For now, there are no default configurations to store/read from the persistent storage (i.e., an xml file). - //List<GoogleCloudTestingPersistentConfiguration> myGoogleCloudTestingPersistentConfigurations = - // GoogleCloudTestingDefaultPersistentConfigurations.getInstance(facet.getModule()).getState().myGoogleCloudTestingPersistentConfigurations; - //return ImmutableList.copyOf(deserializeConfigurations(myGoogleCloudTestingPersistentConfigurations, false, facet)); + //List<CloudPersistentConfiguration> myCloudPersistentConfigurations = + // CloudDefaultPersistentConfigurations.getInstance(facet.getModule()).getState().myCloudPersistentConfigurations; + //return ImmutableList.copyOf(deserializeConfigurations(myCloudPersistentConfigurations, false, facet)); + } + + @NotNull + public List<? extends CloudConfiguration> getAllCloudConfigurations(@NotNull AndroidFacet facet) { + List<CloudPersistentConfiguration> cloudPersistentConfigurations = + CloudCustomPersistentConfigurations.getInstance(facet.getModule()).getState().myCloudPersistentConfigurations; + return Lists.newArrayList(Iterables.concat(deserializeConfigurations(cloudPersistentConfigurations, true, facet), + getDefaultConfigurations(facet, MATRIX))); } @Nullable @Override - public CloudTestConfiguration openMatrixConfigurationDialog(@NotNull AndroidFacet currentFacet, - @NotNull CloudTestConfiguration selectedConfiguration) { + public CloudConfiguration openMatrixConfigurationDialog(@NotNull AndroidFacet currentFacet, + @Nullable CloudConfiguration selectedConfiguration, + @NotNull Kind configurationKind) { + + final Kind selectedConfigurationKind = + selectedConfiguration == null ? configurationKind : ((CloudConfigurationImpl)selectedConfiguration).getKind(); + Module currentModule = currentFacet.getModule(); - List<? extends CloudTestConfiguration> testingConfigurations = getTestingConfigurations(currentFacet); + List<? extends CloudConfiguration> testingConfigurations = getCloudConfigurations(currentFacet, selectedConfigurationKind); - List<CloudTestConfigurationImpl> castDefaultConfigurations = - Lists.newArrayList(Iterables.transform(Iterables.filter(testingConfigurations, new Predicate<CloudTestConfiguration>(){ + List<CloudConfigurationImpl> castDefaultConfigurations = + Lists.newArrayList(Iterables.transform(Iterables.filter(testingConfigurations, new Predicate<CloudConfiguration>(){ @Override - public boolean apply(CloudTestConfiguration testingConfiguration) { + public boolean apply(CloudConfiguration testingConfiguration) { return !testingConfiguration.isEditable(); } }), CAST_CONFIGURATIONS)); - List<CloudTestConfigurationImpl> copyCustomConfigurations = - Lists.newArrayList(Iterables.transform(Iterables.filter(testingConfigurations, new Predicate<CloudTestConfiguration>(){ + List<CloudConfigurationImpl> copyCustomConfigurations = + Lists.newArrayList(Iterables.transform(Iterables.filter(testingConfigurations, new Predicate<CloudConfiguration>(){ @Override - public boolean apply(CloudTestConfiguration testingConfiguration) { + public boolean apply(CloudConfiguration testingConfiguration) { return testingConfiguration.isEditable(); } }), CLONE_CONFIGURATIONS)); - if (selectedConfiguration == null) { - selectedConfiguration = new CloudTestConfigurationImpl(currentFacet); - } - CloudConfigurationChooserDialog dialog = new CloudConfigurationChooserDialog(currentModule, copyCustomConfigurations, castDefaultConfigurations, - (CloudTestConfigurationImpl) selectedConfiguration); + (CloudConfigurationImpl) selectedConfiguration, selectedConfigurationKind); dialog.show(); if (dialog.isOK()) { - //Persist the edited configurations. - GoogleCloudTestingPersistentState customState = new GoogleCloudTestingPersistentState(); - customState.myGoogleCloudTestingPersistentConfigurations = Lists.newArrayList( - Iterables.transform(copyCustomConfigurations, - new Function<CloudTestConfigurationImpl, GoogleCloudTestingPersistentConfiguration>() { - @Override - public GoogleCloudTestingPersistentConfiguration apply(CloudTestConfigurationImpl configuration) { - return configuration.getPersistentConfiguration(); - } - })); - GoogleCloudTestingCustomPersistentConfigurations.getInstance(currentModule).loadState(customState); + CloudCustomPersistentConfigurations persistentConfigurations = CloudCustomPersistentConfigurations.getInstance(currentModule); + CloudPersistentState customState = persistentConfigurations.getState(); + + // Keep all un-edited configurations (i.e., configurations of other kinds). + customState.myCloudPersistentConfigurations = + Lists.newArrayList(Iterables.filter(customState.myCloudPersistentConfigurations, new Predicate<CloudPersistentConfiguration>() { + @Override + public boolean apply(@Nullable CloudPersistentConfiguration configuration) { + return configuration != null && configuration.kind != selectedConfigurationKind; + } + })); + + // Persist the edited configurations. + customState.myCloudPersistentConfigurations.addAll(Lists.newArrayList( + Iterables.transform(copyCustomConfigurations, new Function<CloudConfigurationImpl, CloudPersistentConfiguration>() { + @Override + public CloudPersistentConfiguration apply(CloudConfigurationImpl configuration) { + return configuration.getPersistentConfiguration(); + } + }))); + + persistentConfigurations.loadState(customState); return dialog.getSelectedConfiguration(); } @@ -199,12 +238,82 @@ public class CloudTestConfigurationProviderImpl extends CloudTestConfigurationPr } @Override - public boolean supportsDebugging() { - return false; + public void launchCloudDevice(int selectedConfigurationId, @NotNull String cloudProjectId, @NotNull AndroidFacet facet) { + + CloudConfigurationImpl cloudConfiguration = CloudTestingUtils.getConfigurationById(selectedConfigurationId, facet); + + if (cloudConfiguration.getKind() != Kind.SINGLE_DEVICE) { + // Should handle only single device configurations. + return; + } + + String[] dimensionValues = + cloudConfiguration.computeConfigurationInstances(ConfigurationInstance.ENCODED_NAME_DELIMITER).get(0).split("-"); + Device device = new Device().setAndroidDevice( + new AndroidDevice() + .setAndroidModelId(dimensionValues[0]) + .setAndroidVersionId(dimensionValues[1]) + .setLocale(dimensionValues[2]) + .setOrientation(dimensionValues[3])); + + Device createdDevice = null; + try { + createdDevice = getTest().projects().devices().create(cloudProjectId, device).execute(); + } + catch (IOException e) { + CloudTestingUtils.showErrorMessage(null, "Error launching a cloud device", "Failed to launch a cloud device!\n" + + "Exception while launching a cloud device\n\n" + + e.getMessage()); + return; + } + if (createdDevice == null) { + CloudTestingUtils.showErrorMessage(null, "Error launching a cloud device", "Failed to launch a cloud device!\n" + + "The returned cloud device is null\n\n"); + } + + final long POLLING_INTERVAL = 10 * 1000; // 10 seconds + final long INITIAL_TIMEOUT = 10 * 60 * 1000; // 10 minutes + long stopTime = System.currentTimeMillis() + INITIAL_TIMEOUT; + String sdkPath = IdeSdks.getAndroidSdkPath().getAbsolutePath() + "/platform-tools"; + File dir = new File(sdkPath); + while (System.currentTimeMillis() < stopTime) { + try { + createdDevice = getTest().projects().devices().get(cloudProjectId, createdDevice.getId()).execute(); + System.out.println("Polling for device... (time: " + System.currentTimeMillis() + ", status: " + createdDevice.getState() + ")"); + if (createdDevice.getState().equals("READY")) { + //if (createdDevice.getDeviceDetails().getConnectionInfo() != null) { + String ipAddress = createdDevice.getDeviceDetails().getConnectionInfo().getIpAddress(); + Integer adbPort = createdDevice.getDeviceDetails().getConnectionInfo().getAdbPort(); + System.out.println("Device ready with IP address:port " + ipAddress + ":" + adbPort); + Runtime rt = Runtime.getRuntime(); + //Process startServer = rt.exec("./adb start-server", null, dir); + //startServer.waitFor(); + Process connect = rt.exec("./adb connect " + ipAddress + ":" + adbPort, null, dir); + connect.waitFor(); + return; + } + Thread.sleep(POLLING_INTERVAL); + } catch (IOException e) { + showCloudDevicePollingError(e, createdDevice.getId()); + } catch (InterruptedException e) { + showCloudDevicePollingError(e, createdDevice.getId()); + } + } + CloudTestingUtils.showErrorMessage(null, "Timed out connecting to a cloud device", "Timed out connecting to a cloud device!\n" + + "Timed out connecting to a cloud device:\n\n" + + createdDevice.getId()); + } + + private void showCloudDevicePollingError(Exception e, String deviceId) { + CloudTestingUtils.showErrorMessage(null, "Error polling for a cloud device", "Failed to connect to a cloud device!\n" + + "Exception while polling for a cloud device\n\n" + + deviceId + + e.getMessage()); } @Override - public ExecutionResult execute(int selectedConfigurationId, String cloudProjectId, AndroidRunningState runningState, Executor executor) throws ExecutionException { + public ExecutionResult executeCloudMatrixTests(int selectedConfigurationId, String cloudProjectId, AndroidRunningState runningState, + Executor executor) throws ExecutionException { Project project = runningState.getFacet().getModule().getProject(); @@ -213,40 +322,46 @@ public class CloudTestConfigurationProviderImpl extends CloudTestConfigurationPr return null; } + CloudConfigurationImpl cloudConfiguration = CloudTestingUtils.getConfigurationById(selectedConfigurationId, runningState.getFacet()); + + if (cloudConfiguration.getKind() != Kind.MATRIX) { + // Should handle only matrix configurations. + return null; + } + AndroidTestRunConfiguration testRunConfiguration = (AndroidTestRunConfiguration) runningState.getConfiguration(); AndroidTestConsoleProperties properties = new AndroidTestConsoleProperties(testRunConfiguration, executor); ConsoleView console = GoogleCloudTestResultsConnectionUtil - .createAndAttachConsole("Google Cloud Testing", runningState.getProcessHandler(), properties, runningState.getEnvironment()); + .createAndAttachConsole("Cloud Testing", runningState.getProcessHandler(), properties, runningState.getEnvironment()); Disposer.register(project, console); GoogleCloudTestingResultParser cloudResultParser = new GoogleCloudTestingResultParser("Cloud Test Run", new GoogleCloudTestListener(runningState)); - CloudTestConfigurationImpl cloudTestingConfiguration = - CloudTestingUtils.getConfigurationById(selectedConfigurationId, runningState.getFacet()); List<String> expectedConfigurationInstances = - cloudTestingConfiguration.computeConfigurationInstances(ConfigurationInstance.DISPLAY_NAME_DELIMITER); + cloudConfiguration.computeConfigurationInstances(ConfigurationInstance.DISPLAY_NAME_DELIMITER); for (String configurationInstance : expectedConfigurationInstances) { cloudResultParser.getTestRunListener().testConfigurationScheduled(configurationInstance); } GoogleCloudTestingDeveloperConfigurable.GoogleCloudTestingDeveloperState googleCloudTestingDeveloperState = GoogleCloudTestingDeveloperSettings.getInstance(project).getState(); if (!googleCloudTestingDeveloperState.shouldUseFakeBucket) { - performTestsInCloud(cloudTestingConfiguration, cloudProjectId, runningState, cloudResultParser); - } else { + performTestsInCloud(cloudConfiguration, cloudProjectId, runningState, cloudResultParser); + } + else { String testRunId = TEST_RUN_ID_PREFIX + googleCloudTestingDeveloperState.fakeBucketName + System.currentTimeMillis(); CloudResultsAdapter cloudResultsAdapter = - new CloudResultsAdapter(cloudProjectId, googleCloudTestingDeveloperState.fakeBucketName, cloudResultParser, expectedConfigurationInstances, - testRunId, null); - addGoogleCloudTestingConfiguration(testRunId, cloudTestingConfiguration); + new CloudResultsAdapter(cloudProjectId, googleCloudTestingDeveloperState.fakeBucketName, cloudResultParser, + expectedConfigurationInstances, testRunId, null); + addCloudConfiguration(testRunId, cloudConfiguration); addCloudResultsAdapter(testRunId, cloudResultsAdapter); cloudResultsAdapter.startPolling(); } return new DefaultExecutionResult(console, runningState.getProcessHandler()); } - private void performTestsInCloud(final CloudTestConfigurationImpl cloudTestingConfiguration, final String cloudProjectId, + private void performTestsInCloud(final CloudConfigurationImpl cloudTestingConfiguration, final String cloudProjectId, final AndroidRunningState runningState, final GoogleCloudTestingResultParser cloudResultParser) { if (cloudTestingConfiguration != null && cloudTestingConfiguration.getDeviceConfigurationCount() > 0) { final List<String> expectedConfigurationInstances = @@ -300,7 +415,7 @@ public class CloudTestConfigurationProviderImpl extends CloudTestConfigurationPr String testRunId = TEST_RUN_ID_PREFIX + bucketName; CloudResultsAdapter cloudResultsAdapter = new CloudResultsAdapter(cloudProjectId, bucketName, cloudResultParser, expectedConfigurationInstances, testRunId, testMatrix); - addGoogleCloudTestingConfiguration(testRunId, cloudTestingConfiguration); + addCloudConfiguration(testRunId, cloudTestingConfiguration); addCloudResultsAdapter(testRunId, cloudResultsAdapter); cloudResultsAdapter.startPolling(); } @@ -403,15 +518,14 @@ public class CloudTestConfigurationProviderImpl extends CloudTestConfigurationPr testRunIdToCloudResultsAdapter.put(testRunId, cloudResultsAdapter); } - private static void addGoogleCloudTestingConfiguration( - String testRunId, CloudTestConfigurationImpl googleCloudTestingConfiguration) { + private static void addCloudConfiguration(String testRunId, CloudConfigurationImpl cloudConfiguration) { if (testRunIdToCloudConfiguration.get(testRunId) != null) { throw new IllegalStateException("Cannot add more than one cloud configuration for test run id: " + testRunId); } - testRunIdToCloudConfiguration.put(testRunId, googleCloudTestingConfiguration); + testRunIdToCloudConfiguration.put(testRunId, cloudConfiguration); } - public static CloudTestConfigurationImpl getSelectedGoogleCloudTestingConfiguration(String testRunId) { + public static CloudConfigurationImpl getSelectedCloudConfiguration(String testRunId) { return testRunIdToCloudConfiguration.get(testRunId); } @@ -419,13 +533,13 @@ public class CloudTestConfigurationProviderImpl extends CloudTestConfigurationPr return testRunIdToCloudResultsAdapter.get(testRunId); } - public static List<CloudTestConfigurationImpl> deserializeConfigurations( - final List<GoogleCloudTestingPersistentConfiguration> persistentConfigurations, boolean isEditable, AndroidFacet facet) { - List<CloudTestConfigurationImpl> googleCloudTestingConfigurations = new LinkedList<CloudTestConfigurationImpl>(); - for (GoogleCloudTestingPersistentConfiguration persistentConfiguration : persistentConfigurations) { + public static List<CloudConfigurationImpl> deserializeConfigurations( + final List<CloudPersistentConfiguration> persistentConfigurations, boolean isEditable, AndroidFacet facet) { + List<CloudConfigurationImpl> googleCloudTestingConfigurations = new LinkedList<CloudConfigurationImpl>(); + for (CloudPersistentConfiguration persistentConfiguration : persistentConfigurations) { Icon icon = getIcon(persistentConfiguration.name, isEditable); - CloudTestConfigurationImpl configuration = - new CloudTestConfigurationImpl(persistentConfiguration.id, persistentConfiguration.name, icon, facet); + CloudConfigurationImpl configuration = + new CloudConfigurationImpl(persistentConfiguration.id, persistentConfiguration.name, persistentConfiguration.kind, icon, facet); configuration.deviceDimension.enable(DeviceDimension.getFullDomain(), persistentConfiguration.devices); configuration.apiDimension.enable(ApiDimension.getFullDomain(), persistentConfiguration.apiLevels); configuration.languageDimension.enable(LanguageDimension.getFullDomain(), persistentConfiguration.languages); diff --git a/src/com/google/gct/testing/CloudCustomPersistentConfigurations.java b/src/com/google/gct/testing/CloudCustomPersistentConfigurations.java new file mode 100644 index 0000000..af44ed3 --- /dev/null +++ b/src/com/google/gct/testing/CloudCustomPersistentConfigurations.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * 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. + */ +package com.google.gct.testing; + +import com.intellij.openapi.components.*; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleServiceManager; +import org.jetbrains.annotations.Nullable; + +@State( + name = "CloudCustomPersistentConfigurations", + storages = { + @Storage(file = "$MODULE_FILE$") + } +) +public class CloudCustomPersistentConfigurations implements PersistentStateComponent<CloudPersistentState> { + + private CloudPersistentState myCloudPersistentState; + + protected CloudCustomPersistentConfigurations() { + } + + public static CloudCustomPersistentConfigurations getInstance(Module module) { + return ModuleServiceManager.getService(module, CloudCustomPersistentConfigurations.class); + } + + @Nullable + @Override + public CloudPersistentState getState() { + if (myCloudPersistentState == null) { + myCloudPersistentState = new CloudPersistentState(); + } + return myCloudPersistentState; + } + + @Override + public void loadState(CloudPersistentState cloudPersistentState) { + this.myCloudPersistentState = cloudPersistentState; + } +} diff --git a/src/com/google/gct/testing/CloudDefaultPersistentConfigurations.java b/src/com/google/gct/testing/CloudDefaultPersistentConfigurations.java new file mode 100644 index 0000000..0e86749 --- /dev/null +++ b/src/com/google/gct/testing/CloudDefaultPersistentConfigurations.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * 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. + */ +package com.google.gct.testing; + +import com.intellij.openapi.components.*; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleServiceManager; +import org.jetbrains.annotations.Nullable; + +@State( + name = "CloudDefaultPersistentConfigurations", + storages = { + @Storage(file = "$MODULE_FILE$") + } +) +public class CloudDefaultPersistentConfigurations implements PersistentStateComponent<CloudPersistentState> { + + private CloudPersistentState myCloudPersistentState; + + protected CloudDefaultPersistentConfigurations() { + } + + public static CloudDefaultPersistentConfigurations getInstance(Module module) { + return ModuleServiceManager.getService(module, CloudDefaultPersistentConfigurations.class); + } + + @Nullable + @Override + public CloudPersistentState getState() { + if (myCloudPersistentState == null) { + myCloudPersistentState = new CloudPersistentState(); + } + return myCloudPersistentState; + } + + @Override + public void loadState(CloudPersistentState cloudPersistentState) { + this.myCloudPersistentState = cloudPersistentState; + } +} diff --git a/src/com/google/gct/testing/GoogleCloudTestingPersistentConfiguration.java b/src/com/google/gct/testing/CloudPersistentConfiguration.java index 6a197ec..63fdfdb 100644 --- a/src/com/google/gct/testing/GoogleCloudTestingPersistentConfiguration.java +++ b/src/com/google/gct/testing/CloudPersistentConfiguration.java @@ -15,12 +15,17 @@ */ package com.google.gct.testing; +import com.android.tools.idea.run.CloudConfiguration.Kind; + import java.util.LinkedList; import java.util.List; -public class GoogleCloudTestingPersistentConfiguration { +import static com.android.tools.idea.run.CloudConfiguration.Kind.MATRIX; + +public class CloudPersistentConfiguration { public int id = 1; public String name = ""; + public Kind kind = MATRIX; public List<String> devices = new LinkedList<String>(); public List<String> apiLevels = new LinkedList<String>(); public List<String> languages = new LinkedList<String>(); diff --git a/src/com/google/gct/testing/GoogleCloudTestingPersistentState.java b/src/com/google/gct/testing/CloudPersistentState.java index 7fbec7e..d81b835 100644 --- a/src/com/google/gct/testing/GoogleCloudTestingPersistentState.java +++ b/src/com/google/gct/testing/CloudPersistentState.java @@ -18,8 +18,7 @@ package com.google.gct.testing; import java.util.LinkedList; import java.util.List; -public class GoogleCloudTestingPersistentState { +public class CloudPersistentState { - public List<GoogleCloudTestingPersistentConfiguration> - myGoogleCloudTestingPersistentConfigurations = new LinkedList<GoogleCloudTestingPersistentConfiguration>(); + public List<CloudPersistentConfiguration> myCloudPersistentConfigurations = new LinkedList<CloudPersistentConfiguration>(); } diff --git a/src/com/google/gct/testing/CloudResultsLoader.java b/src/com/google/gct/testing/CloudResultsLoader.java index 41b7f89..c5a8e04 100644 --- a/src/com/google/gct/testing/CloudResultsLoader.java +++ b/src/com/google/gct/testing/CloudResultsLoader.java @@ -100,8 +100,7 @@ public class CloudResultsLoader { private final Map<String, String> configurationProgress = new HashMap<String, String>(); - public CloudResultsLoader(String cloudProjectId, IGoogleCloudTestRunListener testRunListener, String bucketName, - TestMatrix testMatrix) { + public CloudResultsLoader(String cloudProjectId, IGoogleCloudTestRunListener testRunListener, String bucketName, TestMatrix testMatrix) { this.cloudProjectId = cloudProjectId; this.testRunListener = testRunListener; this.bucketName = bucketName; @@ -401,7 +400,7 @@ public class CloudResultsLoader { // // public long getFileSize() { // try { - // return getStorage().objects().get(bucketName, file.getPath()).execute().getSize().longValue(); + // return getStorage().objects().get(bucketName, file.getPath()).executeCloudMatrixTests().getSize().longValue(); // } // catch (IOException e) { // System.err.println("Failed to estimate a cloud file size: " + file.getName()); diff --git a/src/com/google/gct/testing/GoogleTestingListener.java b/src/com/google/gct/testing/CloudTestingListener.java index 9926968..0a5c704 100644 --- a/src/com/google/gct/testing/GoogleTestingListener.java +++ b/src/com/google/gct/testing/CloudTestingListener.java @@ -15,5 +15,5 @@ */ package com.google.gct.testing; -public class GoogleTestingListener { +public class CloudTestingListener { } diff --git a/src/com/google/gct/testing/CloudTestingUtils.java b/src/com/google/gct/testing/CloudTestingUtils.java index 1b30e09..be35290 100644 --- a/src/com/google/gct/testing/CloudTestingUtils.java +++ b/src/com/google/gct/testing/CloudTestingUtils.java @@ -15,7 +15,7 @@ */ package com.google.gct.testing; -import com.android.tools.idea.run.CloudTestConfiguration; +import com.android.tools.idea.run.CloudConfiguration; import com.intellij.notification.Notification; import com.intellij.notification.NotificationListener; import com.intellij.notification.NotificationType; @@ -44,8 +44,7 @@ public class CloudTestingUtils { private static final String SHOW_GOOGLE_CLOUD_TESTING_TIMESTAMPS = "show.google.cloud.testing.timestamps"; - private static final CloudTestConfigurationProviderImpl TESTING_CONFIGURATION_FACTORY = - new CloudTestConfigurationProviderImpl(); + private static final CloudConfigurationProviderImpl TESTING_CONFIGURATION_FACTORY = new CloudConfigurationProviderImpl(); //GCT-specific message names. public static final String SET_TEST_RUN_ID = "setTestRunId"; @@ -63,10 +62,10 @@ public class CloudTestingUtils { return Boolean.getBoolean(SHOW_GOOGLE_CLOUD_TESTING_TIMESTAMPS); } - public static CloudTestConfigurationImpl getConfigurationById(int id, AndroidFacet facet) { - for (CloudTestConfiguration configuration : TESTING_CONFIGURATION_FACTORY.getTestingConfigurations(facet)) { + public static CloudConfigurationImpl getConfigurationById(int id, AndroidFacet facet) { + for (CloudConfiguration configuration : TESTING_CONFIGURATION_FACTORY.getAllCloudConfigurations(facet)) { if (configuration.getId() == id) { - return (CloudTestConfigurationImpl) configuration; + return (CloudConfigurationImpl) configuration; } } return null; diff --git a/src/com/google/gct/testing/ConfigurationInstance.java b/src/com/google/gct/testing/ConfigurationInstance.java index b56c95a..3020a20 100644 --- a/src/com/google/gct/testing/ConfigurationInstance.java +++ b/src/com/google/gct/testing/ConfigurationInstance.java @@ -20,8 +20,8 @@ import com.google.common.base.Function; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.common.collect.Maps; +import com.google.gct.testing.dimension.CloudConfigurationDimension; import com.google.gct.testing.dimension.CloudTestingType; -import com.google.gct.testing.dimension.GoogleCloudTestingDimension; import java.util.*; import java.util.regex.Pattern; @@ -67,7 +67,7 @@ public class ConfigurationInstance { private static ConfigurationInstance parse(Function<CloudTestingType, String> typeToNameFunction, String delimiter, String input) { ConfigurationInstance result= new ConfigurationInstance(); ArrayList<CloudTestingType> allTypes = Lists.newArrayList(Iterables.concat( - CloudTestConfigurationProviderImpl.getAllDimensionTypes().values())); + CloudConfigurationProviderImpl.getAllDimensionTypes().values())); ImmutableMap<String,CloudTestingType> nameToTypeMap = Maps.uniqueIndex(allTypes, typeToNameFunction); @@ -79,7 +79,7 @@ public class ConfigurationInstance { private static void recordType(ConfigurationInstance result, CloudTestingType type) { String dimensionName = null; - for (Map.Entry<String, List<? extends CloudTestingType>> entry : CloudTestConfigurationProviderImpl.getAllDimensionTypes().entrySet()) { + for (Map.Entry<String, List<? extends CloudTestingType>> entry : CloudConfigurationProviderImpl.getAllDimensionTypes().entrySet()) { if (entry.getValue().contains(type)) { dimensionName = entry.getKey(); break; @@ -91,7 +91,7 @@ public class ConfigurationInstance { result.typesByDimensionName.put(dimensionName, type); } - public CloudTestingType getTypeForDimension(GoogleCloudTestingDimension dimension) { + public CloudTestingType getTypeForDimension(CloudConfigurationDimension dimension) { return typesByDimensionName.get(dimension.getDisplayName()); } diff --git a/src/com/google/gct/testing/GoogleCloudTestingCustomPersistentConfigurations.java b/src/com/google/gct/testing/GoogleCloudTestingCustomPersistentConfigurations.java deleted file mode 100644 index fa35022..0000000 --- a/src/com/google/gct/testing/GoogleCloudTestingCustomPersistentConfigurations.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * 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. - */ -package com.google.gct.testing; - -import com.intellij.openapi.components.*; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.module.ModuleServiceManager; -import com.intellij.openapi.project.Project; -import org.jetbrains.annotations.Nullable; - -@State( - name = "GoogleCloudTestingCustomPersistentConfigurations", - storages = { - @Storage(file = "$MODULE_FILE$") - } -) -public class GoogleCloudTestingCustomPersistentConfigurations implements PersistentStateComponent<GoogleCloudTestingPersistentState> { - - private GoogleCloudTestingPersistentState myGoogleCloudTestingPersistentState; - - protected GoogleCloudTestingCustomPersistentConfigurations() { - } - - public static GoogleCloudTestingCustomPersistentConfigurations getInstance(Module module) { - return ModuleServiceManager.getService(module, GoogleCloudTestingCustomPersistentConfigurations.class); - } - - @Nullable - @Override - public GoogleCloudTestingPersistentState getState() { - if (myGoogleCloudTestingPersistentState == null) { - myGoogleCloudTestingPersistentState = new GoogleCloudTestingPersistentState(); - } - return myGoogleCloudTestingPersistentState; - } - - @Override - public void loadState(GoogleCloudTestingPersistentState googleCloudTestingPersistenState) { - this.myGoogleCloudTestingPersistentState = googleCloudTestingPersistenState; - } -} diff --git a/src/com/google/gct/testing/GoogleCloudTestingDefaultPersistentConfigurations.java b/src/com/google/gct/testing/GoogleCloudTestingDefaultPersistentConfigurations.java deleted file mode 100644 index c21f867..0000000 --- a/src/com/google/gct/testing/GoogleCloudTestingDefaultPersistentConfigurations.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * 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. - */ -package com.google.gct.testing; - -import com.intellij.openapi.components.*; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.module.ModuleServiceManager; -import com.intellij.openapi.project.Project; -import org.jetbrains.annotations.Nullable; - -@State( - name = "GoogleCloudTestingDefaultPersistentConfigurations", - storages = { - @Storage(file = "$MODULE_FILE$") - } -) -public class GoogleCloudTestingDefaultPersistentConfigurations implements PersistentStateComponent<GoogleCloudTestingPersistentState> { - - private GoogleCloudTestingPersistentState myGoogleCloudTestingPersistentState; - - protected GoogleCloudTestingDefaultPersistentConfigurations() { - } - - public static GoogleCloudTestingDefaultPersistentConfigurations getInstance(Module module) { - return ModuleServiceManager.getService(module, GoogleCloudTestingDefaultPersistentConfigurations.class); - } - - @Nullable - @Override - public GoogleCloudTestingPersistentState getState() { - if (myGoogleCloudTestingPersistentState == null) { - myGoogleCloudTestingPersistentState = new GoogleCloudTestingPersistentState(); - } - return myGoogleCloudTestingPersistentState; - } - - @Override - public void loadState(GoogleCloudTestingPersistentState googleCloudPersistenState) { - this.myGoogleCloudTestingPersistentState = googleCloudPersistenState; - } -} diff --git a/src/com/google/gct/testing/ScreenshotComparisonDialog.java b/src/com/google/gct/testing/ScreenshotComparisonDialog.java index 9d8d76d..e1110e3 100644 --- a/src/com/google/gct/testing/ScreenshotComparisonDialog.java +++ b/src/com/google/gct/testing/ScreenshotComparisonDialog.java @@ -47,7 +47,7 @@ public class ScreenshotComparisonDialog { private final Project myProject; private final AbstractTestProxy testTreeRoot; - private final CloudTestConfigurationImpl configuration; + private final CloudConfigurationImpl configuration; private final ConfigurationInstance configurationInstance; @Nullable private final ConfigurationInstance anotherConfigurationInstance; private final List<TestName> allTests; @@ -76,7 +76,7 @@ public class ScreenshotComparisonDialog { public ScreenshotComparisonDialog(Project project, AbstractTestProxy testTreeRoot, - CloudTestConfigurationImpl configuration, + CloudConfigurationImpl configuration, ConfigurationInstance configurationInstance, @Nullable ConfigurationInstance anotherConfigurationInstance, List<TestName> allTests, diff --git a/src/com/google/gct/testing/ScreenshotComparisonPanel.java b/src/com/google/gct/testing/ScreenshotComparisonPanel.java index c52a06f..235f146 100644 --- a/src/com/google/gct/testing/ScreenshotComparisonPanel.java +++ b/src/com/google/gct/testing/ScreenshotComparisonPanel.java @@ -19,8 +19,8 @@ import com.android.annotations.Nullable; import com.google.common.base.Function; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import com.google.gct.testing.dimension.CloudConfigurationDimension; import com.google.gct.testing.dimension.CloudTestingType; -import com.google.gct.testing.dimension.GoogleCloudTestingDimension; import com.google.gct.testing.dimension.OrientationDimension; import com.google.gct.testing.results.GoogleCloudTestProxy; import com.google.gct.testing.ui.CopyImageToClipboard; @@ -56,9 +56,9 @@ public class ScreenshotComparisonPanel implements ScreenshotComparisonHeaderPane private enum StaticImageKind {LOADING, NO_IMAGE}; - public static final Function<GoogleCloudTestingTypeSelection, CloudTestingType> GET_SELECTED_TYPE = new Function<GoogleCloudTestingTypeSelection, CloudTestingType>() { + public static final Function<CloudConfigurationTypeSelection, CloudTestingType> GET_SELECTED_TYPE = new Function<CloudConfigurationTypeSelection, CloudTestingType>() { @Override - public CloudTestingType apply(GoogleCloudTestingTypeSelection input) { + public CloudTestingType apply(CloudConfigurationTypeSelection input) { return input.getType(); } }; @@ -67,7 +67,7 @@ public class ScreenshotComparisonPanel implements ScreenshotComparisonHeaderPane private final ScreenshotComparisonDialog parent; private final AbstractTestProxy testTreeRoot; - private final CloudTestConfigurationImpl configuration; + private final CloudConfigurationImpl configuration; private ConfigurationInstance selectedConfigurationInstance; private TestName currentTest; private int currentStep; @@ -82,7 +82,7 @@ public class ScreenshotComparisonPanel implements ScreenshotComparisonHeaderPane private final WipePanel wipePanel; - private final List<GoogleCloudTestingTypeSelection> myTypeSelections = new LinkedList<GoogleCloudTestingTypeSelection>(); + private final List<CloudConfigurationTypeSelection> myTypeSelections = new LinkedList<CloudConfigurationTypeSelection>(); private JLabel myImageLabel; private static final int MAX_IMAGE_WIDTH = 533; @@ -123,7 +123,7 @@ public class ScreenshotComparisonPanel implements ScreenshotComparisonHeaderPane public ScreenshotComparisonPanel(ScreenshotComparisonDialog parent, @Nullable ScreenshotComparisonPanel clonedPanel, - AbstractTestProxy testTreeRoot, CloudTestConfigurationImpl configuration, + AbstractTestProxy testTreeRoot, CloudConfigurationImpl configuration, ConfigurationInstance configurationInstance, TestName currentTest, int currentStep, Map<String, ConfigurationResult> results) { lock = this; @@ -175,7 +175,7 @@ public class ScreenshotComparisonPanel implements ScreenshotComparisonHeaderPane bagConstraints.ipadx = 5; int index = 0; - for (final GoogleCloudTestingDimension dimension : configuration.getDimensions()) { + for (final CloudConfigurationDimension dimension : configuration.getDimensions()) { JLabel label = new JLabel(dimension.getIcon()); label.setToolTipText(dimension.getDisplayName()); @@ -218,7 +218,7 @@ public class ScreenshotComparisonPanel implements ScreenshotComparisonHeaderPane }); myConfigurationChooserPanel.add(comboBox, bagConstraints); - myTypeSelections.add(new GoogleCloudTestingTypeSelection() { + myTypeSelections.add(new CloudConfigurationTypeSelection() { @Override public CloudTestingType getType() { return (CloudTestingType)comboBox.getSelectedItem(); @@ -227,7 +227,7 @@ public class ScreenshotComparisonPanel implements ScreenshotComparisonHeaderPane } else { final CloudTestingType type = Iterables.getOnlyElement(dimension.getEnabledTypes()); myConfigurationChooserPanel.add(new JLabel(" " + type.getResultsViewerDisplayName()), bagConstraints); - myTypeSelections.add(new GoogleCloudTestingTypeSelection() { + myTypeSelections.add(new CloudConfigurationTypeSelection() { @Override public CloudTestingType getType() { return type; @@ -525,6 +525,6 @@ public class ScreenshotComparisonPanel implements ScreenshotComparisonHeaderPane } } -interface GoogleCloudTestingTypeSelection { +interface CloudConfigurationTypeSelection { public CloudTestingType getType(); } diff --git a/src/com/google/gct/testing/ShowScreenshotsAction.java b/src/com/google/gct/testing/ShowScreenshotsAction.java index 2a90088..fe38be6 100644 --- a/src/com/google/gct/testing/ShowScreenshotsAction.java +++ b/src/com/google/gct/testing/ShowScreenshotsAction.java @@ -76,7 +76,7 @@ public class ShowScreenshotsAction extends AnAction { ConfigurationInstance configurationInstance = ConfigurationInstance.parseFromResultsViewerDisplayString(selectedConfigurationNode.getName()); Map<String,ConfigurationResult> results = - CloudTestConfigurationProviderImpl.getCloudResultsAdapter(rootNode.getTestRunId()).getResults(); + CloudConfigurationProviderImpl.getCloudResultsAdapter(rootNode.getTestRunId()).getResults(); if (results.get(configurationInstance.getEncodedString()).getScreenshotMetadata().isEmpty()) { showNoScreenshotsWarning(e); @@ -94,7 +94,7 @@ public class ShowScreenshotsAction extends AnAction { ScreenshotComparisonDialog dialog = new ScreenshotComparisonDialog( e.getData(PlatformDataKeys.PROJECT), rootNode, - CloudTestConfigurationProviderImpl.getSelectedGoogleCloudTestingConfiguration(rootNode.getTestRunId()), + CloudConfigurationProviderImpl.getSelectedCloudConfiguration(rootNode.getTestRunId()), configurationInstance, anotherConfigurationInstance, allTests, getTestNameForNode(selectedLeaf), results); dialog.showDialog(); diff --git a/src/com/google/gct/testing/TwoPanelTree.java b/src/com/google/gct/testing/TwoPanelTree.java index 683be7e..e6cae1f 100644 --- a/src/com/google/gct/testing/TwoPanelTree.java +++ b/src/com/google/gct/testing/TwoPanelTree.java @@ -16,9 +16,9 @@ package com.google.gct.testing; import com.google.common.base.Function; +import com.google.gct.testing.dimension.CloudConfigurationDimension; import com.google.gct.testing.dimension.CloudTestingType; -import com.google.gct.testing.dimension.GoogleCloudTestingDimension; -import com.google.gct.testing.dimension.GoogleCloudTestingTypeGroup; +import com.google.gct.testing.dimension.CloudTestingTypeGroup; import com.intellij.openapi.ui.Splitter; import com.intellij.ui.CheckboxTree; import com.intellij.ui.CheckedTreeNode; @@ -66,17 +66,17 @@ public class TwoPanelTree extends MouseAdapter implements ListSelectionListener, private final JPanel bottomPanel; // Trees - private Map<GoogleCloudTestingDimension,CheckboxTree> treeMap; + private Map<CloudConfigurationDimension,CheckboxTree> treeMap; private JBList list; // The configuration which we need to keep in sync with this view - private CloudTestConfigurationImpl configuration; + private CloudConfigurationImpl configuration; // Listeners List<TwoPanelTreeSelectionListener> listeners = new LinkedList<TwoPanelTreeSelectionListener>(); private JLabel myConfigurationCountLabel; - public TwoPanelTree(CloudTestConfigurationImpl configuration) { + public TwoPanelTree(CloudConfigurationImpl configuration) { this.configuration = configuration; myPanel = new JPanel(new BorderLayout()); myPanel.setPreferredSize(new Dimension(520, 240)); @@ -112,11 +112,11 @@ public class TwoPanelTree extends MouseAdapter implements ListSelectionListener, mySplitterPanel.add(mySplitter, BorderLayout.CENTER); myPanel.add(mySplitterPanel, BorderLayout.CENTER); - treeMap = new HashMap<GoogleCloudTestingDimension, CheckboxTree>(); + treeMap = new HashMap<CloudConfigurationDimension, CheckboxTree>(); list = new JBList(); // Add the dimensions - for (GoogleCloudTestingDimension dimension : configuration.getDimensions()) { + for (CloudConfigurationDimension dimension : configuration.getDimensions()) { addDimension(dimension); } @@ -204,7 +204,7 @@ public class TwoPanelTree extends MouseAdapter implements ListSelectionListener, } private void updateCurrentCheckboxTree(Function<CheckedTreeNode, Void> updateFunction) { - GoogleCloudTestingDimension selectedDimension = getSelectedDimension(); + CloudConfigurationDimension selectedDimension = getSelectedDimension(); CheckboxTree currentCheckboxTree = treeMap.get(selectedDimension); CheckedTreeNode rootNode = (CheckedTreeNode) currentCheckboxTree.getModel().getRoot(); updateNode(rootNode, updateFunction); @@ -239,7 +239,7 @@ public class TwoPanelTree extends MouseAdapter implements ListSelectionListener, return label; } - public void addDimension(GoogleCloudTestingDimension dimension) { + public void addDimension(CloudConfigurationDimension dimension) { // add this dimension as a list item listModel.addElement(dimension); @@ -257,8 +257,8 @@ public class TwoPanelTree extends MouseAdapter implements ListSelectionListener, tree.getSelectionModel().setSelectionMode(SINGLE_TREE_SELECTION); // Add each supported type to the tree. - List<? extends GoogleCloudTestingTypeGroup> supportedGroups = dimension.getSupportedGroups(); - for (GoogleCloudTestingTypeGroup group : supportedGroups) { + List<? extends CloudTestingTypeGroup> supportedGroups = dimension.getSupportedGroups(); + for (CloudTestingTypeGroup group : supportedGroups) { List<CloudTestingType> types = group.getTypes(); if (types.size() == 1 && !dimension.shouldBeAlwaysGrouped()) { addChildNode(rootNode, types.get(0), dimension); @@ -291,8 +291,8 @@ public class TwoPanelTree extends MouseAdapter implements ListSelectionListener, CloudTestingType cloudTestingType = (CloudTestingType)userObject; getTextRenderer().append(cloudTestingType.getConfigurationDialogDisplayName()); updateTreeState(tree, (CheckedTreeNode)value, cloudTestingType); - } else if (userObject instanceof GoogleCloudTestingTypeGroup) { - GoogleCloudTestingTypeGroup group = (GoogleCloudTestingTypeGroup)userObject; + } else if (userObject instanceof CloudTestingTypeGroup) { + CloudTestingTypeGroup group = (CloudTestingTypeGroup)userObject; getTextRenderer().append(group.getName()); CloudTestingType type = (CloudTestingType) ((CheckedTreeNode) ((DefaultMutableTreeNode)value).getChildAt(0)).getUserObject(); updateTreeState(tree, (CheckedTreeNode)value, type); @@ -305,8 +305,8 @@ public class TwoPanelTree extends MouseAdapter implements ListSelectionListener, //getTextRenderer().setForeground(Color.BLACK); } else { //getTextRenderer().setForeground(Color.LIGHT_GRAY); - GoogleCloudTestingDimension googleCloudTestingDimension = (GoogleCloudTestingDimension)((CheckedTreeNode) tree.getModel().getRoot()).getUserObject(); - boolean isChecked = googleCloudTestingDimension.getEnabledTypes().contains(cloudTestingType); + CloudConfigurationDimension cloudConfigurationDimension = (CloudConfigurationDimension)((CheckedTreeNode) tree.getModel().getRoot()).getUserObject(); + boolean isChecked = cloudConfigurationDimension.getEnabledTypes().contains(cloudTestingType); node.setChecked(isChecked); for (int childIndex = 0; childIndex < node.getChildCount(); childIndex++) { ((CheckedTreeNode) node.getChildAt(childIndex)).setChecked(isChecked); @@ -326,7 +326,7 @@ public class TwoPanelTree extends MouseAdapter implements ListSelectionListener, return myPanel; } - private void addChildNode(CheckedTreeNode parentNode, CloudTestingType type, GoogleCloudTestingDimension dimension) { + private void addChildNode(CheckedTreeNode parentNode, CloudTestingType type, CloudConfigurationDimension dimension) { CheckedTreeNode newNode = new CheckedTreeNode(type); parentNode.add(newNode); newNode.setChecked(dimension.getEnabledTypes().contains(type)); @@ -345,8 +345,8 @@ public class TwoPanelTree extends MouseAdapter implements ListSelectionListener, } } - private GoogleCloudTestingDimension getSelectedDimension() { - return (GoogleCloudTestingDimension) list.getModel().getElementAt(list.getSelectedIndex()); + private CloudConfigurationDimension getSelectedDimension() { + return (CloudConfigurationDimension) list.getModel().getElementAt(list.getSelectedIndex()); } public void addSelectionListener(TwoPanelTreeSelectionListener treeSelectionListener) { @@ -374,7 +374,7 @@ public class TwoPanelTree extends MouseAdapter implements ListSelectionListener, } private void updateState() { - GoogleCloudTestingDimension currentDimension = getSelectedDimension(); + CloudConfigurationDimension currentDimension = getSelectedDimension(); CheckboxTree currentTree = treeMap.get(currentDimension); if (currentTree == null || currentTree.getSelectionPath() == null) { @@ -393,7 +393,7 @@ public class TwoPanelTree extends MouseAdapter implements ListSelectionListener, listener.typeSelectionChanged(new TwoPanelTreeTypeSelectionEvent(currentDimension, clickedType)); } } else { - GoogleCloudTestingTypeGroup clickedGroup = (GoogleCloudTestingTypeGroup) userObject; + CloudTestingTypeGroup clickedGroup = (CloudTestingTypeGroup) userObject; if (selectedNode.isEnabled()) { for (int childIndex = 0; childIndex < selectedNode.getChildCount(); childIndex++) { CheckedTreeNode child = (CheckedTreeNode)selectedNode.getChildAt(childIndex); @@ -418,7 +418,7 @@ public class TwoPanelTree extends MouseAdapter implements ListSelectionListener, JLabel renderer = (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - GoogleCloudTestingDimension dimension = (GoogleCloudTestingDimension) value; + CloudConfigurationDimension dimension = (CloudConfigurationDimension) value; renderer.setIcon(dimension.getIcon()); renderer.setText(dimension.getDisplayName() + diff --git a/src/com/google/gct/testing/TwoPanelTreeDimensionSelectionEvent.java b/src/com/google/gct/testing/TwoPanelTreeDimensionSelectionEvent.java index 5ef1b48..ac86562 100644 --- a/src/com/google/gct/testing/TwoPanelTreeDimensionSelectionEvent.java +++ b/src/com/google/gct/testing/TwoPanelTreeDimensionSelectionEvent.java @@ -15,17 +15,17 @@ */ package com.google.gct.testing; -import com.google.gct.testing.dimension.GoogleCloudTestingDimension; +import com.google.gct.testing.dimension.CloudConfigurationDimension; class TwoPanelTreeDimensionSelectionEvent { - private GoogleCloudTestingDimension currentDimension; + private CloudConfigurationDimension currentDimension; - public TwoPanelTreeDimensionSelectionEvent(GoogleCloudTestingDimension currentDimension) { + public TwoPanelTreeDimensionSelectionEvent(CloudConfigurationDimension currentDimension) { this.currentDimension = currentDimension; } - public GoogleCloudTestingDimension getCurrentDimension() { + public CloudConfigurationDimension getCurrentDimension() { return currentDimension; } } diff --git a/src/com/google/gct/testing/TwoPanelTreeTypeGroupSelectionEvent.java b/src/com/google/gct/testing/TwoPanelTreeTypeGroupSelectionEvent.java index 610735c..832ca04 100644 --- a/src/com/google/gct/testing/TwoPanelTreeTypeGroupSelectionEvent.java +++ b/src/com/google/gct/testing/TwoPanelTreeTypeGroupSelectionEvent.java @@ -15,25 +15,25 @@ */ package com.google.gct.testing; -import com.google.gct.testing.dimension.GoogleCloudTestingDimension; -import com.google.gct.testing.dimension.GoogleCloudTestingTypeGroup; +import com.google.gct.testing.dimension.CloudConfigurationDimension; +import com.google.gct.testing.dimension.CloudTestingTypeGroup; class TwoPanelTreeTypeGroupSelectionEvent { - private GoogleCloudTestingDimension currentDimension; + private CloudConfigurationDimension currentDimension; - private GoogleCloudTestingTypeGroup clickedGroup; + private CloudTestingTypeGroup clickedGroup; - public TwoPanelTreeTypeGroupSelectionEvent(GoogleCloudTestingDimension currentDimension, GoogleCloudTestingTypeGroup clickedGroup) { + public TwoPanelTreeTypeGroupSelectionEvent(CloudConfigurationDimension currentDimension, CloudTestingTypeGroup clickedGroup) { this.currentDimension = currentDimension; this.clickedGroup = clickedGroup; } - public GoogleCloudTestingDimension getCurrentDimension() { + public CloudConfigurationDimension getCurrentDimension() { return currentDimension; } - public GoogleCloudTestingTypeGroup getGroup() { + public CloudTestingTypeGroup getGroup() { return clickedGroup; } } diff --git a/src/com/google/gct/testing/TwoPanelTreeTypeSelectionEvent.java b/src/com/google/gct/testing/TwoPanelTreeTypeSelectionEvent.java index b6107cb..ec750c2 100644 --- a/src/com/google/gct/testing/TwoPanelTreeTypeSelectionEvent.java +++ b/src/com/google/gct/testing/TwoPanelTreeTypeSelectionEvent.java @@ -16,20 +16,20 @@ package com.google.gct.testing; import com.google.gct.testing.dimension.CloudTestingType; -import com.google.gct.testing.dimension.GoogleCloudTestingDimension; +import com.google.gct.testing.dimension.CloudConfigurationDimension; class TwoPanelTreeTypeSelectionEvent { - private GoogleCloudTestingDimension currentDimension; + private CloudConfigurationDimension currentDimension; private CloudTestingType clickedType; - public TwoPanelTreeTypeSelectionEvent(GoogleCloudTestingDimension currentDimension, CloudTestingType clickedType) { + public TwoPanelTreeTypeSelectionEvent(CloudConfigurationDimension currentDimension, CloudTestingType clickedType) { this.currentDimension = currentDimension; this.clickedType = clickedType; } - public GoogleCloudTestingDimension getCurrentDimension() { + public CloudConfigurationDimension getCurrentDimension() { return currentDimension; } diff --git a/src/com/google/gct/testing/dimension/ApiDimension.java b/src/com/google/gct/testing/dimension/ApiDimension.java index 5e2cbf1..13191b6 100644 --- a/src/com/google/gct/testing/dimension/ApiDimension.java +++ b/src/com/google/gct/testing/dimension/ApiDimension.java @@ -24,7 +24,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Ordering; -import com.google.gct.testing.CloudTestConfigurationImpl; +import com.google.gct.testing.CloudConfigurationImpl; import icons.AndroidIcons; import org.jetbrains.android.facet.AndroidFacet; @@ -33,7 +33,7 @@ import java.util.*; import static com.google.gct.testing.launcher.CloudAuthenticator.getAndroidDeviceCatalog; -public class ApiDimension extends GoogleCloudTestingDimension { +public class ApiDimension extends CloudConfigurationDimension { public static final String DISPLAY_NAME = "Platform"; @@ -63,14 +63,14 @@ public class ApiDimension extends GoogleCloudTestingDimension { private final int minSdkVersion; - public ApiDimension(CloudTestConfigurationImpl googleCloudTestingConfiguration, AndroidFacet facet) { + public ApiDimension(CloudConfigurationImpl googleCloudTestingConfiguration, AndroidFacet facet) { super(googleCloudTestingConfiguration); minSdkVersion = facet.getAndroidModuleInfo().getMinSdkVersion().getApiLevel(); // facet.getManifest().getUsesSdks().get(0).getMinSdkVersion() would read the app's manifest min SDK rather than the global one. } @VisibleForTesting - public ApiDimension(CloudTestConfigurationImpl googleCloudTestingConfiguration, int minSdkVersion) { + public ApiDimension(CloudConfigurationImpl googleCloudTestingConfiguration, int minSdkVersion) { super(googleCloudTestingConfiguration); this.minSdkVersion = minSdkVersion; } diff --git a/src/com/google/gct/testing/dimension/GoogleCloudTestingDimension.java b/src/com/google/gct/testing/dimension/CloudConfigurationDimension.java index ed0d338..860a6de 100644 --- a/src/com/google/gct/testing/dimension/GoogleCloudTestingDimension.java +++ b/src/com/google/gct/testing/dimension/CloudConfigurationDimension.java @@ -18,13 +18,13 @@ package com.google.gct.testing.dimension; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; -import com.google.gct.testing.CloudTestConfigurationImpl; +import com.google.gct.testing.CloudConfigurationImpl; import javax.swing.*; import java.util.*; -public abstract class GoogleCloudTestingDimension { +public abstract class CloudConfigurationDimension { private static final long DISCOVERY_TEST_API_REFRESH_TIMEOUT = 5 * 60 * 1000; // 5 minutes @@ -37,11 +37,11 @@ public abstract class GoogleCloudTestingDimension { * The list of types that are currently enabled (use List rather than Set for comparison consistency). */ private List<CloudTestingType> enabledTypes = new LinkedList<CloudTestingType>(); - private CloudTestConfigurationImpl myGoogleCloudTestingConfiguration; + private CloudConfigurationImpl myCloudConfiguration; private Icon icon; - public GoogleCloudTestingDimension(CloudTestConfigurationImpl googleCloudTestingConfiguration) { - myGoogleCloudTestingConfiguration = googleCloudTestingConfiguration; + public CloudConfigurationDimension(CloudConfigurationImpl cloudConfiguration) { + myCloudConfiguration = cloudConfiguration; } static boolean shouldPollDiscoveryTestApi(String dimension) { @@ -64,18 +64,18 @@ public abstract class GoogleCloudTestingDimension { /** * Returns the list of type groups supported by the app and the backend for this dimension. */ - public List<? extends GoogleCloudTestingTypeGroup> getSupportedGroups() { - List<GoogleCloudTestingTypeGroup> result = new LinkedList<GoogleCloudTestingTypeGroup>(); + public List<? extends CloudTestingTypeGroup> getSupportedGroups() { + List<CloudTestingTypeGroup> result = new LinkedList<CloudTestingTypeGroup>(); for (CloudTestingType type : getSupportedDomain()) { - GoogleCloudTestingTypeGroup groupToAddTo = null; - for (GoogleCloudTestingTypeGroup group : result) { + CloudTestingTypeGroup groupToAddTo = null; + for (CloudTestingTypeGroup group : result) { if (type.getGroupName().equals(group.getName())) { groupToAddTo = group; break; } } if (groupToAddTo == null) { - groupToAddTo = new GoogleCloudTestingTypeGroup(type.getGroupName(), type.getGroupDescription()); + groupToAddTo = new CloudTestingTypeGroup(type.getGroupName(), type.getGroupDescription()); result.add(groupToAddTo); } groupToAddTo.addType(type); @@ -162,11 +162,11 @@ public abstract class GoogleCloudTestingDimension { } public boolean isEditable() { - return myGoogleCloudTestingConfiguration.isEditable(); + return myCloudConfiguration.isEditable(); } public void dimensionChanged() { - myGoogleCloudTestingConfiguration.dimensionChanged(this); + myCloudConfiguration.dimensionChanged(this); } private void checkIsEditable() { diff --git a/src/com/google/gct/testing/dimension/CloudTestingType.java b/src/com/google/gct/testing/dimension/CloudTestingType.java index 10bbbe8..19cb46c 100644 --- a/src/com/google/gct/testing/dimension/CloudTestingType.java +++ b/src/com/google/gct/testing/dimension/CloudTestingType.java @@ -18,7 +18,7 @@ package com.google.gct.testing.dimension; import java.util.Map; /** - * A GoogleCloudTestingDimension consists of a set of Types; concrete instantiations of a dimension. + * A {@link CloudTestingType} consists of a set of Types; concrete instantiations of a dimension. */ public abstract class CloudTestingType { diff --git a/src/com/google/gct/testing/dimension/GoogleCloudTestingTypeGroup.java b/src/com/google/gct/testing/dimension/CloudTestingTypeGroup.java index 66774db..c519bf5 100644 --- a/src/com/google/gct/testing/dimension/GoogleCloudTestingTypeGroup.java +++ b/src/com/google/gct/testing/dimension/CloudTestingTypeGroup.java @@ -18,14 +18,14 @@ package com.google.gct.testing.dimension; import java.util.LinkedList; import java.util.List; -public class GoogleCloudTestingTypeGroup { +public class CloudTestingTypeGroup { private final String name; private final String description; private final List<CloudTestingType> types = new LinkedList<CloudTestingType>(); - public GoogleCloudTestingTypeGroup(String name, String description) { + public CloudTestingTypeGroup(String name, String description) { this.name = name; this.description = description; } @@ -51,7 +51,7 @@ public class GoogleCloudTestingTypeGroup { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - GoogleCloudTestingTypeGroup that = (GoogleCloudTestingTypeGroup)o; + CloudTestingTypeGroup that = (CloudTestingTypeGroup)o; if (!name.equals(that.name)) return false; diff --git a/src/com/google/gct/testing/dimension/ConfigurationChangeEvent.java b/src/com/google/gct/testing/dimension/ConfigurationChangeEvent.java index e9d6967..34606fc 100644 --- a/src/com/google/gct/testing/dimension/ConfigurationChangeEvent.java +++ b/src/com/google/gct/testing/dimension/ConfigurationChangeEvent.java @@ -15,17 +15,17 @@ */ package com.google.gct.testing.dimension; -import com.google.gct.testing.CloudTestConfigurationImpl; +import com.google.gct.testing.CloudConfigurationImpl; public class ConfigurationChangeEvent { - private final CloudTestConfigurationImpl configuration; + private final CloudConfigurationImpl configuration; - public ConfigurationChangeEvent(CloudTestConfigurationImpl configuration) { + public ConfigurationChangeEvent(CloudConfigurationImpl configuration) { this.configuration = configuration; } - public CloudTestConfigurationImpl getConfiguration() { + public CloudConfigurationImpl getConfiguration() { return configuration; } } diff --git a/src/com/google/gct/testing/dimension/DeviceDimension.java b/src/com/google/gct/testing/dimension/DeviceDimension.java index f65e6b5..aef09c2 100644 --- a/src/com/google/gct/testing/dimension/DeviceDimension.java +++ b/src/com/google/gct/testing/dimension/DeviceDimension.java @@ -18,7 +18,7 @@ package com.google.gct.testing.dimension; import com.google.api.services.testing.model.AndroidDeviceCatalog; import com.google.api.services.testing.model.AndroidModel; import com.google.common.collect.ImmutableList; -import com.google.gct.testing.CloudTestConfigurationImpl; +import com.google.gct.testing.CloudConfigurationImpl; import icons.AndroidIcons; import javax.swing.*; @@ -28,7 +28,7 @@ import java.util.Map; import static com.google.gct.testing.launcher.CloudAuthenticator.getAndroidDeviceCatalog; -public class DeviceDimension extends GoogleCloudTestingDimension { +public class DeviceDimension extends CloudConfigurationDimension { public static final String DISPLAY_NAME = "Device"; @@ -42,7 +42,7 @@ public class DeviceDimension extends GoogleCloudTestingDimension { private static ImmutableList<Device> FULL_DOMAIN; - public DeviceDimension(CloudTestConfigurationImpl googleCloudTestingConfiguration) { + public DeviceDimension(CloudConfigurationImpl googleCloudTestingConfiguration) { super(googleCloudTestingConfiguration); } diff --git a/src/com/google/gct/testing/dimension/LanguageDimension.java b/src/com/google/gct/testing/dimension/LanguageDimension.java index fa60fff..21917ff 100644 --- a/src/com/google/gct/testing/dimension/LanguageDimension.java +++ b/src/com/google/gct/testing/dimension/LanguageDimension.java @@ -23,7 +23,7 @@ import com.google.common.base.Predicate; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; -import com.google.gct.testing.CloudTestConfigurationImpl; +import com.google.gct.testing.CloudConfigurationImpl; import com.intellij.openapi.vfs.VirtualFile; import icons.AndroidIcons; import org.jetbrains.android.facet.AndroidFacet; @@ -35,7 +35,7 @@ import java.util.regex.Pattern; import static com.google.gct.testing.launcher.CloudAuthenticator.getAndroidDeviceCatalog; -public class LanguageDimension extends GoogleCloudTestingDimension { +public class LanguageDimension extends CloudConfigurationDimension { public static final String DISPLAY_NAME = "Locale"; @@ -52,7 +52,7 @@ public class LanguageDimension extends GoogleCloudTestingDimension { private final List<Language> supportedLanguages; - public LanguageDimension(CloudTestConfigurationImpl googleCloudTestingConfiguration, AndroidFacet facet) { + public LanguageDimension(CloudConfigurationImpl googleCloudTestingConfiguration, AndroidFacet facet) { super(googleCloudTestingConfiguration); final List<String> locales = getLocales(facet); supportedLanguages = Lists.newArrayList(Iterables.filter(getFullDomain(), new Predicate<Language>() { @@ -74,7 +74,7 @@ public class LanguageDimension extends GoogleCloudTestingDimension { } @VisibleForTesting - public LanguageDimension(CloudTestConfigurationImpl googleCloudTestingConfiguration, final List<String> locales) { + public LanguageDimension(CloudConfigurationImpl googleCloudTestingConfiguration, final List<String> locales) { super(googleCloudTestingConfiguration); supportedLanguages = Lists.newArrayList(Iterables.filter(getFullDomain(), new Predicate<Language>() { @Override diff --git a/src/com/google/gct/testing/dimension/OrientationDimension.java b/src/com/google/gct/testing/dimension/OrientationDimension.java index 2b7a499..4d7ec04 100644 --- a/src/com/google/gct/testing/dimension/OrientationDimension.java +++ b/src/com/google/gct/testing/dimension/OrientationDimension.java @@ -18,7 +18,7 @@ package com.google.gct.testing.dimension; import com.google.api.services.testing.model.AndroidDeviceCatalog; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.gct.testing.CloudTestConfigurationImpl; +import com.google.gct.testing.CloudConfigurationImpl; import icons.AndroidIcons; import javax.swing.*; @@ -26,7 +26,7 @@ import java.util.List; import static com.google.gct.testing.launcher.CloudAuthenticator.getAndroidDeviceCatalog; -public class OrientationDimension extends GoogleCloudTestingDimension { +public class OrientationDimension extends CloudConfigurationDimension { public static final String DISPLAY_NAME = "Orientation"; @@ -35,7 +35,7 @@ public class OrientationDimension extends GoogleCloudTestingDimension { private static ImmutableList<Orientation> FULL_DOMAIN; - public OrientationDimension(CloudTestConfigurationImpl googleCloudTestingConfiguration) { + public OrientationDimension(CloudConfigurationImpl googleCloudTestingConfiguration) { super(googleCloudTestingConfiguration); } diff --git a/src/com/google/gct/testing/launcher/CloudTestsLauncher.java b/src/com/google/gct/testing/launcher/CloudTestsLauncher.java index df49b12..cdfc7ad 100644 --- a/src/com/google/gct/testing/launcher/CloudTestsLauncher.java +++ b/src/com/google/gct/testing/launcher/CloudTestsLauncher.java @@ -23,7 +23,7 @@ import com.google.api.services.testing.model.*; import com.google.api.services.toolresults.model.History; import com.google.common.base.Function; import com.google.common.collect.Lists; -import com.google.gct.testing.CloudTestConfigurationImpl; +import com.google.gct.testing.CloudConfigurationImpl; import com.google.gct.testing.CloudTestingUtils; import com.google.gct.testing.dimension.CloudTestingType; import org.apache.http.NameValuePair; @@ -110,7 +110,7 @@ public class CloudTestsLauncher { */ public static TestMatrix triggerTestApi( String cloudProjectId, String bucketGcsPath, String appApkGcsPath, String testApkGcsPath, String testSpecification, - String instrumentationTestRunner, CloudTestConfigurationImpl cloudTestConfiguration, String appPackage, String testPackage) { + String instrumentationTestRunner, CloudConfigurationImpl cloudTestConfiguration, String appPackage, String testPackage) { if (instrumentationTestRunner.isEmpty()) { instrumentationTestRunner = TEST_RUNNER_CLASS; diff --git a/src/com/google/gct/testing/results/GoogleCloudTestResultsConnectionUtil.java b/src/com/google/gct/testing/results/GoogleCloudTestResultsConnectionUtil.java index 1a37138..495b207 100644 --- a/src/com/google/gct/testing/results/GoogleCloudTestResultsConnectionUtil.java +++ b/src/com/google/gct/testing/results/GoogleCloudTestResultsConnectionUtil.java @@ -49,7 +49,7 @@ public class GoogleCloudTestResultsConnectionUtil { * and attaches it to given Process handler. * * You can use this method in run configuration's CommandLineState. You should - * just override "execute" method of your custom command line state and return + * just override "executeCloudMatrixTests" method of your custom command line state and return * test runner's console. * * NB: For debug purposes please enable "debug mode". In this mode test runner will also validate @@ -61,7 +61,7 @@ public class GoogleCloudTestResultsConnectionUtil { * @param processHandler Process handler * @param consoleProperties Console properties for test console actions * @return Console view - * @throws com.intellij.execution.ExecutionException If IDEA cannot execute process this Exception will + * @throws com.intellij.execution.ExecutionException If IDEA cannot executeCloudMatrixTests process this Exception will * be caught and shown in error message box */ public static BaseTestsOutputConsoleView createAndAttachConsole(@NotNull final String testFrameworkName, @@ -144,7 +144,7 @@ public class GoogleCloudTestResultsConnectionUtil { * and attaches it to given Process handler. * * You can use this method in run configuration's CommandLineState. You should - * just override "execute" method of your custom command line state and return + * just override "executeCloudMatrixTests" method of your custom command line state and return * test runner's console. * * E.g: @@ -154,7 +154,7 @@ public class GoogleCloudTestResultsConnectionUtil { * // ... * * @Override - * public ExecutionResult execute(@NotNull final Executor executor, + * public ExecutionResult executeCloudMatrixTests(@NotNull final Executor executor, * @NotNull final ProgramRunner runner) throws ExecutionException { * * final ProcessHandler processHandler = startProcess(); @@ -182,7 +182,7 @@ public class GoogleCloudTestResultsConnectionUtil { * @param config User run configuration settings * @param executor Executor * @return Console view - * @throws com.intellij.execution.ExecutionException If IDEA cannot execute process this Exception will + * @throws com.intellij.execution.ExecutionException If IDEA cannot executeCloudMatrixTests process this Exception will * be caught and shown in error message box */ public static ConsoleView createAndAttachConsole(@NotNull final String testFrameworkName, @NotNull final ProcessHandler processHandler, diff --git a/src/com/google/gct/testing/results/GoogleCloudTestResultsViewer.java b/src/com/google/gct/testing/results/GoogleCloudTestResultsViewer.java index 07b9708..882e62d 100644 --- a/src/com/google/gct/testing/results/GoogleCloudTestResultsViewer.java +++ b/src/com/google/gct/testing/results/GoogleCloudTestResultsViewer.java @@ -41,7 +41,7 @@ public interface GoogleCloudTestResultsViewer extends Disposable { void setShowStatisticForProxyHandler(GoogleCloudTestingPropagateSelectionHandler handler); /** - * If handler for statistics was set this method will execute it + * If handler for statistics was set this method will executeCloudMatrixTests it */ void showStatisticsForSelectedProxy(); diff --git a/testSrc/com/google/gct/testing/GoogleCloudTestingConfigurationImplTest.java b/testSrc/com/google/gct/testing/CloudTestingConfigurationImplTest.java index 06ab2bf..b7d9710 100644 --- a/testSrc/com/google/gct/testing/GoogleCloudTestingConfigurationImplTest.java +++ b/testSrc/com/google/gct/testing/CloudTestingConfigurationImplTest.java @@ -28,14 +28,14 @@ import java.util.List; import static java.util.Arrays.asList; import static org.junit.Assert.assertEquals; -public class GoogleCloudTestingConfigurationImplTest { +public class CloudTestingConfigurationImplTest { @Test public void testConfigurationExpansion() throws IOException, ConfigurationException { //TODO: Will not run anymore since now it requires connecting to the remote API. - //CloudTestConfigurationImpl - // configuration = new CloudTestConfigurationImpl("TestConfiguration", 8, asList("en", "de", "fr", "ro", "ru", "uk")); + //CloudConfigurationImpl + // configuration = new CloudConfigurationImpl("TestConfiguration", 8, asList("en", "de", "fr", "ro", "ru", "uk")); //configuration.deviceDimension.enable(DeviceDimension.getFullDomain(), asList("Nexus5", "Nexus7")); //configuration.apiDimension.enable(ApiDimension.getFullDomain(), asList("19", "18")); //configuration.languageDimension.enable(LanguageDimension.getFullDomain(), asList("en", "de", "fr")); |