summaryrefslogtreecommitdiffstats
path: root/test/036-finalizer
diff options
context:
space:
mode:
authorMathieu Chartier <mathieuc@google.com>2014-10-15 09:59:03 -0700
committerMathieu Chartier <mathieuc@google.com>2014-10-15 10:05:10 -0700
commitbbb547994cafa049cc1c0b70e049e3833256b935 (patch)
tree14a85bd03e65b3af0bb28c11cceba2c70434c492 /test/036-finalizer
parent5c5efc253507eb43265997c9afcd778f72b6cef4 (diff)
downloadart-bbb547994cafa049cc1c0b70e049e3833256b935.zip
art-bbb547994cafa049cc1c0b70e049e3833256b935.tar.gz
art-bbb547994cafa049cc1c0b70e049e3833256b935.tar.bz2
Add more logging to finalization test
We now print which elements were not finalized then attempt a sleep to see if the error is a race condition or a another error. Bug: 17932313 Change-Id: I4d41abfff0fa6838dd513cf23821bb486305d74f
Diffstat (limited to 'test/036-finalizer')
-rw-r--r--test/036-finalizer/src/Main.java26
1 files changed, 23 insertions, 3 deletions
diff --git a/test/036-finalizer/src/Main.java b/test/036-finalizer/src/Main.java
index 4ebbdc5..e3cf4ee 100644
--- a/test/036-finalizer/src/Main.java
+++ b/test/036-finalizer/src/Main.java
@@ -125,18 +125,28 @@ public class Main {
}
static class FinalizeCounter {
+ public static final int maxCount = 1024;
+ public static boolean finalized[] = new boolean[maxCount];
private static Object finalizeLock = new Object();
private static volatile int finalizeCount = 0;
private int index;
static int getCount() {
return finalizeCount;
}
+ static void printNonFinalized() {
+ for (int i = 0; i < maxCount; ++i) {
+ if (!FinalizeCounter.finalized[i]) {
+ System.err.println("Element " + i + " was not finalized");
+ }
+ }
+ }
FinalizeCounter(int index) {
this.index = index;
}
protected void finalize() {
synchronized(finalizeLock) {
++finalizeCount;
+ finalized[index] = true;
}
}
}
@@ -149,11 +159,21 @@ public class Main {
}
private static void runFinalizationTest() {
- int count = 1024;
- allocFinalizableObjects(count);
+ allocFinalizableObjects(FinalizeCounter.maxCount);
Runtime.getRuntime().gc();
System.runFinalization();
- System.out.println("Finalized " + FinalizeCounter.getCount() + " / " + count);
+ System.out.println("Finalized " + FinalizeCounter.getCount() + " / " + FinalizeCounter.maxCount);
+ if (FinalizeCounter.getCount() != FinalizeCounter.maxCount) {
+ // Print out all the finalized elements.
+ FinalizeCounter.printNonFinalized();
+ // Try to sleep for a couple seconds to see if the objects became finalized after.
+ try {
+ java.lang.Thread.sleep(2000);
+ } catch (InterruptedException e) {
+ }
+ System.out.println("After sleep finalized " + FinalizeCounter.getCount() + " / " + FinalizeCounter.maxCount);
+ FinalizeCounter.printNonFinalized();
+ }
}
public static class FinalizerTest {