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