From cb66ae8d9e16557144991766982daf4b9aad70b7 Mon Sep 17 00:00:00 2001 From: Alexander Shabalin Date: Tue, 20 Oct 2020 12:13:16 +0300 Subject: [PATCH] Fix tests in Cleaners (#4454) --- backend.native/tests/build.gradle | 3 + .../tests/runtime/basic/cleaner_workers.kt | 92 +------------------ 2 files changed, 4 insertions(+), 91 deletions(-) diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 1baf49c063c..9c9c5a747d7 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -4295,6 +4295,7 @@ dynamicTest("interop_cleaners_main_thread") { cSource = "$projectDir/interop/cleaners/main_thread.cpp" clangTool = "clang++" goldValue = "42\n" + flags = ['-Xopt-in=kotlin.native.internal.InternalForKotlinNative'] } dynamicTest("interop_cleaners_second_thread") { @@ -4303,6 +4304,7 @@ dynamicTest("interop_cleaners_second_thread") { cSource = "$projectDir/interop/cleaners/second_thread.cpp" clangTool = "clang++" goldValue = "42\n" + flags = ['-Xopt-in=kotlin.native.internal.InternalForKotlinNative'] } dynamicTest("interop_cleaners_leak") { @@ -4311,6 +4313,7 @@ dynamicTest("interop_cleaners_leak") { cSource = "$projectDir/interop/cleaners/leak.cpp" clangTool = "clang++" goldValue = "" + flags = ['-Xopt-in=kotlin.native.internal.InternalForKotlinNative'] } task library_mismatch(type: KonanDriverTest) { diff --git a/backend.native/tests/runtime/basic/cleaner_workers.kt b/backend.native/tests/runtime/basic/cleaner_workers.kt index c7b5e35996a..b82c6644895 100644 --- a/backend.native/tests/runtime/basic/cleaner_workers.kt +++ b/backend.native/tests/runtime/basic/cleaner_workers.kt @@ -103,66 +103,6 @@ fun testCleanerDestroyWithChild() { } } -@Test -fun testCleanerDestroyFrozenWithChild() { - val worker = Worker.start() - - val called = AtomicBoolean(false); - var funBoxWeak: WeakReference? = null - var cleanerWeak: WeakReference? = null - worker.execute(TransferMode.SAFE, { - val funBox = FunBox { called.value = true }.freeze() - funBoxWeak = WeakReference(funBox) - val cleaner = createCleaner(funBox) { it.call() }.freeze() - cleanerWeak = WeakReference(cleaner) - Pair(called, cleaner) - }) { (called, cleaner) -> - assertFalse(called.value) - }.result - - GC.collect() - worker.requestTermination().result - - tryWithTimeout(3) { - GC.collect() // Collect local stack (from previous iteration) - performGCOnCleanerWorker() // Collect cleaners stack - - assertNull(cleanerWeak!!.value) - assertTrue(called.value) - assertNull(funBoxWeak!!.value) - } -} - -@Test -fun testCleanerDestroyFrozenInChild() { - val worker = Worker.start() - - val called = AtomicBoolean(false); - var funBoxWeak: WeakReference? = null - var cleanerWeak: WeakReference? = null - { - worker.execute(TransferMode.SAFE, { - val funBox = FunBox { called.value = true }.freeze() - funBoxWeak = WeakReference(funBox) - val cleaner = createCleaner(funBox) { it.call() }.freeze() - cleanerWeak = WeakReference(cleaner) - Pair(called, cleaner) - }) { (called, cleaner) -> - assertFalse(called.value) - }.result - }() - - GC.collect() - worker.execute(TransferMode.SAFE, {}) { GC.collect() }.result - performGCOnCleanerWorker() - - assertNull(cleanerWeak!!.value) - assertTrue(called.value) - assertNull(funBoxWeak!!.value) - - worker.requestTermination().result -} - @Test fun testCleanerDestroyInMain() { val worker = Worker.start() @@ -193,36 +133,6 @@ fun testCleanerDestroyInMain() { worker.requestTermination().result } -@Test -fun testCleanerDestroyFrozenInMain() { - val worker = Worker.start() - - val called = AtomicBoolean(false); - var funBoxWeak: WeakReference? = null - var cleanerWeak: WeakReference? = null - { - val result = worker.execute(TransferMode.SAFE, { called }) { called -> - val funBox = FunBox { called.value = true }.freeze() - val cleaner = createCleaner(funBox) { it.call() }.freeze() - Triple(cleaner, WeakReference(funBox), WeakReference(cleaner)) - }.result - val cleaner = result.first - funBoxWeak = result.second - cleanerWeak = result.third - assertFalse(called.value) - }() - - GC.collect() - worker.execute(TransferMode.SAFE, {}) { GC.collect() }.result - performGCOnCleanerWorker() - - assertNull(cleanerWeak!!.value) - assertTrue(called.value) - assertNull(funBoxWeak!!.value) - - worker.requestTermination().result -} - @Test fun testCleanerDestroyShared() { val worker = Worker.start() @@ -234,7 +144,7 @@ fun testCleanerDestroyShared() { { val funBox = FunBox { called.value = true }.freeze() funBoxWeak = WeakReference(funBox) - val cleaner = createCleaner(funBox) { it.call() }.freeze() + val cleaner = createCleaner(funBox) { it.call() } cleanerWeak = WeakReference(cleaner) cleanerHolder.value = cleaner worker.execute(TransferMode.SAFE, { Pair(called, cleanerHolder) }) { (called, cleanerHolder) ->