Skip to content

Commit f974707

Browse files
committed
Share process pool for a test suite and clean up properly
1 parent c96a0dd commit f974707

File tree

6 files changed

+82
-55
lines changed

6 files changed

+82
-55
lines changed

compiler/test/dotty/tools/dotc/CompilationTests.scala

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,12 @@ import scala.concurrent.duration._
1616
import TestSources.sources
1717
import vulpix._
1818

19-
class CompilationTests extends ParallelTesting {
19+
class CompilationTests {
2020
import ParallelTesting._
2121
import TestConfiguration._
2222
import CompilationTests._
2323
import CompilationTest.aggregateTests
2424

25-
// Test suite configuration --------------------------------------------------
26-
27-
def maxDuration = 45.seconds
28-
def numberOfSlaves = 5
29-
def safeMode = Properties.testsSafeMode
30-
def isInteractive = SummaryReport.isInteractive
31-
def testFilter = Properties.testsFilter
32-
def updateCheckFiles: Boolean = Properties.testsUpdateCheckfile
33-
3425
// Positive tests ------------------------------------------------------------
3526

3627
@Test def pos: Unit = {
@@ -333,7 +324,19 @@ class CompilationTests extends ParallelTesting {
333324

334325
}
335326

336-
object CompilationTests {
327+
object CompilationTests extends ParallelTesting {
328+
// Test suite configuration --------------------------------------------------
329+
330+
def maxDuration = 45.seconds
331+
def numberOfSlaves = 5
332+
def safeMode = Properties.testsSafeMode
333+
def isInteractive = SummaryReport.isInteractive
334+
def testFilter = Properties.testsFilter
335+
def updateCheckFiles: Boolean = Properties.testsUpdateCheckfile
336+
337337
implicit val summaryReport: SummaryReporting = new SummaryReport
338-
@AfterClass def cleanup(): Unit = summaryReport.echoSummary()
338+
@AfterClass def tearDown(): Unit = {
339+
super.cleanup()
340+
summaryReport.echoSummary()
341+
}
339342
}

compiler/test/dotty/tools/dotc/FromTastyTests.scala

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,10 @@ import java.io.{File => JFile}
99

1010
import scala.concurrent.duration._
1111

12-
class FromTastyTests extends ParallelTesting {
12+
class FromTastyTests {
1313
import TestConfiguration._
1414
import FromTastyTests._
1515

16-
// Test suite configuration --------------------------------------------------
17-
18-
def maxDuration = 30.seconds
19-
def numberOfSlaves = 5
20-
def safeMode = Properties.testsSafeMode
21-
def isInteractive = SummaryReport.isInteractive
22-
def testFilter = Properties.testsFilter
23-
def updateCheckFiles: Boolean = Properties.testsUpdateCheckfile
24-
2516
@Test def posTestFromTasty: Unit = {
2617
// Can be reproduced with
2718
// > sbt
@@ -46,7 +37,19 @@ class FromTastyTests extends ParallelTesting {
4637
}
4738
}
4839

49-
object FromTastyTests {
40+
object FromTastyTests extends ParallelTesting {
41+
// Test suite configuration --------------------------------------------------
42+
43+
def maxDuration = 30.seconds
44+
def numberOfSlaves = 5
45+
def safeMode = Properties.testsSafeMode
46+
def isInteractive = SummaryReport.isInteractive
47+
def testFilter = Properties.testsFilter
48+
def updateCheckFiles: Boolean = Properties.testsUpdateCheckfile
49+
5050
implicit val summaryReport: SummaryReporting = new SummaryReport
51-
@AfterClass def cleanup(): Unit = summaryReport.echoSummary()
51+
@AfterClass def tearDown(): Unit = {
52+
super.cleanup()
53+
summaryReport.echoSummary()
54+
}
5255
}

compiler/test/dotty/tools/dotc/IdempotencyTests.scala

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,11 @@ import scala.concurrent.duration._
1313
import vulpix._
1414

1515

16-
class IdempotencyTests extends ParallelTesting {
16+
class IdempotencyTests {
1717
import TestConfiguration._
1818
import IdempotencyTests._
1919
import CompilationTest.aggregateTests
2020

21-
// Test suite configuration --------------------------------------------------
22-
23-
def maxDuration = 30.seconds
24-
def numberOfSlaves = 5
25-
def safeMode = Properties.testsSafeMode
26-
def isInteractive = SummaryReport.isInteractive
27-
def testFilter = Properties.testsFilter
28-
def updateCheckFiles: Boolean = Properties.testsUpdateCheckfile
29-
3021
@Category(Array(classOf[SlowTests]))
3122
@Test def idempotency: Unit = {
3223
implicit val testGroup: TestGroup = TestGroup("idempotency")
@@ -71,7 +62,19 @@ class IdempotencyTests extends ParallelTesting {
7162

7263
}
7364

74-
object IdempotencyTests {
65+
object IdempotencyTests extends ParallelTesting {
66+
// Test suite configuration --------------------------------------------------
67+
68+
def maxDuration = 30.seconds
69+
def numberOfSlaves = 5
70+
def safeMode = Properties.testsSafeMode
71+
def isInteractive = SummaryReport.isInteractive
72+
def testFilter = Properties.testsFilter
73+
def updateCheckFiles: Boolean = Properties.testsUpdateCheckfile
74+
7575
implicit val summaryReport: SummaryReporting = new SummaryReport
76-
@AfterClass def cleanup(): Unit = summaryReport.echoSummary()
76+
@AfterClass def tearDown(): Unit = {
77+
super.cleanup()
78+
summaryReport.echoSummary()
79+
}
7780
}

compiler/test/dotty/tools/vulpix/RunnerOrchestration.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ trait RunnerOrchestration {
4949
def runMain(classPath: String)(implicit summaryReport: SummaryReporting): Status =
5050
monitor.runMain(classPath)
5151

52+
/** Kill all processes */
53+
def cleanup() = monitor.killAll()
54+
5255
private val monitor = new RunnerMonitor
5356

5457
/** The runner monitor object keeps track of child JVM processes by keeping
@@ -195,9 +198,10 @@ trait RunnerOrchestration {
195198
result
196199
}
197200

198-
private def killAll(): Unit =
201+
def killAll(): Unit = {
199202
freeRunners.foreach(_.kill())
200203
busyRunners.foreach(_.kill())
204+
}
201205

202206
// On shutdown, we need to kill all runners:
203207
sys.addShutdownHook(killAll())
Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package dotty.tools
22
package vulpix
33

4-
import org.junit.Test
4+
import org.junit.{ Test, AfterClass }
55
import org.junit.experimental.categories.Category
66
import scala.concurrent.duration._
77
import TestConfiguration._
@@ -11,14 +11,8 @@ import TestConfiguration._
1111
* output against an expected result.
1212
*/
1313
@Category(Array(classOf[dotty.VulpixMetaTests]))
14-
class VulpixMetaTests extends ParallelTesting {
15-
def maxDuration = 1.seconds
16-
// Ensure maximum reproducibility.
17-
def numberOfSlaves = 1
18-
def safeMode = false // Don't fork a new VM after each run test
19-
def isInteractive = false // Don't beautify output for interactive use.
20-
def testFilter = None // Run all the tests.
21-
def updateCheckFiles: Boolean = false
14+
class VulpixMetaTests {
15+
import VulpixMetaTests._
2216

2317
implicit val summaryReport: SummaryReporting = new SummaryReport
2418
implicit def testGroup: TestGroup = TestGroup("VulpixMetaTests")
@@ -27,3 +21,16 @@ class VulpixMetaTests extends ParallelTesting {
2721
@Test def compileNeg: Unit = compileFilesInDir("tests/vulpix-tests/meta/neg", defaultOptions).checkExpectedErrors()
2822
@Test def runAll: Unit = compileFilesInDir("tests/vulpix-tests/meta/run", defaultOptions).checkRuns()
2923
}
24+
25+
object VulpixMetaTests extends ParallelTesting {
26+
def maxDuration = 1.seconds
27+
// Ensure maximum reproducibility.
28+
def numberOfSlaves = 1
29+
def safeMode = false // Don't fork a new VM after each run test
30+
def isInteractive = false // Don't beautify output for interactive use.
31+
def testFilter = None // Run all the tests.
32+
def updateCheckFiles: Boolean = false
33+
34+
@AfterClass
35+
def tearDown() = this.cleanup()
36+
}

compiler/test/dotty/tools/vulpix/VulpixUnitTests.scala

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,20 @@ package vulpix
33

44
import java.io.{File => JFile}
55
import org.junit.Assert._
6-
import org.junit.Test
6+
import org.junit.{ Test, AfterClass }
77

88
import scala.concurrent.duration._
99
import scala.util.control.NonFatal
1010

1111
/** Unit tests for the Vulpix test suite */
12-
class VulpixUnitTests extends ParallelTesting {
12+
class VulpixUnitTests {
13+
import VulpixUnitTests._
1314
import TestConfiguration._
1415

1516
implicit val _: SummaryReporting = new NoSummaryReport
1617

1718
implicit def testGroup: TestGroup = TestGroup("VulpixTests")
1819

19-
def maxDuration = 3.seconds
20-
def numberOfSlaves = 5
21-
def safeMode = sys.env.get("SAFEMODE").isDefined
22-
def isInteractive = !sys.env.contains("DRONE")
23-
def testFilter = None
24-
def updateCheckFiles: Boolean = false
25-
2620
// To fail with something else than an AssertionError
2721
def fail(): Unit = throw new Exception("didn't fail properly")
2822

@@ -103,3 +97,16 @@ class VulpixUnitTests extends ParallelTesting {
10397
}
10498
}
10599
}
100+
101+
102+
object VulpixUnitTests extends ParallelTesting {
103+
def maxDuration = 3.seconds
104+
def numberOfSlaves = 5
105+
def safeMode = sys.env.get("SAFEMODE").isDefined
106+
def isInteractive = !sys.env.contains("DRONE")
107+
def testFilter = None
108+
def updateCheckFiles: Boolean = false
109+
110+
@AfterClass
111+
def tearDown() = this.cleanup()
112+
}

0 commit comments

Comments
 (0)