| Index: base/android/javatests/src/org/chromium/base/EarlyTraceEventTest.java
|
| diff --git a/base/android/javatests/src/org/chromium/base/EarlyTraceEventTest.java b/base/android/javatests/src/org/chromium/base/EarlyTraceEventTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a547a0d51e671844816fee921a6a2265c7a19c8f
|
| --- /dev/null
|
| +++ b/base/android/javatests/src/org/chromium/base/EarlyTraceEventTest.java
|
| @@ -0,0 +1,110 @@
|
| +// Copyright 2015 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.base;
|
| +
|
| +import android.os.Process;
|
| +import android.test.InstrumentationTestCase;
|
| +import android.test.suitebuilder.annotation.SmallTest;
|
| +
|
| +import org.chromium.base.test.util.Feature;
|
| +
|
| +/**
|
| + * Tests for {@link org.chromium.base.EarlyTraceEvent}.
|
| + */
|
| +public class EarlyTraceEventTest extends InstrumentationTestCase {
|
| + @Override
|
| + public void tearDown() {
|
| + EarlyTraceEvent.disable();
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Android-AppBase"})
|
| + public void testIsDisabledByDefault() {
|
| + assertFalse(EarlyTraceEvent.isEnabled());
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Android-AppBase"})
|
| + public void testCanBeEnabled() {
|
| + EarlyTraceEvent.enable();
|
| + assertTrue(EarlyTraceEvent.isEnabled());
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Android-AppBase"})
|
| + public void testCanRecordEvent() {
|
| + EarlyTraceEvent.enable();
|
| + long threadId = Process.myTid();
|
| + EarlyTraceEvent.begin("MyEvent", "");
|
| + EarlyTraceEvent.end("MyEvent", "");
|
| + EarlyTraceEvent.EarlyTraceEventsNativeReader reader = EarlyTraceEvent.getAll();
|
| + String[] names = reader.readNames();
|
| + assertEquals(names.length, 1);
|
| + assertEquals(names[0], "MyEvent");
|
| + long[] threadIds = reader.readThreadIds();
|
| + assertEquals(threadIds.length, 1);
|
| + assertEquals(threadIds[0], threadId);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Android-AppBase"})
|
| + public void testNoEvents() {
|
| + EarlyTraceEvent.enable();
|
| + EarlyTraceEvent.EarlyTraceEventsNativeReader reader = EarlyTraceEvent.getAll();
|
| + assertEquals(reader.readNames().length, 0);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Android-AppBase"})
|
| + public void testNoNestedSameNameEvents() {
|
| + EarlyTraceEvent.enable();
|
| + EarlyTraceEvent.begin("MyEvent", "");
|
| + try {
|
| + EarlyTraceEvent.begin("MyEvent", "");
|
| + } catch (IllegalArgumentException e) {
|
| + // Expected
|
| + return;
|
| + }
|
| + assertFalse(true);
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Android-AppBase"})
|
| + public void testSeveralEvents() {
|
| + EarlyTraceEvent.enable();
|
| + EarlyTraceEvent.begin("FirstEvent", "");
|
| + EarlyTraceEvent.begin("SecondEvent", "");
|
| + EarlyTraceEvent.end("FirstEvent", "");
|
| + Thread thread = new Thread(new Runnable(){
|
| + @Override
|
| + public void run() {
|
| + EarlyTraceEvent.end("SecondEvent", "");
|
| + }});
|
| + thread.run();
|
| + try {
|
| + thread.join();
|
| + } catch (InterruptedException e) {
|
| + // Too bad
|
| + }
|
| +
|
| + EarlyTraceEvent.EarlyTraceEventsNativeReader reader = EarlyTraceEvent.getAll();
|
| + assertEquals(reader.readNames().length, 2);
|
| + assertEquals(reader.readNames()[0], "FirstEvent");
|
| + assertEquals(reader.readNames()[1], "SecondEvent");
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Android-AppBase"})
|
| + public void testEventsPending() {
|
| + EarlyTraceEvent.enable();
|
| + EarlyTraceEvent.begin("FirstEvent", "");
|
| + EarlyTraceEvent.begin("SecondEvent", "");
|
| + EarlyTraceEvent.end("FirstEvent", "");
|
| +
|
| + EarlyTraceEvent.EarlyTraceEventsNativeReader reader = EarlyTraceEvent.getAll();
|
| + assertEquals(reader.readNames().length, 1);
|
| + assertEquals(reader.readNames()[0], "FirstEvent");
|
| + }
|
| +}
|
|
|