TracingControllerAndroidTest.java revision 5f1c94371a64b3196d4be9466099bb892df9b88e
1dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com// Copyright 2013 The Chromium Authors. All rights reserved. 2dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com// Use of this source code is governed by a BSD-style license that can be 3dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com// found in the LICENSE file. 4dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 5dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.compackage org.chromium.content.browser; 6dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 7cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.comimport static org.chromium.base.test.util.ScalableTimeout.scaleTimeout; 8dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 9dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.comimport android.os.SystemClock; 10a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.orgimport android.test.suitebuilder.annotation.MediumTest; 11dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 12a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.orgimport org.chromium.base.ThreadUtils; 13cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.comimport org.chromium.base.test.util.Feature; 14dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.comimport org.chromium.content_shell_apk.ContentShellActivity; 15cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.comimport org.chromium.content_shell_apk.ContentShellTestBase; 16a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org 17a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.orgimport java.io.File; 18d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com 19a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.orgpublic class TracingControllerAndroidTest extends ContentShellTestBase { 20d6bab0238655dbab24dfe92bd0b16b464310a8c7rmistry@google.com 21a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org private static final long TIMEOUT_MILLIS = scaleTimeout(30 * 1000); 22cc95b1aeb8cbb9201712c9982d12149b0e0027f0djsollen@google.com 234020acfa7e60cee1510d3c1d2baad9661891bad7commit-bot@chromium.org @MediumTest 24a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org @Feature({"GPU"}) 255102345029be75f089e083228e317545627ea1cbqiankun.miao public void testTraceFileCreation() throws Exception { 26c569327afb45386e4dae3505fe6b118603354457borenet@google.com ContentShellActivity activity = launchContentShellWithUrl("about:blank"); 27123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org waitForActiveShellToBeDoneLoading(); 28123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org 29123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org final TracingControllerAndroid tracingController = new TracingControllerAndroid(activity); 30c569327afb45386e4dae3505fe6b118603354457borenet@google.com assertFalse(tracingController.isTracing()); 31c569327afb45386e4dae3505fe6b118603354457borenet@google.com assertNull(tracingController.getOutputPath()); 32123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org 334020acfa7e60cee1510d3c1d2baad9661891bad7commit-bot@chromium.org ThreadUtils.runOnUiThreadBlocking(new Runnable() { 34123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org @Override 35123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org public void run() { 36123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org assertTrue(tracingController.startTracing( 37123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org true, "*", "record-until-full")); 38123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org } 39123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org }); 40123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org 41123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org assertTrue(tracingController.isTracing()); 42123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org File file = new File(tracingController.getOutputPath()); 43123f3d74e35e0f9c69961553b8eac5e12f763de3commit-bot@chromium.org assertTrue(file.getName().startsWith("chrome-profile-results")); 44a13767579d25a7182d697e93d0df294eccc91507commit-bot@chromium.org 45662af2930723adb89ae9c57a122c39702789821acommit-bot@chromium.org ThreadUtils.runOnUiThreadBlocking(new Runnable() { 464020acfa7e60cee1510d3c1d2baad9661891bad7commit-bot@chromium.org @Override 474020acfa7e60cee1510d3c1d2baad9661891bad7commit-bot@chromium.org public void run() { 48e32eeec7bf50344c666ab301d87a30fd6b92527ecommit-bot@chromium.org tracingController.stopTracing(); 49 } 50 }); 51 52 // The tracer stops asynchronously, because it needs to wait for native code to flush and 53 // close the output file. Give it a little time. 54 long startTime = SystemClock.uptimeMillis(); 55 while (tracingController.isTracing()) { 56 if (SystemClock.uptimeMillis() > startTime + TIMEOUT_MILLIS) { 57 fail("Timed out waiting for tracing to stop."); 58 } 59 Thread.sleep(1000); 60 } 61 62 // It says it stopped, so it should have written the output file. 63 assertTrue(file.exists()); 64 assertTrue(file.delete()); 65 tracingController.destroy(); 66 } 67} 68