/* * Copyright 2016-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ package kotlinx.coroutines import org.junit.Test import kotlin.test.* class WithTimeoutChildDispatchStressTest : TestBase() { private val N_REPEATS = 10_000 * stressTestMultiplier /** * This stress-test makes sure that dispatching resumption from within withTimeout * works appropriately (without additional dispatch) despite the presence of * children coroutine in a different dispatcher. */ @Test fun testChildDispatch() = runBlocking { repeat(N_REPEATS) { val result = withTimeout(5000) { // child in different dispatcher val job = launch(Dispatchers.Default) { // done nothing, but dispatches to join from another thread } job.join() "DONE" } assertEquals("DONE", result) } } }