mirror of https://github.com/sbt/sbt.git
[2.x] test: Add test for sbt --client startup time (#8599)
* Add test for sbt --client startup time * Skip startup time test on macOS due to slow hostname resolution
This commit is contained in:
parent
2a5746cf6c
commit
37c6eb2cd9
|
|
@ -138,4 +138,47 @@ object ExtendedRunnerTest extends BasicTestSuite:
|
|||
}
|
||||
()
|
||||
}
|
||||
|
||||
// Test for issue #6485: Test `sbt --client` startup
|
||||
// https://github.com/sbt/sbt/issues/6485
|
||||
test("sbt --client startup time") {
|
||||
if (isWindows || isMac) {
|
||||
// Skip on Windows (sbtn behavior differs) and macOS CI (slow hostname resolution)
|
||||
()
|
||||
} else {
|
||||
// First call starts the server if not running (warmup)
|
||||
val warmup = sbtProcess("--client", "version").!
|
||||
assert(warmup == 0, "Warmup sbt --client version failed")
|
||||
|
||||
// Measure startup time for sbt --client when server is already running
|
||||
// Run multiple times and take the average to reduce variance
|
||||
val iterations = 5
|
||||
val times = (1 to iterations).map { _ =>
|
||||
val start = System.nanoTime()
|
||||
val exitCode = sbtProcess("--client", "version").!
|
||||
val elapsed = (System.nanoTime() - start) / 1_000_000 // Convert to milliseconds
|
||||
assert(exitCode == 0, "sbt --client version failed")
|
||||
elapsed
|
||||
}
|
||||
|
||||
val avgTime = times.sum / iterations
|
||||
val maxTime = times.max
|
||||
|
||||
println(s"sbt --client startup times (ms): ${times.mkString(", ")}")
|
||||
println(s"Average: ${avgTime}ms, Max: ${maxTime}ms")
|
||||
|
||||
// Cap at 2000ms to catch significant regressions while allowing for CI variance.
|
||||
// The original issue #5980 mentioned ~200ms on developer machines in 2021,
|
||||
// but CI runners are typically 2-3x slower than local development machines.
|
||||
assert(
|
||||
avgTime < 2000,
|
||||
s"sbt --client startup time (${avgTime}ms average) exceeded 2000ms threshold"
|
||||
)
|
||||
|
||||
// Cleanup: shutdown the server
|
||||
val shutdown = sbtProcess("--client", "shutdown").!
|
||||
assert(shutdown == 0, "Failed to shutdown sbt server")
|
||||
}
|
||||
()
|
||||
}
|
||||
end ExtendedRunnerTest
|
||||
|
|
|
|||
Loading…
Reference in New Issue