Skip to content

Commit fd372ae

Browse files
authored
Merge pull request #4140 from graphql-java/record-test-times
Record test times and slowests tests
2 parents ac5367d + b502921 commit fd372ae

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

build.gradle

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,10 @@ artifacts {
309309
}
310310

311311
List<TestDescriptor> failedTests = []
312+
Map<String, Integer> testsAndTime = [:]
313+
Map<String, Integer> testClassesAndTime = [:]
314+
int testCount = 0
315+
long testTime = 0L
312316

313317
tasks.withType(Test) {
314318
useJUnitPlatform()
@@ -322,9 +326,19 @@ tasks.withType(Test) {
322326
dependsOn "jmhClasses"
323327

324328
afterTest { TestDescriptor descriptor, TestResult result ->
329+
testCount++
325330
if (result.getFailedTestCount() > 0) {
326331
failedTests.add(descriptor)
327332
}
333+
def ms = (int) (result.endTime - result.startTime)
334+
testTime += ms
335+
String className = descriptor.className ?: "unknown"
336+
String name = className + "." + descriptor.displayName
337+
if (ms > 500) {
338+
testsAndTime[name] = ms
339+
testClassesAndTime.compute(className) { k, v -> v == null ? ms : v + ms }
340+
println "\tTest '$name' took ${ms}ms"
341+
}
328342
}
329343
}
330344

@@ -349,6 +363,10 @@ test.dependsOn testWithJava11
349363
* See https://github.com/gradle/gradle/issues/20151
350364
*/
351365
gradle.buildFinished {
366+
println "\n\n"
367+
println "============================"
368+
println "$testCount tests run in $testTime ms"
369+
println "============================"
352370
if (!failedTests.isEmpty()) {
353371
println "\n\n"
354372
println "============================"
@@ -359,6 +377,28 @@ gradle.buildFinished {
359377
}
360378
println "============================"
361379
}
380+
// slowest tests
381+
println "\n\n"
382+
println "============================"
383+
println "Top 20 slowest test classes"
384+
println "============================"
385+
showTestResults(testClassesAndTime,20) { e ->
386+
println "\tTest class ${e.key} took ${e.value}ms"
387+
}
388+
println "\n\n"
389+
println "============================"
390+
println "Top 50 slowest tests"
391+
println "============================"
392+
showTestResults(testsAndTime,50) { e ->
393+
println "\tTest ${e.key} took ${e.value}ms"
394+
}
395+
}
396+
397+
static private showTestResults(Map<String, Integer> testMap, int limit, Closure closure) {
398+
testMap.entrySet().stream()
399+
.sorted { e1, e2 -> e2.getValue() - e1.getValue() }
400+
.limit(limit)
401+
.forEach(closure)
362402
}
363403

364404

0 commit comments

Comments
 (0)