| Index: testing/android/native_test/java/src/org/chromium/native_test/ChromeNativeTestInstrumentationTestRunner.java
|
| diff --git a/testing/android/native_test/java/src/org/chromium/native_test/ChromeNativeTestInstrumentationTestRunner.java b/testing/android/native_test/java/src/org/chromium/native_test/ChromeNativeTestInstrumentationTestRunner.java
|
| deleted file mode 100644
|
| index 4e1a067907597e46d225b78f7256eba118bdd7f2..0000000000000000000000000000000000000000
|
| --- a/testing/android/native_test/java/src/org/chromium/native_test/ChromeNativeTestInstrumentationTestRunner.java
|
| +++ /dev/null
|
| @@ -1,230 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -package org.chromium.native_test;
|
| -
|
| -import android.app.Activity;
|
| -import android.app.Instrumentation;
|
| -import android.content.ComponentName;
|
| -import android.content.Intent;
|
| -import android.os.Bundle;
|
| -import android.os.Environment;
|
| -import android.util.Log;
|
| -
|
| -import java.io.BufferedInputStream;
|
| -import java.io.BufferedReader;
|
| -import java.io.File;
|
| -import java.io.FileInputStream;
|
| -import java.io.FileNotFoundException;
|
| -import java.io.IOException;
|
| -import java.io.InputStreamReader;
|
| -import java.util.HashMap;
|
| -import java.util.Map;
|
| -import java.util.regex.Matcher;
|
| -import java.util.regex.Pattern;
|
| -
|
| -/**
|
| - * An Instrumentation that runs tests based on ChromeNativeTestActivity.
|
| - */
|
| -public class ChromeNativeTestInstrumentationTestRunner extends Instrumentation {
|
| - // TODO(jbudorick): Remove this extra when b/18981674 is fixed.
|
| - public static final String EXTRA_ONLY_OUTPUT_FAILURES =
|
| - "org.chromium.native_test.ChromeNativeTestInstrumentationTestRunner."
|
| - + "OnlyOutputFailures";
|
| -
|
| - private static final String TAG = "ChromeNativeTestInstrumentationTestRunner";
|
| -
|
| - private static final int ACCEPT_TIMEOUT_MS = 5000;
|
| - private static final Pattern RE_TEST_OUTPUT = Pattern.compile("\\[ *([^ ]*) *\\] ?([^ ]+) .*");
|
| -
|
| - private static interface ResultsBundleGenerator {
|
| - public Bundle generate(Map<String, TestResult> rawResults);
|
| - }
|
| -
|
| - private String mCommandLineFile;
|
| - private String mCommandLineFlags;
|
| - private File mStdoutFile;
|
| - private Bundle mLogBundle;
|
| - private ResultsBundleGenerator mBundleGenerator;
|
| - private boolean mOnlyOutputFailures;
|
| -
|
| - @Override
|
| - public void onCreate(Bundle arguments) {
|
| - mCommandLineFile = arguments.getString(ChromeNativeTestActivity.EXTRA_COMMAND_LINE_FILE);
|
| - mCommandLineFlags = arguments.getString(ChromeNativeTestActivity.EXTRA_COMMAND_LINE_FLAGS);
|
| - try {
|
| - mStdoutFile = File.createTempFile(
|
| - ".temp_stdout_", ".txt", Environment.getExternalStorageDirectory());
|
| - Log.i(TAG, "stdout file created: " + mStdoutFile.getAbsolutePath());
|
| - } catch (IOException e) {
|
| - Log.e(TAG, "Unable to create temporary stdout file." + e.toString());
|
| - finish(Activity.RESULT_CANCELED, new Bundle());
|
| - return;
|
| - }
|
| - mLogBundle = new Bundle();
|
| - mBundleGenerator = new RobotiumBundleGenerator();
|
| - mOnlyOutputFailures = arguments.containsKey(EXTRA_ONLY_OUTPUT_FAILURES);
|
| - start();
|
| - }
|
| -
|
| - @Override
|
| - public void onStart() {
|
| - super.onStart();
|
| - Bundle results = runTests();
|
| - finish(Activity.RESULT_OK, results);
|
| - }
|
| -
|
| - /** Runs the tests in the ChromeNativeTestActivity and returns a Bundle containing the results.
|
| - */
|
| - private Bundle runTests() {
|
| - Log.i(TAG, "Creating activity.");
|
| - Activity activityUnderTest = startNativeTestActivity();
|
| -
|
| - Log.i(TAG, "Waiting for tests to finish.");
|
| - try {
|
| - while (!activityUnderTest.isFinishing()) {
|
| - Thread.sleep(100);
|
| - }
|
| - } catch (InterruptedException e) {
|
| - Log.e(TAG, "Interrupted while waiting for activity to be destroyed: " + e.toString());
|
| - }
|
| -
|
| - Log.i(TAG, "Getting results.");
|
| - Map<String, TestResult> results = parseResults(activityUnderTest);
|
| -
|
| - Log.i(TAG, "Parsing results and generating output.");
|
| - return mBundleGenerator.generate(results);
|
| - }
|
| -
|
| - /** Starts the ChromeNativeTestActivty.
|
| - */
|
| - private Activity startNativeTestActivity() {
|
| - Intent i = new Intent(Intent.ACTION_MAIN);
|
| - i.setComponent(new ComponentName(
|
| - "org.chromium.native_test",
|
| - "org.chromium.native_test.ChromeNativeTestActivity"));
|
| - i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
| - if (mCommandLineFile != null) {
|
| - Log.i(TAG, "Passing command line file extra: " + mCommandLineFile);
|
| - i.putExtra(ChromeNativeTestActivity.EXTRA_COMMAND_LINE_FILE, mCommandLineFile);
|
| - }
|
| - if (mCommandLineFlags != null) {
|
| - Log.i(TAG, "Passing command line flag extra: " + mCommandLineFlags);
|
| - i.putExtra(ChromeNativeTestActivity.EXTRA_COMMAND_LINE_FLAGS, mCommandLineFlags);
|
| - }
|
| - i.putExtra(ChromeNativeTestActivity.EXTRA_STDOUT_FILE, mStdoutFile.getAbsolutePath());
|
| - return startActivitySync(i);
|
| - }
|
| -
|
| - private static enum TestResult {
|
| - PASSED, FAILED, ERROR, UNKNOWN
|
| - }
|
| -
|
| - /**
|
| - * Generates a map between test names and test results from the instrumented Activity's
|
| - * output.
|
| - */
|
| - private Map<String, TestResult> parseResults(Activity activityUnderTest) {
|
| - Map<String, TestResult> results = new HashMap<String, TestResult>();
|
| -
|
| - BufferedReader r = null;
|
| -
|
| - try {
|
| - if (mStdoutFile == null || !mStdoutFile.exists()) {
|
| - Log.e(TAG, "Unable to find stdout file.");
|
| - return results;
|
| - }
|
| -
|
| - r = new BufferedReader(new InputStreamReader(
|
| - new BufferedInputStream(new FileInputStream(mStdoutFile))));
|
| -
|
| - for (String l = r.readLine(); l != null && !l.equals("<<ScopedMainEntryLogger");
|
| - l = r.readLine()) {
|
| - Matcher m = RE_TEST_OUTPUT.matcher(l);
|
| - boolean isFailure = false;
|
| - if (m.matches()) {
|
| - if (m.group(1).equals("RUN")) {
|
| - results.put(m.group(2), TestResult.UNKNOWN);
|
| - } else if (m.group(1).equals("FAILED")) {
|
| - results.put(m.group(2), TestResult.FAILED);
|
| - isFailure = true;
|
| - mLogBundle.putString(Instrumentation.REPORT_KEY_STREAMRESULT, l + "\n");
|
| - sendStatus(0, mLogBundle);
|
| - } else if (m.group(1).equals("OK")) {
|
| - results.put(m.group(2), TestResult.PASSED);
|
| - }
|
| - }
|
| -
|
| - // TODO(jbudorick): mOnlyOutputFailures is a workaround for b/18981674. Remove it
|
| - // once that issue is fixed.
|
| - if (!mOnlyOutputFailures || isFailure) {
|
| - mLogBundle.putString(Instrumentation.REPORT_KEY_STREAMRESULT, l + "\n");
|
| - sendStatus(0, mLogBundle);
|
| - }
|
| - Log.i(TAG, l);
|
| - }
|
| - } catch (FileNotFoundException e) {
|
| - Log.e(TAG, "Couldn't find stdout file file: " + e.toString());
|
| - } catch (IOException e) {
|
| - Log.e(TAG, "Error handling stdout file: " + e.toString());
|
| - } finally {
|
| - if (r != null) {
|
| - try {
|
| - r.close();
|
| - } catch (IOException e) {
|
| - Log.e(TAG, "Error while closing stdout reader.");
|
| - }
|
| - }
|
| - if (mStdoutFile != null) {
|
| - if (!mStdoutFile.delete()) {
|
| - Log.e(TAG, "Unable to delete " + mStdoutFile.getAbsolutePath());
|
| - }
|
| - }
|
| - }
|
| - return results;
|
| - }
|
| -
|
| - /**
|
| - * Creates a results bundle that emulates the one created by Robotium.
|
| - */
|
| - private static class RobotiumBundleGenerator implements ResultsBundleGenerator {
|
| - public Bundle generate(Map<String, TestResult> rawResults) {
|
| - Bundle resultsBundle = new Bundle();
|
| -
|
| - int testsPassed = 0;
|
| - int testsFailed = 0;
|
| -
|
| - for (Map.Entry<String, TestResult> entry : rawResults.entrySet()) {
|
| - switch (entry.getValue()) {
|
| - case PASSED:
|
| - ++testsPassed;
|
| - break;
|
| - case FAILED:
|
| - // TODO(jbudorick): Remove this log message once AMP execution and
|
| - // results handling has been stabilized.
|
| - Log.d(TAG, "FAILED: " + entry.getKey());
|
| - ++testsFailed;
|
| - break;
|
| - default:
|
| - Log.w(TAG, "Unhandled: " + entry.getKey() + ", "
|
| - + entry.getValue().toString());
|
| - break;
|
| - }
|
| - }
|
| -
|
| - StringBuilder resultBuilder = new StringBuilder();
|
| - if (testsFailed > 0) {
|
| - resultBuilder.append(
|
| - "\nFAILURES!!! Tests run: " + Integer.toString(rawResults.size())
|
| - + ", Failures: " + Integer.toString(testsFailed) + ", Errors: 0");
|
| - } else {
|
| - resultBuilder.append("\nOK (" + Integer.toString(testsPassed) + " tests)");
|
| - }
|
| - resultsBundle.putString(Instrumentation.REPORT_KEY_STREAMRESULT,
|
| - resultBuilder.toString());
|
| - return resultsBundle;
|
| - }
|
| - }
|
| -
|
| -}
|
|
|