aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCollector.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCollector.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCollector.java136
1 files changed, 136 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCollector.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCollector.java
new file mode 100644
index 000000000..32c5ef81e
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCollector.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
+ *
+ * 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.android.ide.eclipse.adt.internal.launch.junit.runtime;
+
+import com.android.ddmlib.testrunner.ITestRunListener;
+import com.android.ddmlib.testrunner.TestIdentifier;
+
+import java.util.Map;
+
+/**
+ * Collects info about tests to be executed by listening to the results of an Android test run.
+ */
+class TestCollector implements ITestRunListener {
+ private final String mDeviceName;
+ private final TestSuiteReference mDeviceSuiteRef;
+
+ private int mTotalTestCount;
+ /** test name to test suite reference map. */
+
+ private String mErrorMessage = null;
+
+ TestCollector(String deviceName) {
+ mDeviceName = deviceName;
+ mDeviceSuiteRef = new TestSuiteReference(deviceName);
+
+ mTotalTestCount = 0;
+ }
+
+ @Override
+ public synchronized void testEnded(TestIdentifier test, Map<String, String> testMetrics) {
+ // ignore
+ }
+
+ /* (non-Javadoc)
+ * @see com.android.ddmlib.testrunner.ITestRunListener#testFailed(com.android.ddmlib.testrunner.TestIdentifier, java.lang.String)
+ */
+ @Override
+ public synchronized void testFailed(TestIdentifier test, String trace) {
+ // ignore - should be impossible since this is only collecting test information
+ }
+
+ /* (non-Javadoc)
+ * @see com.android.ddmlib.testrunner.ITestRunListener#testIgnored(com.android.ddmlib.testrunner.TestIdentifier)
+ */
+ @Override
+ public synchronized void testIgnored(TestIdentifier test) {
+ // ignore - should be impossible since this is only collecting test information
+ }
+
+ /* (non-Javadoc)
+ * @see com.android.ddmlib.testrunner.ITestRunListener#testAssumptionFailure(com.android.ddmlib.testrunner.TestIdentifier, java.lang.String)
+ */
+ @Override
+ public synchronized void testAssumptionFailure(TestIdentifier test, String trace) {
+ // ignore - should be impossible since this is only collecting test information
+ }
+
+ /* (non-Javadoc)
+ * @see com.android.ddmlib.testrunner.ITestRunListener#testRunEnded(long, Map<String, String>)
+ */
+ @Override
+ public synchronized void testRunEnded(long elapsedTime, Map<String, String> runMetrics) {
+ // ignore
+ }
+
+ /* (non-Javadoc)
+ * @see com.android.ddmlib.testrunner.ITestRunListener#testRunFailed(java.lang.String)
+ */
+ @Override
+ public synchronized void testRunFailed(String errorMessage) {
+ mErrorMessage = errorMessage;
+ }
+
+ /* (non-Javadoc)
+ * @see com.android.ddmlib.testrunner.ITestRunListener#testRunStarted(int)
+ */
+ @Override
+ public synchronized void testRunStarted(String ignoredRunName, int testCount) {
+ mTotalTestCount = testCount;
+ }
+
+ /* (non-Javadoc)
+ * @see com.android.ddmlib.testrunner.ITestRunListener#testRunStopped(long)
+ */
+ @Override
+ public synchronized void testRunStopped(long elapsedTime) {
+ // ignore
+ }
+
+ /* (non-Javadoc)
+ * @see com.android.ddmlib.testrunner.ITestRunListener#testStarted(com.android.ddmlib.testrunner.TestIdentifier)
+ */
+ @Override
+ public synchronized void testStarted(TestIdentifier test) {
+ TestSuiteReference suiteRef = mDeviceSuiteRef.getTestSuite(test.getClassName());
+ if (suiteRef == null) {
+ suiteRef = new TestSuiteReference(test.getClassName());
+ mDeviceSuiteRef.addTest(suiteRef);
+ }
+
+ suiteRef.addTest(new TestCaseReference(mDeviceName, test));
+ }
+
+ /**
+ * Returns the total test count in the test run.
+ */
+ public synchronized int getTestCaseCount() {
+ return mTotalTestCount;
+ }
+
+ /**
+ * Returns the error message that was reported when collecting test info.
+ * Returns <code>null</code> if no error occurred.
+ */
+ public synchronized String getErrorMessage() {
+ return mErrorMessage;
+ }
+
+ public TestSuiteReference getDeviceSuite() {
+ return mDeviceSuiteRef;
+ }
+}