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"); |
+ } |
+} |