summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStas Negara <snegara@google.com>2015-05-21 14:39:44 -0700
committerStas Negara <snegara@google.com>2015-05-21 16:14:25 -0700
commit82c2340fe3a1daba89edb239958b0ba09e2f5587 (patch)
tree4d318fded370914c76cb1af4cc1c77c8ec016b89
parentc5e0c3d74500c5825b01e3d312caad3f5926bdb7 (diff)
downloadtesting-82c2340fe3a1daba89edb239958b0ba09e2f5587.tar.gz
Add user activity tracking.
Change-Id: I282179816a9ccd6bfd139e2f266dbd948dd76af8
-rw-r--r--src/com/google/gct/testing/CloudConfigurationChooserDialog.java6
-rw-r--r--src/com/google/gct/testing/CloudConfigurationProviderImpl.java6
-rw-r--r--src/com/google/gct/testing/CloudTestingUtils.java4
-rw-r--r--src/com/google/gct/testing/DebugConfigurationAction.java5
-rw-r--r--src/com/google/gct/testing/ScreenshotComparisonDialog.java13
-rw-r--r--src/com/google/gct/testing/ScreenshotComparisonPanel.java3
-rw-r--r--src/com/google/gct/testing/ShowScreenshotsAction.java7
-rw-r--r--src/com/google/gct/testing/util/CloudTestingTracking.java37
8 files changed, 78 insertions, 3 deletions
diff --git a/src/com/google/gct/testing/CloudConfigurationChooserDialog.java b/src/com/google/gct/testing/CloudConfigurationChooserDialog.java
index 830e02c..7c4028c 100644
--- a/src/com/google/gct/testing/CloudConfigurationChooserDialog.java
+++ b/src/com/google/gct/testing/CloudConfigurationChooserDialog.java
@@ -17,11 +17,13 @@ package com.google.gct.testing;
import com.android.annotations.Nullable;
import com.android.tools.idea.run.CloudConfiguration.Kind;
+import com.android.tools.idea.stats.UsageTracker;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.gct.testing.dimension.ConfigurationChangeEvent;
import com.google.gct.testing.dimension.ConfigurationChangeListener;
+import com.google.gct.testing.util.CloudTestingTracking;
import com.intellij.execution.ExecutionBundle;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.AnAction;
@@ -110,8 +112,12 @@ public class CloudConfigurationChooserDialog extends DialogWrapper implements Co
if (configurationKind == SINGLE_DEVICE) {
setTitle("Single Device Configurations");
+ UsageTracker.getInstance().trackEvent(CloudTestingTracking.CLOUD_TESTING, CloudTestingTracking.CONFIGURE_CLOUD_DEVICE,
+ CloudTestingTracking.SESSION_LABEL, null);
} else {
setTitle("Matrix Configurations");
+ UsageTracker.getInstance().trackEvent(CloudTestingTracking.CLOUD_TESTING, CloudTestingTracking.CONFIGURE_MATRIX,
+ CloudTestingTracking.SESSION_LABEL, null);
}
getOKAction().setEnabled(true);
diff --git a/src/com/google/gct/testing/CloudConfigurationProviderImpl.java b/src/com/google/gct/testing/CloudConfigurationProviderImpl.java
index ffc46aa..8b3a53e 100644
--- a/src/com/google/gct/testing/CloudConfigurationProviderImpl.java
+++ b/src/com/google/gct/testing/CloudConfigurationProviderImpl.java
@@ -21,6 +21,7 @@ import com.android.tools.idea.run.CloudConfiguration.Kind;
import com.android.tools.idea.run.CloudConfigurationProvider;
import com.android.tools.idea.sdk.IdeSdks;
//import com.glavsoft.viewer.Viewer;
+import com.android.tools.idea.stats.UsageTracker;
import com.google.api.client.util.Maps;
import com.google.api.client.util.Sets;
import com.google.api.services.storage.Storage;
@@ -42,6 +43,7 @@ import com.google.gct.testing.launcher.CloudTestsLauncher;
import com.google.gct.testing.results.GoogleCloudTestListener;
import com.google.gct.testing.results.GoogleCloudTestResultsConnectionUtil;
import com.google.gct.testing.results.GoogleCloudTestingResultParser;
+import com.google.gct.testing.util.CloudTestingTracking;
import com.intellij.execution.DefaultExecutionResult;
import com.intellij.execution.ExecutionException;
import com.intellij.execution.ExecutionResult;
@@ -274,6 +276,8 @@ public class CloudConfigurationProviderImpl extends CloudConfigurationProvider {
@Override
public void launchCloudDevice(int selectedConfigurationId, @NotNull String cloudProjectId, @NotNull AndroidFacet facet) {
+ UsageTracker.getInstance()
+ .trackEvent(CloudTestingTracking.CLOUD_TESTING, CloudTestingTracking.LAUNCH_CLOUD_DEVICE, CloudTestingTracking.SESSION_LABEL, null);
CloudConfigurationImpl cloudConfiguration = CloudTestingUtils.getConfigurationById(selectedConfigurationId, facet);
@@ -416,6 +420,8 @@ public class CloudConfigurationProviderImpl extends CloudConfigurationProvider {
@Override
public ExecutionResult executeCloudMatrixTests(int selectedConfigurationId, String cloudProjectId, AndroidRunningState runningState,
Executor executor) throws ExecutionException {
+ UsageTracker.getInstance()
+ .trackEvent(CloudTestingTracking.CLOUD_TESTING, CloudTestingTracking.RUN_TEST_MATRIX, CloudTestingTracking.SESSION_LABEL, null);
Project project = runningState.getFacet().getModule().getProject();
diff --git a/src/com/google/gct/testing/CloudTestingUtils.java b/src/com/google/gct/testing/CloudTestingUtils.java
index d1ed7a9..6b6abc3 100644
--- a/src/com/google/gct/testing/CloudTestingUtils.java
+++ b/src/com/google/gct/testing/CloudTestingUtils.java
@@ -16,6 +16,8 @@
package com.google.gct.testing;
import com.android.tools.idea.run.CloudConfiguration;
+import com.android.tools.idea.stats.UsageTracker;
+import com.google.gct.testing.util.CloudTestingTracking;
import com.intellij.icons.AllIcons;
import com.intellij.notification.Notification;
import com.intellij.notification.NotificationListener;
@@ -126,6 +128,8 @@ public class CloudTestingUtils {
+ ">Report this issue</a> (please copy/paste the text below into the form)<br><br>"
+ getDetailedErrorMessage(errorMessage.substring(newLineIndex + 1)) + "</html>"
: "No details...";
+ UsageTracker.getInstance().trackEvent(CloudTestingTracking.CLOUD_TESTING, CloudTestingTracking.BACKEND_ERROR,
+ CloudTestingTracking.SESSION_LABEL + "|" + userErrorMessage, null);
showCascadingErrorMessages(project, errorDialogTitle, userErrorMessage, detailedErrorMessage);
}
diff --git a/src/com/google/gct/testing/DebugConfigurationAction.java b/src/com/google/gct/testing/DebugConfigurationAction.java
index cbea10c..81c7c79 100644
--- a/src/com/google/gct/testing/DebugConfigurationAction.java
+++ b/src/com/google/gct/testing/DebugConfigurationAction.java
@@ -17,9 +17,11 @@ package com.google.gct.testing;
import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.IDevice;
+import com.android.tools.idea.stats.UsageTracker;
import com.google.gct.testing.results.GoogleCloudTestProxy.GoogleCloudRootTestProxy;
import com.google.gct.testing.results.GoogleCloudTestTreeView;
import com.google.gct.testing.results.GoogleCloudTestingResultsForm;
+import com.google.gct.testing.util.CloudTestingTracking;
import com.intellij.execution.ExecutionException;
import com.intellij.execution.RunnerRegistry;
import com.intellij.execution.configurations.RunProfile;
@@ -83,6 +85,9 @@ public class DebugConfigurationAction extends AnAction {
assert !isRootNode(selectedNode); // The action should have been disabled for the root node.
+ UsageTracker.getInstance().trackEvent(
+ CloudTestingTracking.CLOUD_TESTING, CloudTestingTracking.DEBUG_FROM_RESULTS, CloudTestingTracking.SESSION_LABEL, null);
+
String configurationName;
String className = null;
String methodName = null;
diff --git a/src/com/google/gct/testing/ScreenshotComparisonDialog.java b/src/com/google/gct/testing/ScreenshotComparisonDialog.java
index e1110e3..f16e27f 100644
--- a/src/com/google/gct/testing/ScreenshotComparisonDialog.java
+++ b/src/com/google/gct/testing/ScreenshotComparisonDialog.java
@@ -15,6 +15,7 @@
*/
package com.google.gct.testing;
+import com.android.tools.idea.stats.UsageTracker;
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
import com.google.common.collect.Ordering;
@@ -22,6 +23,7 @@ import com.google.gct.testing.ui.AddCompareScreenshotPanel;
import com.google.gct.testing.ui.AddScreenshotListener;
import com.google.gct.testing.ui.WipePanel;
import com.google.gct.testing.ui.WipePanelCallback;
+import com.google.gct.testing.util.CloudTestingTracking;
import com.intellij.execution.testframework.AbstractTestProxy;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.AnAction;
@@ -71,7 +73,7 @@ public class ScreenshotComparisonDialog {
private AddCompareScreenshotPanel addScreenshotPanel;
private ActionButton myDecrementStepButton;
private ActionButton myIncrementStepButton;
- private Function<ConfigurationResult,String> getName;
+ private volatile int loadedScreenshotsCount = 0;
public ScreenshotComparisonDialog(Project project,
@@ -151,6 +153,9 @@ public class ScreenshotComparisonDialog {
updateMaxStep();
updateScreenshotName();
builder.show();
+
+ UsageTracker.getInstance().trackEvent(CloudTestingTracking.CLOUD_TESTING, CloudTestingTracking.COMPARE_SCREENSHOTS_OPENED,
+ CloudTestingTracking.SESSION_LABEL, loadedScreenshotsCount);
}
public Window getWindow() {
@@ -339,4 +344,10 @@ public class ScreenshotComparisonDialog {
notifyHeaderListenersAboutStep(true);
}
}
+
+ public void incrementLoadedScreenshotsCount() {
+ synchronized (this) {
+ loadedScreenshotsCount++;
+ }
+ }
}
diff --git a/src/com/google/gct/testing/ScreenshotComparisonPanel.java b/src/com/google/gct/testing/ScreenshotComparisonPanel.java
index 235f146..52dc124 100644
--- a/src/com/google/gct/testing/ScreenshotComparisonPanel.java
+++ b/src/com/google/gct/testing/ScreenshotComparisonPanel.java
@@ -323,6 +323,9 @@ public class ScreenshotComparisonPanel implements ScreenshotComparisonHeaderPane
@Override
public void run() {
loadedImage = configurationResult.getScreenshotForTestAndStep(test, step); // A long-running operation.
+ if (loadedImage != null) {
+ parent.incrementLoadedScreenshotsCount();
+ }
if (isObsolete()) {
return;
}
diff --git a/src/com/google/gct/testing/ShowScreenshotsAction.java b/src/com/google/gct/testing/ShowScreenshotsAction.java
index 3d9ccb2..20a1d93 100644
--- a/src/com/google/gct/testing/ShowScreenshotsAction.java
+++ b/src/com/google/gct/testing/ShowScreenshotsAction.java
@@ -15,20 +15,20 @@
*/
package com.google.gct.testing;
+import com.android.tools.idea.stats.UsageTracker;
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
-import com.google.gct.testing.results.GoogleCloudTestProxy;
import com.google.gct.testing.results.GoogleCloudTestProxy.GoogleCloudRootTestProxy;
import com.google.gct.testing.results.GoogleCloudTestResultsViewer;
import com.google.gct.testing.results.GoogleCloudTestTreeView;
import com.google.gct.testing.results.GoogleCloudTestingResultsForm;
+import com.google.gct.testing.util.CloudTestingTracking;
import com.intellij.execution.testframework.AbstractTestProxy;
import com.intellij.icons.AllIcons;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
-import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.ui.MessageType;
import org.jetbrains.annotations.Nullable;
@@ -58,6 +58,9 @@ public class ShowScreenshotsAction extends AnAction {
@Override
public void actionPerformed(final AnActionEvent e) {
+ UsageTracker.getInstance().trackEvent(
+ CloudTestingTracking.CLOUD_TESTING, CloudTestingTracking.COMPARE_SCREENSHOTS_CLICKED, CloudTestingTracking.SESSION_LABEL, null);
+
final GoogleCloudTestTreeView sender = e.getData(GoogleCloudTestTreeView.CLOUD_TEST_RUNNER_VIEW);
if (sender == null) {
return;
diff --git a/src/com/google/gct/testing/util/CloudTestingTracking.java b/src/com/google/gct/testing/util/CloudTestingTracking.java
new file mode 100644
index 0000000..fa7470c
--- /dev/null
+++ b/src/com/google/gct/testing/util/CloudTestingTracking.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2015 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.util;
+
+import java.util.UUID;
+
+public class CloudTestingTracking {
+
+ // categories
+ public static final String CLOUD_TESTING = "com.google.cloud.testing";
+
+ // actions
+ public static final String RUN_TEST_MATRIX = "run.test.matrix";
+ public static final String LAUNCH_CLOUD_DEVICE = "launch.cloud.device";
+ public static final String COMPARE_SCREENSHOTS_CLICKED = "compare.screenshots.clicked";
+ public static final String COMPARE_SCREENSHOTS_OPENED = "compare.screenshots.opened";
+ public static final String DEBUG_FROM_RESULTS = "debug.from.results";
+ public static final String BACKEND_ERROR = "backend.error";
+ public static final String CONFIGURE_MATRIX = "configure.matrix";
+ public static final String CONFIGURE_CLOUD_DEVICE = "configure.cloud.device";
+
+ // labels
+ public static final String SESSION_LABEL = UUID.randomUUID().toString();
+}