blob: dd77e1efa47d6f0e646d9ff95259a063099b78a4 [file] [log] [blame]
package kotlinx.coroutines.experimental.channels
import kotlinx.coroutines.experimental.*
import org.junit.*
import org.junit.runner.*
import org.junit.runners.*
@RunWith(Parameterized::class)
class ArrayChannelStressTest(private val capacity: Int) : TestBase() {
companion object {
@Parameterized.Parameters(name = "{0}, nSenders={1}, nReceivers={2}")
@JvmStatic
fun params(): Collection<Array<Any>> = listOf(1, 10, 100, 100_000, 1_000_000).map { arrayOf<Any>(it) }
}
@Test
fun testStress() = runTest {
val n = 100_000 * stressTestMultiplier
val q = ArrayChannel<Int>(capacity)
val sender = launch(kotlin.coroutines.experimental.coroutineContext) {
for (i in 1..n) {
q.send(i)
}
expect(2)
}
val receiver = launch(kotlin.coroutines.experimental.coroutineContext) {
for (i in 1..n) {
val next = q.receive()
check(next == i)
}
expect(3)
}
expect(1)
sender.join()
receiver.join()
finish(4)
}
}