test: Fix 036-finalizer test flake on --jvm
Bug: 73888836
Test: art/test/testrunner/testrunner.py --jvm --host -t 036-finalizer
Change-Id: Ia183de338a0582b4123fb9a58a07e1cec8582385
diff --git a/test/036-finalizer/expected.txt b/test/036-finalizer/expected.txt
index 36fa5f8..c5d03ba 100644
--- a/test/036-finalizer/expected.txt
+++ b/test/036-finalizer/expected.txt
@@ -11,4 +11,4 @@
sleep
reborn: [FinalizerTest message=nothing, finalized=false]
wimp: null
-Finalized 1024 / 1024
+After sleep finalized 1024 / 1024
diff --git a/test/036-finalizer/src/Main.java b/test/036-finalizer/src/Main.java
index 734830f..ff6186b 100644
--- a/test/036-finalizer/src/Main.java
+++ b/test/036-finalizer/src/Main.java
@@ -25,6 +25,8 @@
* immediately or very soon.
*/
public class Main {
+ private final static boolean isDalvik = System.getProperty("java.vm.name").equals("Dalvik");
+
private static void snooze(int ms) {
try {
Thread.sleep(ms);
@@ -146,18 +148,22 @@
allocFinalizableObjects(FinalizeCounter.maxCount);
Runtime.getRuntime().gc();
System.runFinalization();
- System.out.println("Finalized " + FinalizeCounter.getCount() + " / " + FinalizeCounter.maxCount);
if (FinalizeCounter.getCount() != FinalizeCounter.maxCount) {
- // Print out all the finalized elements.
- FinalizeCounter.printNonFinalized();
+ if (isDalvik) {
+ // runFinalization is "expend effort", only ART makes a strong effort all finalizers ran.
+ System.out.println("Finalized " + 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) {
+ throw new AssertionError(e);
}
- System.out.println("After sleep finalized " + FinalizeCounter.getCount() + " / " + FinalizeCounter.maxCount);
- FinalizeCounter.printNonFinalized();
}
+ System.out.println("After sleep finalized " + FinalizeCounter.getCount() + " / " + FinalizeCounter.maxCount);
+ FinalizeCounter.printNonFinalized();
}
public static class FinalizerTest {