162 lines
6.2 KiB
Java
162 lines
6.2 KiB
Java
/*
|
|
* Copyright (C) 2007 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
package android.util;
|
|
|
|
import android.os.Process;
|
|
|
|
import com.google.android.collect.Lists;
|
|
|
|
import junit.framework.TestCase;
|
|
import junit.framework.Assert;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
/**
|
|
* Functional tests of EventLog.
|
|
*/
|
|
|
|
public class EventLogFunctionalTest extends TestCase {
|
|
private static final String TAG = "EventLogFunctionalTest";
|
|
|
|
private static final int TAG_SIZE = 4;
|
|
private static final int TYPE_FIELD_SIZE = 1;
|
|
private static final int STARTING_POS_OF_PAYLOAD = TAG_SIZE + TYPE_FIELD_SIZE;
|
|
|
|
private static final int TEST_TAG = 42;
|
|
private static final int TEST_TAG2 = 314;
|
|
|
|
//todo: For now all we do is test the returned length. More to come.
|
|
public void testLogOfPosInt() throws Exception {
|
|
final int numBytes = EventLog.writeEvent(TEST_TAG, 0x01020304);
|
|
Assert.assertEquals(STARTING_POS_OF_PAYLOAD + 4, numBytes);
|
|
}
|
|
|
|
//todo: For now all we do is test the returned length. More to come.
|
|
public void testLogOfPosLong() throws Exception {
|
|
final int numBytes = EventLog.writeEvent(TEST_TAG2, 0x0102030405060708L);
|
|
Assert.assertEquals(STARTING_POS_OF_PAYLOAD + 8, numBytes);
|
|
}
|
|
|
|
//todo: For now all we do is test the returned length. More to come.
|
|
public void testLogOfString() throws Exception {
|
|
final String valueStr = "foo bar baz";
|
|
final int numBytes = EventLog.writeEvent(TEST_TAG, valueStr);
|
|
Assert.assertEquals(STARTING_POS_OF_PAYLOAD + 4 + valueStr.length() + 1, numBytes);
|
|
}
|
|
|
|
public void testLogOfListWithOneInt() throws Exception {
|
|
final EventLog.List list = new EventLog.List(1234);
|
|
final int numBytes = EventLog.writeEvent(TEST_TAG, list);
|
|
Assert.assertEquals(STARTING_POS_OF_PAYLOAD + 1 + 1 + 4 + 1, numBytes);
|
|
}
|
|
|
|
public void testLogOfListWithMultipleInts() throws Exception {
|
|
final EventLog.List list = new EventLog.List(1234, 2345, 3456);
|
|
final int numBytes = EventLog.writeEvent(TEST_TAG, list);
|
|
Assert.assertEquals(STARTING_POS_OF_PAYLOAD + 1 + 1 + 4 + 1 + 4 + 1 + 4 + 1, numBytes);
|
|
}
|
|
|
|
public void testLogOfListWithEmbeddedList() throws Exception {
|
|
final EventLog.List list = new EventLog.List(
|
|
new EventLog.List(1234, 2345, 3456));
|
|
final int numBytes = EventLog.writeEvent(TEST_TAG, list);
|
|
Assert.assertEquals(STARTING_POS_OF_PAYLOAD + 2 + 1 + 1 + 4 + 1 + 4 + 1 + 4 + 1, numBytes);
|
|
}
|
|
|
|
public void testEventLargerThanInitialBufferCapacity() throws Exception {
|
|
final Integer[] array = new Integer[127];
|
|
for (int i = 0; i < array.length; i++) {
|
|
array[i] = i;
|
|
}
|
|
final EventLog.List list = new EventLog.List((Object[]) array);
|
|
final int numBytes = EventLog.writeEvent(TEST_TAG, list);
|
|
Assert.assertEquals(STARTING_POS_OF_PAYLOAD + 1 + (5 * array.length) + 1, numBytes);
|
|
}
|
|
|
|
// This test is obsolete. See http://b/issue?id=1262082
|
|
public void disableTestReadSimpleEvent() throws Exception {
|
|
long when = System.currentTimeMillis();
|
|
EventLog.writeEvent(2718, 12345);
|
|
Log.i(TAG, "Wrote simple event at T=" + when);
|
|
|
|
ArrayList<EventLog.Event> list = new ArrayList<EventLog.Event>();
|
|
EventLog.readEvents(new int[] { 2718 }, list);
|
|
|
|
boolean found = false;
|
|
for (EventLog.Event event : list) {
|
|
assertEquals(event.getTag(), 2718);
|
|
long eventTime = event.getTimeNanos() / 1000000;
|
|
Log.i(TAG, " Found event T=" + eventTime);
|
|
if (eventTime > when - 100 && eventTime < when + 1000) {
|
|
assertEquals(event.getProcessId(), Process.myPid());
|
|
assertEquals(event.getThreadId(), Process.myTid());
|
|
assertEquals(event.getData(), 12345);
|
|
|
|
assertFalse(found);
|
|
found = true;
|
|
}
|
|
}
|
|
|
|
assertTrue(found);
|
|
}
|
|
|
|
// This test is obsolete. See http://b/issue?id=1262082
|
|
public void disableTestReadCompoundEntry() throws Exception {
|
|
long when = System.currentTimeMillis();
|
|
EventLog.writeEvent(2719,
|
|
new EventLog.List(1l, new EventLog.List("2", "three", "4"), 5));
|
|
Log.i(TAG, "Wrote compound event at T=" + when);
|
|
|
|
ArrayList<EventLog.Event> list = new ArrayList<EventLog.Event>();
|
|
EventLog.readEvents(new int[] { 2719 }, list);
|
|
|
|
boolean found = false;
|
|
for (EventLog.Event event : list) {
|
|
long eventTime = event.getTimeNanos() / 1000000;
|
|
Log.i(TAG, " Found event T=" + eventTime);
|
|
if (eventTime > when - 100 && eventTime < when + 1000) {
|
|
EventLog.List data = (EventLog.List) event.getData();
|
|
assertEquals(data.getNumItems(), 3);
|
|
|
|
EventLog.List nested = (EventLog.List) data.getItem(1);
|
|
assertEquals(nested.getNumItems(), 3);
|
|
|
|
assertEquals(data.getItem(0), 1l);
|
|
assertEquals(nested.getItem(0), "2");
|
|
assertEquals(nested.getItem(1), "three");
|
|
assertEquals(nested.getItem(2), "4");
|
|
assertEquals(data.getItem(2), 5);
|
|
|
|
assertFalse(found);
|
|
found = true;
|
|
}
|
|
}
|
|
|
|
assertTrue(found);
|
|
}
|
|
|
|
public void testEventLogTagsFile() throws Exception {
|
|
EventLogTags tags = new EventLogTags();
|
|
assertEquals(tags.get("answer").mTag, 42);
|
|
assertEquals(tags.get("pi").mTag, 314);
|
|
assertEquals(tags.get("e").mTag, 2718);
|
|
assertEquals(tags.get(42).mName, "answer");
|
|
assertEquals(tags.get(314).mName, "pi");
|
|
assertEquals(tags.get(2718).mName, "e");
|
|
}
|
|
}
|