Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Side by Side Diff: testing/android/java/src/org/chromium/native_test/ChromeNativeTestInstrumentationTestRunner.java

Issue 988693005: Chromium roll (https://codereview.chromium.org/976353002) (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: fixed bad android build patch Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/viewer/viewer.cc ('k') | testing/buildbot/OWNERS » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.native_test; 5 package org.chromium.native_test;
6 6
7 import android.app.Activity; 7 import android.app.Activity;
8 import android.app.Instrumentation; 8 import android.app.Instrumentation;
9 import android.content.ComponentName; 9 import android.content.ComponentName;
10 import android.content.Intent; 10 import android.content.Intent;
11 import android.os.Bundle; 11 import android.os.Bundle;
12 import android.os.Environment; 12 import android.os.Environment;
13 import android.util.Log; 13 import android.util.Log;
14 14
15 import org.chromium.net.test.TestServerSpawner;
16
17 import java.io.BufferedInputStream; 15 import java.io.BufferedInputStream;
18 import java.io.BufferedReader; 16 import java.io.BufferedReader;
19 import java.io.File; 17 import java.io.File;
20 import java.io.FileInputStream; 18 import java.io.FileInputStream;
21 import java.io.FileNotFoundException; 19 import java.io.FileNotFoundException;
22 import java.io.FileOutputStream;
23 import java.io.IOException; 20 import java.io.IOException;
24 import java.io.InputStreamReader; 21 import java.io.InputStreamReader;
25 import java.io.OutputStreamWriter;
26 import java.util.HashMap; 22 import java.util.HashMap;
27 import java.util.Map; 23 import java.util.Map;
28 import java.util.regex.Matcher; 24 import java.util.regex.Matcher;
29 import java.util.regex.Pattern; 25 import java.util.regex.Pattern;
30 26
31 /** 27 /**
32 * An Instrumentation that runs tests based on ChromeNativeTestActivity. 28 * An Instrumentation that runs tests based on ChromeNativeTestActivity.
33 */ 29 */
34 public class ChromeNativeTestInstrumentationTestRunner extends Instrumentation { 30 public class ChromeNativeTestInstrumentationTestRunner extends Instrumentation {
35 // TODO(jbudorick): Remove this extra when b/18981674 is fixed. 31 // TODO(jbudorick): Remove this extra when b/18981674 is fixed.
36 public static final String EXTRA_ONLY_OUTPUT_FAILURES = 32 public static final String EXTRA_ONLY_OUTPUT_FAILURES =
37 "org.chromium.native_test.ChromeNativeTestInstrumentationTestRunner. " 33 "org.chromium.native_test.ChromeNativeTestInstrumentationTestRunner. "
38 + "OnlyOutputFailures"; 34 + "OnlyOutputFailures";
39 public static final String EXTRA_ENABLE_TEST_SERVER_SPAWNER =
40 "org.chromium.native_test.ChromeNativeTestInstrumentationTestRunner. "
41 + "EnableTestServerSpawner";
42 35
43 private static final String TAG = "ChromeNativeTestInstrumentationTestRunner "; 36 private static final String TAG = "ChromeNativeTestInstrumentationTestRunner ";
44 37
45 private static final int ACCEPT_TIMEOUT_MS = 5000; 38 private static final int ACCEPT_TIMEOUT_MS = 5000;
46 private static final Pattern RE_TEST_OUTPUT = Pattern.compile("\\[ *([^ ]*) *\\] ?([^ ]+) .*"); 39 private static final Pattern RE_TEST_OUTPUT = Pattern.compile("\\[ *([^ ]*) *\\] ?([^ ]+) .*");
47 private static final int SERVER_SPAWNER_PORT = 0;
48 40
49 private static interface ResultsBundleGenerator { 41 private static interface ResultsBundleGenerator {
50 public Bundle generate(Map<String, TestResult> rawResults); 42 public Bundle generate(Map<String, TestResult> rawResults);
51 } 43 }
52 44
53 private String mCommandLineFile; 45 private String mCommandLineFile;
54 private String mCommandLineFlags; 46 private String mCommandLineFlags;
55 private File mStdoutFile; 47 private File mStdoutFile;
56 private Bundle mLogBundle; 48 private Bundle mLogBundle;
57 private ResultsBundleGenerator mBundleGenerator; 49 private ResultsBundleGenerator mBundleGenerator;
58 private boolean mOnlyOutputFailures; 50 private boolean mOnlyOutputFailures;
59 51
60 private boolean mEnableTestServerSpawner;
61 private TestServerSpawner mTestServerSpawner;
62 private Thread mTestServerSpawnerThread;
63
64 @Override 52 @Override
65 public void onCreate(Bundle arguments) { 53 public void onCreate(Bundle arguments) {
66 mCommandLineFile = arguments.getString(ChromeNativeTestActivity.EXTRA_CO MMAND_LINE_FILE); 54 mCommandLineFile = arguments.getString(ChromeNativeTestActivity.EXTRA_CO MMAND_LINE_FILE);
67 mCommandLineFlags = arguments.getString(ChromeNativeTestActivity.EXTRA_C OMMAND_LINE_FLAGS); 55 mCommandLineFlags = arguments.getString(ChromeNativeTestActivity.EXTRA_C OMMAND_LINE_FLAGS);
68 try { 56 try {
69 mStdoutFile = File.createTempFile( 57 mStdoutFile = File.createTempFile(
70 ".temp_stdout_", ".txt", Environment.getExternalStorageDirec tory()); 58 ".temp_stdout_", ".txt", Environment.getExternalStorageDirec tory());
71 Log.i(TAG, "stdout file created: " + mStdoutFile.getAbsolutePath()); 59 Log.i(TAG, "stdout file created: " + mStdoutFile.getAbsolutePath());
72 } catch (IOException e) { 60 } catch (IOException e) {
73 Log.e(TAG, "Unable to create temporary stdout file." + e.toString()) ; 61 Log.e(TAG, "Unable to create temporary stdout file." + e.toString()) ;
74 finish(Activity.RESULT_CANCELED, new Bundle()); 62 finish(Activity.RESULT_CANCELED, new Bundle());
75 return; 63 return;
76 } 64 }
77 mLogBundle = new Bundle(); 65 mLogBundle = new Bundle();
78 mBundleGenerator = new RobotiumBundleGenerator(); 66 mBundleGenerator = new RobotiumBundleGenerator();
79 mOnlyOutputFailures = arguments.containsKey(EXTRA_ONLY_OUTPUT_FAILURES); 67 mOnlyOutputFailures = arguments.containsKey(EXTRA_ONLY_OUTPUT_FAILURES);
80 mEnableTestServerSpawner = arguments.containsKey(EXTRA_ENABLE_TEST_SERVE R_SPAWNER);
81 mTestServerSpawner = null;
82 mTestServerSpawnerThread = null;
83 start(); 68 start();
84 } 69 }
85 70
86 @Override 71 @Override
87 public void onStart() { 72 public void onStart() {
88 super.onStart(); 73 super.onStart();
89
90 setUp();
91 Bundle results = runTests(); 74 Bundle results = runTests();
92 tearDown();
93
94 finish(Activity.RESULT_OK, results); 75 finish(Activity.RESULT_OK, results);
95 } 76 }
96 77
97 private void setUp() {
98 if (mEnableTestServerSpawner) {
99 Log.i(TAG, "Test server spawner enabled.");
100 try {
101 mTestServerSpawner = new TestServerSpawner(SERVER_SPAWNER_PORT, ACCEPT_TIMEOUT_MS);
102
103 File portFile = new File(
104 Environment.getExternalStorageDirectory(), "net-test-ser ver-ports");
105 OutputStreamWriter writer =
106 new OutputStreamWriter(new FileOutputStream(portFile));
107 writer.write(Integer.toString(mTestServerSpawner.getServerPort() ) + ":0");
108 writer.close();
109
110 mTestServerSpawnerThread = new Thread(mTestServerSpawner);
111 mTestServerSpawnerThread.start();
112 } catch (IOException e) {
113 Log.e(TAG, "Error creating TestServerSpawner: " + e.toString());
114 }
115 }
116 }
117
118 private void tearDown() {
119 if (mTestServerSpawnerThread != null) {
120 try {
121 mTestServerSpawner.stop();
122 mTestServerSpawnerThread.join();
123 } catch (InterruptedException e) {
124 Log.e(TAG, "Interrupted while shutting down test server spawner: " + e.toString());
125 }
126 }
127 }
128
129 /** Runs the tests in the ChromeNativeTestActivity and returns a Bundle cont aining the results. 78 /** Runs the tests in the ChromeNativeTestActivity and returns a Bundle cont aining the results.
130 */ 79 */
131 private Bundle runTests() { 80 private Bundle runTests() {
132 Log.i(TAG, "Creating activity."); 81 Log.i(TAG, "Creating activity.");
133 Activity activityUnderTest = startNativeTestActivity(); 82 Activity activityUnderTest = startNativeTestActivity();
134 83
135 Log.i(TAG, "Waiting for tests to finish."); 84 Log.i(TAG, "Waiting for tests to finish.");
136 try { 85 try {
137 while (!activityUnderTest.isFinishing()) { 86 while (!activityUnderTest.isFinishing()) {
138 Thread.sleep(100); 87 Thread.sleep(100);
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 } else { 221 } else {
273 resultBuilder.append("\nOK (" + Integer.toString(testsPassed) + " tests)"); 222 resultBuilder.append("\nOK (" + Integer.toString(testsPassed) + " tests)");
274 } 223 }
275 resultsBundle.putString(Instrumentation.REPORT_KEY_STREAMRESULT, 224 resultsBundle.putString(Instrumentation.REPORT_KEY_STREAMRESULT,
276 resultBuilder.toString()); 225 resultBuilder.toString());
277 return resultsBundle; 226 return resultsBundle;
278 } 227 }
279 } 228 }
280 229
281 } 230 }
OLDNEW
« no previous file with comments | « sky/viewer/viewer.cc ('k') | testing/buildbot/OWNERS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698