blob: 8263083e4e4a2216fc824f9ab3e0e83f46962ff6 [file] [log] [blame]
/*
* 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");
}
}