Skip to content

Commit 0f382c5

Browse files
committed
Made tests better for parallel execution
1 parent 9ee8182 commit 0f382c5

File tree

2 files changed

+24
-22
lines changed

2 files changed

+24
-22
lines changed

src/test/kotlin/org/jetbrains/kotlin/jupyter/test/capturingStreamTests.kt

+10-12
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import org.junit.Assert.assertEquals
77
import org.junit.Test
88
import java.io.OutputStream
99
import java.io.PrintStream
10+
import java.util.concurrent.atomic.AtomicInteger
1011

1112
class CapturingStreamTests {
1213
private val nullOStream = object: OutputStream() {
@@ -58,44 +59,41 @@ class CapturingStreamTests {
5859
val contents = "0123456789\nfortran".toByteArray()
5960
val expected = arrayOf("012", "345", "678", "9\n", "for", "tra", "n")
6061

61-
var i = 0
62+
val i = AtomicInteger()
6263
val s = getStream(maxBufferSize = 3) {
63-
assertEquals(expected[i], it)
64-
++i
64+
assertEquals(expected[i.getAndIncrement()], it)
6565
}
6666

6767
s.write(contents)
6868
s.flush()
6969

70-
assertEquals(expected.size, i)
70+
assertEquals(expected.size, i.get())
7171
}
7272

7373
@Test
7474
fun testNewlineBufferSize() {
7575
val contents = "12345\n12\n3451234567890".toByteArray()
7676
val expected = arrayOf("12345\n", "12\n", "345123456", "7890")
7777

78-
var i = 0
78+
val i = AtomicInteger()
7979
val s = getStream(maxBufferSize = 9, maxBufferNewlineSize = 6) {
80-
assertEquals(expected[i], it)
81-
++i
80+
assertEquals(expected[i.getAndIncrement()], it)
8281
}
8382

8483
s.write(contents)
8584
s.flush()
8685

87-
assertEquals(expected.size, i)
86+
assertEquals(expected.size, i.get())
8887
}
8988

9089
@Test
9190
fun testMaxBufferLifeTime() {
9291
val strings = arrayOf("11", "22", "33", "44", "55", "66")
9392
val expected = arrayOf("1122", "3344", "5566")
9493

95-
var i = 0
94+
val i = AtomicInteger(0)
9695
val s = getStream(maxBufferLifeTimeMs = 1000) {
97-
assertEquals(expected[i], it)
98-
++i
96+
assertEquals(expected[i.getAndIncrement()], it)
9997
}
10098

10199
strings.forEach {
@@ -105,6 +103,6 @@ class CapturingStreamTests {
105103

106104
s.flush()
107105

108-
assertEquals(expected.size, i)
106+
assertEquals(expected.size, i.get())
109107
}
110108
}

src/test/kotlin/org/jetbrains/kotlin/jupyter/test/kernelServerTestsBase.kt

+14-10
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,22 @@ open class KernelServerTestsBase {
4444

4545
companion object {
4646
private val rng = Random()
47+
private val usedPorts = mutableSetOf<Int>()
4748
private const val portRangeStart = 32768
4849
private const val portRangeEnd = 65536
4950

50-
fun randomPort(): Int =
51-
generateSequence { portRangeStart + rng.nextInt(portRangeEnd - portRangeStart) }.find {
52-
try {
53-
ServerSocket(it).close()
54-
true
55-
}
56-
catch (e: IOException) {
57-
false
58-
}
59-
}!!
51+
@Synchronized
52+
fun randomPort(): Int {
53+
val res = generateSequence { portRangeStart + rng.nextInt(portRangeEnd - portRangeStart) }.find {
54+
try {
55+
ServerSocket(it).close()
56+
!usedPorts.contains(it)
57+
} catch (e: IOException) {
58+
false
59+
}
60+
}!!
61+
usedPorts.add(res)
62+
return res
63+
}
6064
}
6165
}

0 commit comments

Comments
 (0)