fc9ac67980
Lessen CPU load on the main thread. Remove fragile checks.
35 lines
1.1 KiB
Kotlin
35 lines
1.1 KiB
Kotlin
/*
|
|
* Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
*/
|
|
|
|
package test.concurrent
|
|
|
|
import java.util.*
|
|
import kotlin.concurrent.*
|
|
import kotlin.test.*
|
|
|
|
import java.util.concurrent.CountDownLatch
|
|
import java.util.concurrent.TimeUnit
|
|
import java.util.concurrent.TimeoutException
|
|
|
|
|
|
class TimerTest {
|
|
@Test fun scheduledTask() {
|
|
val timer = Timer()
|
|
|
|
val latch = CountDownLatch(10)
|
|
val startedAt = System.nanoTime()
|
|
lateinit var callbackTask: TimerTask
|
|
val task = timer.scheduleAtFixedRate(100, 10) {
|
|
callbackTask = this
|
|
latch.countDown()
|
|
if (latch.count == 0L) this.cancel()
|
|
}
|
|
if (!latch.await(2500, TimeUnit.MILLISECONDS)) throw TimeoutException()
|
|
val elapsed = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - startedAt)
|
|
val expectedAtLeast = 180L
|
|
assertTrue(elapsed > expectedAtLeast, "Expected elapsed ($elapsed ms) to be at least $expectedAtLeast ms")
|
|
assertSame(task, callbackTask)
|
|
}
|
|
} |