Frage

This is probably more a Gradle question than a Caliper question, but I am still rather new to Gradle. I am interested in providing a task in my build that can run some benchmarks using Caliper. I have already added Caliper to my testCompile dependencies, and that works and pulls everything down. I would like to know how to provide a task that will actually run the benchmarks.

Btw, I already know about caliper-ci. I do have a Jenkins build, but it's on a cloud service that doesn't yet allow me to configure usage of caliper-ci, and besides, I want to be able to run locally before committing changes to the cloud.

War es hilfreich?

Lösung

It turns out it was a simple case of using JavaExec (I was new to that anyway):

task runBenchmark(type: JavaExec, dependsOn: test) {
    def vmVer = System.getProperty('java.version')
    def osName = System.getProperty('os.name').replaceAll('\\s','')
    def osArch = System.getProperty('os.arch')
    def fnameBase = "ver${version}_${osName}-${osArch}_jvm${vmVer}"
    def benchMarksDir = "${project.buildDir}/benchmarks"
    ant.mkdir(dir: benchMarksDir)
    def outStream = new FileOutputStream("${benchMarksDir}/${fnameBase}-out.txt")
    standardOutput = outStream
    main = 'org.funcito.benchmarks.MyBenchmark'
    classpath = sourceSets.test.runtimeClasspath
    args = ['--saveResults', "${benchMarksDir}/${fnameBase}.json", '-Jmode=-server,-client']
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top