summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Igor Murashkin <iam@google.com> 2018-03-01 15:47:31 -0800
committer Igor Murashkin <iam@google.com> 2018-03-01 15:48:09 -0800
commit34e992e481044a4a87c30fac368673f63fdacf9e (patch)
tree4efb3585e86c10b3f97293fd79ffe6d7e7ef97d8
parent926fa77f7d2f53e3fad18e80232856184c80136d (diff)
test: Fix 036-finalizer test flake on --jvm
Bug: 73888836 Test: art/test/testrunner/testrunner.py --jvm --host -t 036-finalizer Change-Id: Ia183de338a0582b4123fb9a58a07e1cec8582385
-rw-r--r--test/036-finalizer/expected.txt2
-rw-r--r--test/036-finalizer/src/Main.java16
2 files changed, 12 insertions, 6 deletions
diff --git a/test/036-finalizer/expected.txt b/test/036-finalizer/expected.txt
index 36fa5f8e79..c5d03ba85a 100644
--- a/test/036-finalizer/expected.txt
+++ b/test/036-finalizer/expected.txt
@@ -11,4 +11,4 @@ gc + finalize
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 734830f7de..ff6186b240 100644
--- a/test/036-finalizer/src/Main.java
+++ b/test/036-finalizer/src/Main.java
@@ -25,6 +25,8 @@ import java.util.List;
* 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 @@ public class Main {
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 {