Limit test 904 to examining test threads
Test 904 could flake due to capturing allocations from unrelated
android system threads. To fix this we filter the allocations we have
collected for those from threads created for/running the test.
Test: ./test.py --host -j50
Change-Id: Id4636dc153ab5a8208cd5f7bb255e29939dc2b02
diff --git a/test/904-object-allocation/src/art/Test904.java b/test/904-object-allocation/src/art/Test904.java
index fda8985..a2848fb 100644
--- a/test/904-object-allocation/src/art/Test904.java
+++ b/test/904-object-allocation/src/art/Test904.java
@@ -47,7 +47,8 @@
// Enable actual logging callback.
setupObjectAllocCallback(true);
- System.out.println(Arrays.toString(getTrackingEventMessages()));
+ System.out.println(Arrays.toString(getTrackingEventMessages(
+ new Thread[] { Thread.currentThread(), })));
enableAllocationTracking(null, true);
@@ -66,22 +67,25 @@
l.add(new Byte((byte)0));
- System.out.println(Arrays.toString(getTrackingEventMessages()));
+ System.out.println(Arrays.toString(getTrackingEventMessages(
+ new Thread[] { Thread.currentThread(), })));
System.out.println("Tracking on same thread");
- testThread(l, true, true);
+ Thread test_thread = testThread(l, true, true);
l.add(new Byte((byte)0));
- System.out.println(Arrays.toString(getTrackingEventMessages()));
+ System.out.println(Arrays.toString(getTrackingEventMessages(
+ new Thread[] { Thread.currentThread(), test_thread, })));
System.out.println("Tracking on same thread, not disabling tracking");
- testThread(l, true, false);
+ test_thread = testThread(l, true, false);
- System.out.println(Arrays.toString(getTrackingEventMessages()));
+ System.out.println(Arrays.toString(getTrackingEventMessages(
+ new Thread[] { Thread.currentThread(), test_thread, })));
System.out.println("Tracking on different thread");
- testThread(l, false, true);
+ test_thread = testThread(l, false, true);
l.add(new Byte((byte)0));
@@ -89,12 +93,13 @@
// check that shutdown works correctly.
setupObjectAllocCallback(false);
- System.out.println(Arrays.toString(getTrackingEventMessages()));
+ System.out.println(Arrays.toString(getTrackingEventMessages(
+ new Thread[] { Thread.currentThread(), test_thread, })));
enableAllocationTracking(null, true);
}
- private static void testThread(final ArrayList<Object> l, final boolean sameThread,
+ private static Thread testThread(final ArrayList<Object> l, final boolean sameThread,
final boolean disableTracking) throws Exception {
final SimpleBarrier startBarrier = new SimpleBarrier(1);
final SimpleBarrier trackBarrier = new SimpleBarrier(1);
@@ -126,6 +131,7 @@
trackBarrier.dec();
t.join();
+ return t;
}
private static class SimpleBarrier {
@@ -149,5 +155,5 @@
private static native void setupObjectAllocCallback(boolean enable);
private static native void enableAllocationTracking(Thread thread, boolean enable);
- private static native String[] getTrackingEventMessages();
+ private static native String[] getTrackingEventMessages(Thread[] threads);
}