xref: /aosp_15_r20/external/kotlinx.serialization/gradle/benchmark-parsing.gradle (revision 57b5a4a64c534cf7f27ac9427ceab07f3d8ed3d8)
1*57b5a4a6SAndroid Build Coastguard Workerimport groovy.json.JsonSlurper
2*57b5a4a6SAndroid Build Coastguard Workerimport org.gradle.api.*
3*57b5a4a6SAndroid Build Coastguard Worker
4*57b5a4a6SAndroid Build Coastguard Worker/**
5*57b5a4a6SAndroid Build Coastguard Worker * Utility for printing benchmark results.
6*57b5a4a6SAndroid Build Coastguard Worker * Results can be obtained with JMH flags
7*57b5a4a6SAndroid Build Coastguard Worker * -rf json -rff serialization-benchmark-results.json
8*57b5a4a6SAndroid Build Coastguard Worker */
9*57b5a4a6SAndroid Build Coastguard Workerclass PrintBenchmarksTask extends DefaultTask {
10*57b5a4a6SAndroid Build Coastguard Worker    private String fileName = "serialization-benchmark-results.json"
11*57b5a4a6SAndroid Build Coastguard Worker
12*57b5a4a6SAndroid Build Coastguard Worker    @TaskAction
13*57b5a4a6SAndroid Build Coastguard Worker    def printBenchmarkJsonAsTeamcityStats() {
14*57b5a4a6SAndroid Build Coastguard Worker        File jsonFile = project.file(fileName)
15*57b5a4a6SAndroid Build Coastguard Worker        if (!jsonFile.exists()) throw new TaskExecutionException(this, new FileNotFoundException("File $fileName not found"))
16*57b5a4a6SAndroid Build Coastguard Worker        def parsedJson = new JsonSlurper().parseText(jsonFile.text)
17*57b5a4a6SAndroid Build Coastguard Worker
18*57b5a4a6SAndroid Build Coastguard Worker        parsedJson.each { v ->
19*57b5a4a6SAndroid Build Coastguard Worker            def name = (v.benchmark - "kotlinx.benchmarks.")
20*57b5a4a6SAndroid Build Coastguard Worker            def score = v.primaryMetric.score
21*57b5a4a6SAndroid Build Coastguard Worker            println("##teamcity[buildStatisticValue key='" + name + "' value='" + score + "']")
22*57b5a4a6SAndroid Build Coastguard Worker        }
23*57b5a4a6SAndroid Build Coastguard Worker    }
24*57b5a4a6SAndroid Build Coastguard Worker}
25*57b5a4a6SAndroid Build Coastguard Worker
26*57b5a4a6SAndroid Build Coastguard WorkerrootProject.tasks.register("printBenchmarksJsonAsTeamcityStats", PrintBenchmarksTask)
27