aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime
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')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/AndroidJUnitLaunchInfo.java148
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/AndroidTestReference.java65
-rwxr-xr-xeclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/RemoteAdtTestRunner.java524
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCaseReference.java67
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCollector.java136
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestSuiteReference.java92
6 files changed, 0 insertions, 1032 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/AndroidJUnitLaunchInfo.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/AndroidJUnitLaunchInfo.java
deleted file mode 100644
index 08702f4e2..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/AndroidJUnitLaunchInfo.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * 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.IDevice;
-import com.android.ddmlib.testrunner.IRemoteAndroidTestRunner.TestSize;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.debug.core.ILaunch;
-
-import java.util.Collection;
-import java.util.Collections;
-
-/**
- * Contains info about Android JUnit launch
- */
-public class AndroidJUnitLaunchInfo {
- private final IProject mProject;
- private final String mAppPackage;
- private final String mRunner;
-
- private boolean mDebugMode = false;
- private Collection<IDevice> mDevices = Collections.EMPTY_LIST;
- private String mTestPackage = null;
- private String mTestClass = null;
- private String mTestMethod = null;
- private ILaunch mLaunch = null;
- private TestSize mTestSize = null;
-
- public AndroidJUnitLaunchInfo(IProject project, String appPackage, String runner) {
- mProject = project;
- mAppPackage = appPackage;
- mRunner = runner;
- }
-
- public IProject getProject() {
- return mProject;
- }
-
- public String getAppPackage() {
- return mAppPackage;
- }
-
- public String getRunner() {
- return mRunner;
- }
-
- public boolean isDebugMode() {
- return mDebugMode;
- }
-
- public void setDebugMode(boolean debugMode) {
- mDebugMode = debugMode;
- }
-
- public TestSize getTestSize() {
- return mTestSize;
- }
-
- public void setTestSize(TestSize size) {
- mTestSize = size;
- }
-
- public Collection<IDevice> getDevices() {
- return mDevices;
- }
-
- public void setDevices(Collection<IDevice> devices) {
- mDevices = devices;
- }
-
- /**
- * Specify to run all tests within given package.
- *
- * @param testPackage fully qualified java package
- */
- public void setTestPackage(String testPackage) {
- mTestPackage = testPackage;
- }
-
- /**
- * Return the package of tests to run.
- *
- * @return fully qualified java package. <code>null</code> if not specified.
- */
- public String getTestPackage() {
- return mTestPackage;
- }
-
- /**
- * Sets the test class to run.
- *
- * @param testClass fully qualfied test class to run
- * Expected format: x.y.x.testclass
- */
- public void setTestClass(String testClass) {
- mTestClass = testClass;
- }
-
- /**
- * Returns the test class to run.
- *
- * @return fully qualfied test class to run.
- * <code>null</code> if not specified.
- */
- public String getTestClass() {
- return mTestClass;
- }
-
- /**
- * Sets the test method to run. testClass must also be set.
- *
- * @param testMethod test method to run
- */
- public void setTestMethod(String testMethod) {
- mTestMethod = testMethod;
- }
-
- /**
- * Returns the test method to run.
- *
- * @return test method to run. <code>null</code> if not specified.
- */
- public String getTestMethod() {
- return mTestMethod;
- }
-
- public ILaunch getLaunch() {
- return mLaunch;
- }
-
- public void setLaunch(ILaunch launch) {
- mLaunch = launch;
- }
-}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/AndroidTestReference.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/AndroidTestReference.java
deleted file mode 100644
index ec3104d91..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/AndroidTestReference.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * 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 org.eclipse.jdt.internal.junit.runner.ITestIdentifier;
-import org.eclipse.jdt.internal.junit.runner.ITestReference;
-import org.eclipse.jdt.internal.junit.runner.TestExecution;
-
-/**
- * Base implementation of the Eclipse {@link ITestReference} and {@link ITestIdentifier} interfaces
- * for Android tests.
- * <p/>
- * Provides generic equality/hashcode services
- */
-@SuppressWarnings("restriction")
-abstract class AndroidTestReference implements ITestReference, ITestIdentifier {
-
- /**
- * Gets the {@link ITestIdentifier} for this test reference.
- */
- @Override
- public ITestIdentifier getIdentifier() {
- // this class serves as its own test identifier
- return this;
- }
-
- /**
- * Not supported.
- */
- @Override
- public void run(TestExecution execution) {
- throw new UnsupportedOperationException();
- }
-
- /**
- * Compares {@link ITestIdentifier} using names
- */
- @Override
- public boolean equals(Object obj) {
- if (obj instanceof ITestIdentifier) {
- ITestIdentifier testid = (ITestIdentifier) obj;
- return getName().equals(testid.getName());
- }
- return false;
- }
-
- @Override
- public int hashCode() {
- return getName().hashCode();
- }
-}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/RemoteAdtTestRunner.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/RemoteAdtTestRunner.java
deleted file mode 100755
index a48acd324..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/RemoteAdtTestRunner.java
+++ /dev/null
@@ -1,524 +0,0 @@
-/*
- * 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.AdbCommandRejectedException;
-import com.android.ddmlib.IDevice;
-import com.android.ddmlib.ShellCommandUnresponsiveException;
-import com.android.ddmlib.TimeoutException;
-import com.android.ddmlib.testrunner.IRemoteAndroidTestRunner.TestSize;
-import com.android.ddmlib.testrunner.ITestRunListener;
-import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
-import com.android.ddmlib.testrunner.TestIdentifier;
-import com.android.ide.eclipse.adt.AdtPlugin;
-import com.android.ide.eclipse.adt.internal.launch.LaunchMessages;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jdt.internal.junit.runner.IListensToTestExecutions;
-import org.eclipse.jdt.internal.junit.runner.ITestReference;
-import org.eclipse.jdt.internal.junit.runner.MessageIds;
-import org.eclipse.jdt.internal.junit.runner.RemoteTestRunner;
-import org.eclipse.jdt.internal.junit.runner.TestExecution;
-import org.eclipse.jdt.internal.junit.runner.TestReferenceFailure;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Supports Eclipse JUnit execution of Android tests.
- * <p/>
- * Communicates back to a Eclipse JDT JUnit client via a socket connection.
- *
- * @see org.eclipse.jdt.internal.junit.runner.RemoteTestRunner for more details on the protocol
- */
-@SuppressWarnings("restriction")
-public class RemoteAdtTestRunner extends RemoteTestRunner {
-
- private static final String DELAY_MSEC_KEY = "delay_msec";
- /** the delay between each test execution when in collecting test info */
- private static final String COLLECT_TEST_DELAY_MS = "15";
-
- private AndroidJUnitLaunchInfo mLaunchInfo;
- private TestExecution mExecution;
-
- /**
- * Initialize the JDT JUnit test runner parameters from the {@code args}.
- *
- * @param args name-value pair of arguments to pass to parent JUnit runner.
- * @param launchInfo the Android specific test launch info
- */
- protected void init(String[] args, AndroidJUnitLaunchInfo launchInfo) {
- defaultInit(args);
- mLaunchInfo = launchInfo;
- }
-
- /**
- * Runs a set of tests, and reports back results using parent class.
- * <p/>
- * JDT Unit expects to be sent data in the following sequence:
- * <ol>
- * <li>The total number of tests to be executed.</li>
- * <li>The test 'tree' data about the tests to be executed, which is composed of the set of
- * test class names, the number of tests in each class, and the names of each test in the
- * class.</li>
- * <li>The test execution result for each test method. Expects individual notifications of
- * the test execution start, any failures, and the end of the test execution.</li>
- * <li>The end of the test run, with its elapsed time.</li>
- * </ol>
- * <p/>
- * In order to satisfy this, this method performs two actual Android instrumentation runs.
- * The first is a 'log only' run that will collect the test tree data, without actually
- * executing the tests, and send it back to JDT JUnit. The second is the actual test execution,
- * whose results will be communicated back in real-time to JDT JUnit.
- *
- * The tests are run concurrently on all devices. The overall structure is as follows:
- * <ol>
- * <li> First, a separate job per device is run to collect test tree data. A per device
- * {@link TestCollector} records information regarding the tests run on the device.
- * </li>
- * <li> Once all the devices have finished collecting the test tree data, the tree info is
- * collected from all of them and passed to the Junit UI </li>
- * <li> A job per device is again launched to do the actual test run. A per device
- * {@link TestRunListener} notifies the shared {@link TestResultsNotifier} of test
- * status. </li>
- * <li> As tests complete, the test run listener updates the Junit UI </li>
- * </ol>
- *
- * @param testClassNames ignored - the AndroidJUnitLaunchInfo will be used to determine which
- * tests to run.
- * @param testName ignored
- * @param execution used to report test progress
- */
- @Override
- public void runTests(String[] testClassNames, String testName, TestExecution execution) {
- // hold onto this execution reference so it can be used to report test progress
- mExecution = execution;
-
- List<IDevice> devices = new ArrayList<IDevice>(mLaunchInfo.getDevices());
- List<RemoteAndroidTestRunner> runners =
- new ArrayList<RemoteAndroidTestRunner>(devices.size());
-
- for (IDevice device : devices) {
- RemoteAndroidTestRunner runner = new RemoteAndroidTestRunner(
- mLaunchInfo.getAppPackage(), mLaunchInfo.getRunner(), device);
-
- if (mLaunchInfo.getTestClass() != null) {
- if (mLaunchInfo.getTestMethod() != null) {
- runner.setMethodName(mLaunchInfo.getTestClass(), mLaunchInfo.getTestMethod());
- } else {
- runner.setClassName(mLaunchInfo.getTestClass());
- }
- }
-
- if (mLaunchInfo.getTestPackage() != null) {
- runner.setTestPackageName(mLaunchInfo.getTestPackage());
- }
-
- TestSize size = mLaunchInfo.getTestSize();
- if (size != null) {
- runner.setTestSize(size);
- }
-
- runners.add(runner);
- }
-
- // Launch all test info collector jobs
- List<TestTreeCollectorJob> collectorJobs =
- new ArrayList<TestTreeCollectorJob>(devices.size());
- List<TestCollector> perDeviceCollectors = new ArrayList<TestCollector>(devices.size());
- for (int i = 0; i < devices.size(); i++) {
- RemoteAndroidTestRunner runner = runners.get(i);
- String deviceName = devices.get(i).getName();
- TestCollector collector = new TestCollector(deviceName);
- perDeviceCollectors.add(collector);
-
- TestTreeCollectorJob job = new TestTreeCollectorJob(
- "Test Tree Collector for " + deviceName,
- runner, mLaunchInfo.isDebugMode(), collector);
- job.setPriority(Job.INTERACTIVE);
- job.schedule();
-
- collectorJobs.add(job);
- }
-
- // wait for all test info collector jobs to complete
- int totalTests = 0;
- for (TestTreeCollectorJob job : collectorJobs) {
- try {
- job.join();
- } catch (InterruptedException e) {
- endTestRunWithError(e.getMessage());
- return;
- }
-
- if (!job.getResult().isOK()) {
- endTestRunWithError(job.getResult().getMessage());
- return;
- }
-
- TestCollector collector = job.getCollector();
- String err = collector.getErrorMessage();
- if (err != null) {
- endTestRunWithError(err);
- return;
- }
-
- totalTests += collector.getTestCaseCount();
- }
-
- AdtPlugin.printToConsole(mLaunchInfo.getProject(), "Sending test information to Eclipse");
- notifyTestRunStarted(totalTests);
- sendTestTrees(perDeviceCollectors);
-
- List<TestRunnerJob> instrumentationRunnerJobs =
- new ArrayList<TestRunnerJob>(devices.size());
-
- TestResultsNotifier notifier = new TestResultsNotifier(mExecution.getListener(),
- devices.size());
-
- // Spawn all instrumentation runner jobs
- for (int i = 0; i < devices.size(); i++) {
- RemoteAndroidTestRunner runner = runners.get(i);
- String deviceName = devices.get(i).getName();
- TestRunListener testRunListener = new TestRunListener(deviceName, notifier);
- InstrumentationRunJob job = new InstrumentationRunJob(
- "Test Tree Collector for " + deviceName,
- runner, mLaunchInfo.isDebugMode(), testRunListener);
- job.setPriority(Job.INTERACTIVE);
- job.schedule();
-
- instrumentationRunnerJobs.add(job);
- }
-
- // Wait for all jobs to complete
- for (TestRunnerJob job : instrumentationRunnerJobs) {
- try {
- job.join();
- } catch (InterruptedException e) {
- endTestRunWithError(e.getMessage());
- return;
- }
-
- if (!job.getResult().isOK()) {
- endTestRunWithError(job.getResult().getMessage());
- return;
- }
- }
- }
-
- /** Sends info about the test tree to be executed (ie the suites and their enclosed tests) */
- private void sendTestTrees(List<TestCollector> perDeviceCollectors) {
- for (TestCollector c : perDeviceCollectors) {
- ITestReference ref = c.getDeviceSuite();
- ref.sendTree(this);
- }
- }
-
- private static abstract class TestRunnerJob extends Job {
- private ITestRunListener mListener;
- private RemoteAndroidTestRunner mRunner;
- private boolean mIsDebug;
-
- public TestRunnerJob(String name, RemoteAndroidTestRunner runner,
- boolean isDebug, ITestRunListener listener) {
- super(name);
-
- mRunner = runner;
- mIsDebug = isDebug;
- mListener = listener;
- }
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- try {
- setupRunner();
- mRunner.run(mListener);
- } catch (TimeoutException e) {
- return new Status(Status.ERROR, AdtPlugin.PLUGIN_ID,
- LaunchMessages.RemoteAdtTestRunner_RunTimeoutException,
- e);
- } catch (IOException e) {
- return new Status(Status.ERROR, AdtPlugin.PLUGIN_ID,
- String.format(LaunchMessages.RemoteAdtTestRunner_RunIOException_s,
- e.getMessage()),
- e);
- } catch (AdbCommandRejectedException e) {
- return new Status(Status.ERROR, AdtPlugin.PLUGIN_ID,
- String.format(
- LaunchMessages.RemoteAdtTestRunner_RunAdbCommandRejectedException_s,
- e.getMessage()),
- e);
- } catch (ShellCommandUnresponsiveException e) {
- return new Status(Status.ERROR, AdtPlugin.PLUGIN_ID,
- LaunchMessages.RemoteAdtTestRunner_RunTimeoutException,
- e);
- }
-
- return Status.OK_STATUS;
- }
-
- public RemoteAndroidTestRunner getRunner() {
- return mRunner;
- }
-
- public boolean isDebug() {
- return mIsDebug;
- }
-
- public ITestRunListener getListener() {
- return mListener;
- }
-
- protected abstract void setupRunner();
- }
-
- private static class TestTreeCollectorJob extends TestRunnerJob {
- public TestTreeCollectorJob(String name, RemoteAndroidTestRunner runner, boolean isDebug,
- TestCollector listener) {
- super(name, runner, isDebug, listener);
- }
-
- @Override
- protected void setupRunner() {
- RemoteAndroidTestRunner runner = getRunner();
-
- // set log only to just collect test case info,
- // so Eclipse has correct test case count/tree info
- runner.setLogOnly(true);
-
- // add a small delay between each test. Otherwise for large test suites framework may
- // report Binder transaction failures
- runner.addInstrumentationArg(DELAY_MSEC_KEY, COLLECT_TEST_DELAY_MS);
- }
-
- public TestCollector getCollector() {
- return (TestCollector) getListener();
- }
- }
-
- private static class InstrumentationRunJob extends TestRunnerJob {
- public InstrumentationRunJob(String name, RemoteAndroidTestRunner runner, boolean isDebug,
- ITestRunListener listener) {
- super(name, runner, isDebug, listener);
- }
-
- @Override
- protected void setupRunner() {
- RemoteAndroidTestRunner runner = getRunner();
- runner.setLogOnly(false);
- runner.removeInstrumentationArg(DELAY_MSEC_KEY);
- if (isDebug()) {
- runner.setDebug(true);
- }
- }
- }
-
- /**
- * Main entry method to run tests
- *
- * @param programArgs JDT JUnit program arguments to be processed by parent
- * @param junitInfo the {@link AndroidJUnitLaunchInfo} containing info about this test ru
- */
- public void runTests(String[] programArgs, AndroidJUnitLaunchInfo junitInfo) {
- init(programArgs, junitInfo);
- run();
- }
-
- /**
- * Stop the current test run.
- */
- public void terminate() {
- stop();
- }
-
- @Override
- protected void stop() {
- if (mExecution != null) {
- mExecution.stop();
- }
- }
-
- private void notifyTestRunEnded(long elapsedTime) {
- // copy from parent - not ideal, but method is private
- sendMessage(MessageIds.TEST_RUN_END + elapsedTime);
- flush();
- //shutDown();
- }
-
- /**
- * @param errorMessage
- */
- private void reportError(String errorMessage) {
- AdtPlugin.printErrorToConsole(mLaunchInfo.getProject(),
- String.format(LaunchMessages.RemoteAdtTestRunner_RunFailedMsg_s, errorMessage));
- // is this needed?
- //notifyTestRunStopped(-1);
- }
-
- private void endTestRunWithError(String message) {
- reportError(message);
- notifyTestRunEnded(0);
- }
-
- /**
- * This class provides the interface to notify the JDT UI regarding the status of tests.
- * When running tests on multiple devices, there is a {@link TestRunListener} that listens
- * to results from each device. Rather than all such listeners directly notifying JDT
- * from different threads, they all notify this class which notifies JDT. In addition,
- * the {@link #testRunEnded(String, long)} method make sure that JDT is notified that the
- * test run has completed only when tests on all devices have completed.
- * */
- private class TestResultsNotifier {
- private final IListensToTestExecutions mListener;
- private final int mDeviceCount;
-
- private int mCompletedRuns;
- private long mMaxElapsedTime;
-
- public TestResultsNotifier(IListensToTestExecutions listener, int nDevices) {
- mListener = listener;
- mDeviceCount = nDevices;
- }
-
- public synchronized void testEnded(TestCaseReference ref) {
- mListener.notifyTestEnded(ref);
- }
-
- public synchronized void testFailed(TestReferenceFailure ref) {
- mListener.notifyTestFailed(ref);
- }
-
- public synchronized void testRunEnded(String mDeviceName, long elapsedTime) {
- mCompletedRuns++;
-
- if (elapsedTime > mMaxElapsedTime) {
- mMaxElapsedTime = elapsedTime;
- }
-
- if (mCompletedRuns == mDeviceCount) {
- notifyTestRunEnded(mMaxElapsedTime);
- }
- }
-
- public synchronized void testStarted(TestCaseReference testId) {
- mListener.notifyTestStarted(testId);
- }
- }
-
- /**
- * TestRunListener that communicates results in real-time back to JDT JUnit via the
- * {@link TestResultsNotifier}.
- * */
- private class TestRunListener implements ITestRunListener {
- private final String mDeviceName;
- private TestResultsNotifier mNotifier;
-
- /**
- * Constructs a {@link ITestRunListener} that listens for test results on given device.
- * @param deviceName device on which the tests are being run
- * @param notifier notifier to inform of test status
- */
- public TestRunListener(String deviceName, TestResultsNotifier notifier) {
- mDeviceName = deviceName;
- mNotifier = notifier;
- }
-
- @Override
- public void testEnded(TestIdentifier test, Map<String, String> ignoredTestMetrics) {
- mNotifier.testEnded(new TestCaseReference(mDeviceName, test));
- }
-
- @Override
- public void testFailed(TestIdentifier test, String trace) {
- TestReferenceFailure failure =
- new TestReferenceFailure(new TestCaseReference(mDeviceName, test),
- MessageIds.TEST_FAILED, trace, null);
- mNotifier.testFailed(failure);
- }
-
- @Override
- public void testAssumptionFailure(TestIdentifier test, String trace) {
- TestReferenceFailure failure =
- new TestReferenceFailure(new TestCaseReference(mDeviceName, test),
- MessageIds.TEST_FAILED, trace, null);
- mNotifier.testFailed(failure);
- }
-
- @Override
- public void testIgnored(TestIdentifier test) {
- // TODO: implement me?
- }
-
- @Override
- public synchronized void testRunEnded(long elapsedTime, Map<String, String> runMetrics) {
- mNotifier.testRunEnded(mDeviceName, elapsedTime);
- AdtPlugin.printToConsole(mLaunchInfo.getProject(),
- LaunchMessages.RemoteAdtTestRunner_RunCompleteMsg);
- }
-
- @Override
- public synchronized void testRunFailed(String errorMessage) {
- reportError(errorMessage);
- }
-
- @Override
- public synchronized void testRunStarted(String runName, int testCount) {
- // ignore
- }
-
- @Override
- public synchronized void testRunStopped(long elapsedTime) {
- notifyTestRunStopped(elapsedTime);
- AdtPlugin.printToConsole(mLaunchInfo.getProject(),
- LaunchMessages.RemoteAdtTestRunner_RunStoppedMsg);
- }
-
- @Override
- public synchronized void testStarted(TestIdentifier test) {
- TestCaseReference testId = new TestCaseReference(mDeviceName, test);
- mNotifier.testStarted(testId);
- }
- }
-
- /** Override parent to get extra logs. */
- @Override
- protected boolean connect() {
- boolean result = super.connect();
- if (!result) {
- AdtPlugin.printErrorToConsole(mLaunchInfo.getProject(),
- "Connect to Eclipse test result listener failed");
- }
- return result;
- }
-
- /** Override parent to dump error message to console. */
- @Override
- public void runFailed(String message, Exception exception) {
- if (exception != null) {
- AdtPlugin.logAndPrintError(exception, mLaunchInfo.getProject().getName(),
- "Test launch failed: %s", message);
- } else {
- AdtPlugin.printErrorToConsole(mLaunchInfo.getProject(), "Test launch failed: %s",
- message);
- }
- }
-}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCaseReference.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCaseReference.java
deleted file mode 100644
index e05e9b857..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCaseReference.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.TestIdentifier;
-
-import org.eclipse.jdt.internal.junit.runner.IVisitsTestTrees;
-
-/**
- * Reference for a single Android test method.
- */
-@SuppressWarnings("restriction")
-class TestCaseReference extends AndroidTestReference {
- private final String mClassName;
- private final String mTestName;
- private final String mDeviceName;
-
- /**
- * Creates a TestCaseReference from a {@link TestIdentifier}
- * @param test
- */
- TestCaseReference(String deviceName, TestIdentifier test) {
- mDeviceName = deviceName;
- mClassName = test.getClassName();
- mTestName = test.getTestName();
- }
-
- /**
- * Returns a count of the number of test cases referenced. Is always one for this class.
- */
- @Override
- public int countTestCases() {
- return 1;
- }
-
- /**
- * Sends test identifier and test count information for this test
- *
- * @param notified the {@link IVisitsTestTrees} to send test info to
- */
- @Override
- public void sendTree(IVisitsTestTrees notified) {
- notified.visitTreeEntry(getIdentifier(), false, countTestCases());
- }
-
- /**
- * Returns the identifier of this test, in a format expected by JDT JUnit
- */
- @Override
- public String getName() {
- return String.format("%s (%s) [%s]", mTestName, mClassName, mDeviceName);
- }
-}
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
deleted file mode 100644
index 32c5ef81e..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestCollector.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * 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;
- }
-}
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestSuiteReference.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestSuiteReference.java
deleted file mode 100644
index dcc9f10ec..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/launch/junit/runtime/TestSuiteReference.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * 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 org.eclipse.jdt.internal.junit.runner.IVisitsTestTrees;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Reference for an Android test suite aka class.
- */
-@SuppressWarnings("restriction")
-class TestSuiteReference extends AndroidTestReference {
-
- private final String mClassName;
- private List<AndroidTestReference> mTests;
-
- /**
- * Creates a TestSuiteReference
- *
- * @param className the fully qualified name of the test class
- */
- TestSuiteReference(String className) {
- mClassName = className;
- mTests = new ArrayList<AndroidTestReference>();
- }
-
- /**
- * Returns a count of the number of test cases included in this suite.
- */
- @Override
- public int countTestCases() {
- return mTests.size();
- }
-
- /**
- * Sends test identifier and test count information for this test class, and all its included
- * test methods.
- *
- * @param notified the {@link IVisitsTestTrees} to send test info too
- */
- @Override
- public void sendTree(IVisitsTestTrees notified) {
- notified.visitTreeEntry(getIdentifier(), true, countTestCases());
- for (AndroidTestReference ref: mTests) {
- ref.sendTree(notified);
- }
- }
-
- /**
- * Return the name of this test class.
- */
- @Override
- public String getName() {
- return mClassName;
- }
-
- /**
- * Adds a test method to this suite.
- *
- * @param testRef the {@link TestCaseReference} to add
- */
- void addTest(AndroidTestReference testRef) {
- mTests.add(testRef);
- }
-
- /** Returns the test suite of given name, null if no such test suite exists */
- public TestSuiteReference getTestSuite(String name) {
- for (AndroidTestReference ref: mTests) {
- if (ref instanceof TestSuiteReference && ref.getName().equals(name)) {
- return (TestSuiteReference) ref;
- }
- }
-
- return null;
- }
-}