File tree Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -4,6 +4,8 @@ import kotlinx.coroutines.testing.*
4
4
import kotlinx.coroutines.exceptions.*
5
5
import kotlin.coroutines.*
6
6
import kotlin.test.*
7
+ import kotlin.time.Duration.Companion.milliseconds
8
+ import kotlin.time.Duration.Companion.seconds
7
9
8
10
class RunBlockingTest : TestBase () {
9
11
@@ -176,4 +178,20 @@ class RunBlockingTest : TestBase() {
176
178
}
177
179
}
178
180
}
181
+
182
+ /* * Tests that the delayed tasks scheduled on a closed `runBlocking` event loop get processed in reasonable time. */
183
+ @Test
184
+ fun testReschedulingDelayedTasks () {
185
+ val job = runBlocking {
186
+ val dispatcher = coroutineContext[ContinuationInterceptor ]!!
187
+ GlobalScope .launch(dispatcher) {
188
+ delay(1 .milliseconds)
189
+ }
190
+ }
191
+ runBlocking {
192
+ withTimeout(10 .seconds) {
193
+ job.join()
194
+ }
195
+ }
196
+ }
179
197
}
Original file line number Diff line number Diff line change @@ -15,7 +15,7 @@ internal actual abstract class EventLoopImplPlatform : EventLoop() {
15
15
}
16
16
17
17
protected actual fun reschedule (now : Long , delayedTask : EventLoopImplBase .DelayedTask ) {
18
- val delayTimeMillis = delayNanosToMillis(nanoTime() - now)
18
+ val delayTimeMillis = delayNanosToMillis(delayedTask. nanoTime - now)
19
19
DefaultExecutor .invokeOnTimeout(delayTimeMillis, delayedTask, EmptyCoroutineContext )
20
20
}
21
21
}
You can’t perform that action at this time.
0 commit comments