Fix flaky test DeadObjectWithFinalizeTest
We have another test that does the same which does not flake.
Fixes: b/384870990
Change-Id: I5c37fb32ce4730ce5094ae6f53bdd85b68dcdfd7
diff --git a/src/test/java/com/android/tools/r8/deadcode/DeadObjectWithFinalizeTest.java b/src/test/java/com/android/tools/r8/deadcode/DeadObjectWithFinalizeTest.java
index 81959a6..ab8b929 100644
--- a/src/test/java/com/android/tools/r8/deadcode/DeadObjectWithFinalizeTest.java
+++ b/src/test/java/com/android/tools/r8/deadcode/DeadObjectWithFinalizeTest.java
@@ -6,6 +6,8 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -31,21 +33,28 @@
.setMinApi(parameters)
.compile()
.run(parameters.getRuntime(), Main.class)
- .assertSuccessWithOutputLines("Finalize!");
+ .assertSuccessWithOutputLines("passed fence");
}
static class Main {
- public static void main(String[] args) {
+ static final CountDownLatch fence = new CountDownLatch(1);
+
+ public static void main(String[] args) throws Exception {
new Object() {
@Override
protected void finalize() {
- System.out.println("Finalize!");
+ fence.countDown();
}
};
Runtime.getRuntime().gc();
Runtime.getRuntime().runFinalization();
+ if (fence.await(10, TimeUnit.SECONDS)) {
+ System.out.println("passed fence");
+ } else {
+ System.out.println("fence await timed out");
+ }
}
}
}