summaryrefslogtreecommitdiff
path: root/integration/test/resources/play-json/jmh.sc
diff options
context:
space:
mode:
authorNikolay Tatarinov <5min4eq.unity@gmail.com>2018-03-28 01:33:11 +0300
committerGitHub <noreply@github.com>2018-03-28 01:33:11 +0300
commit83aeb8976d90ad1637243953a9af37e6d4206c52 (patch)
tree346e52db0d80c7fb7bdab8013acb38ef8be55fbb /integration/test/resources/play-json/jmh.sc
parenta796f0a1381632560b6251a93466957319065966 (diff)
downloadmill-83aeb8976d90ad1637243953a9af37e6d4206c52.tar.gz
mill-83aeb8976d90ad1637243953a9af37e6d4206c52.tar.bz2
mill-83aeb8976d90ad1637243953a9af37e6d4206c52.zip
WIP: Play json build (#182)
* play json build * build progress * add check task * try to make play json js build * scalariform and mima plugins in separate files. check mima * better error message for mima compatibility check * fix scala 2.10 compilation * license headers support * add jmh support * fix reformat on compile; fix code validation; extract base module * remove scala 2.13 from cross versions * include play-json in integration tests * add example .travis.yml * bring back scala 2.13 support * make reformat target, not command * add release task * update mill version in travis.yml * update release script * update release process * add README.md for play json build
Diffstat (limited to 'integration/test/resources/play-json/jmh.sc')
-rw-r--r--integration/test/resources/play-json/jmh.sc61
1 files changed, 61 insertions, 0 deletions
diff --git a/integration/test/resources/play-json/jmh.sc b/integration/test/resources/play-json/jmh.sc
new file mode 100644
index 00000000..76ed43fc
--- /dev/null
+++ b/integration/test/resources/play-json/jmh.sc
@@ -0,0 +1,61 @@
+import ammonite.ops._
+import mill._, scalalib._, modules._
+
+trait Jmh extends ScalaModule {
+
+ def ivyDeps = super.ivyDeps() ++ Agg(ivy"org.openjdk.jmh:jmh-core:1.19")
+
+ def runJmh(args: String*) = T.command {
+ val (_, resources) = generateBenchmarkSources()
+ Jvm.interactiveSubprocess(
+ "org.openjdk.jmh.Main",
+ classPath = (runClasspath() ++ generatorDeps()).map(_.path) ++
+ Seq(compileGeneratedSources().path, resources),
+ mainArgs = args,
+ workingDir = T.ctx.dest
+ )
+ }
+
+ def compileGeneratedSources = T {
+ val dest = T.ctx.dest
+ val (sourcesDir, _) = generateBenchmarkSources()
+ val sources = ls.rec(sourcesDir).filter(_.isFile)
+ %%("javac",
+ sources.map(_.toString),
+ "-cp",
+ (runClasspath() ++ generatorDeps()).map(_.path.toString).mkString(":"),
+ "-d",
+ dest)(wd = dest)
+ PathRef(dest)
+ }
+
+ // returns sources and resources directories
+ def generateBenchmarkSources = T {
+ val dest = T.ctx().dest
+
+ val sourcesDir = dest / 'jmh_sources
+ val resourcesDir = dest / 'jmh_resources
+
+ rm(sourcesDir)
+ mkdir(sourcesDir)
+ rm(resourcesDir)
+ mkdir(resourcesDir)
+
+ Jvm.subprocess(
+ "org.openjdk.jmh.generators.bytecode.JmhBytecodeGenerator",
+ (runClasspath() ++ generatorDeps()).map(_.path),
+ mainArgs = Array(
+ compile().classes.path,
+ sourcesDir,
+ resourcesDir,
+ "default"
+ ).map(_.toString)
+ )
+
+ (sourcesDir, resourcesDir)
+ }
+
+ def generatorDeps = resolveDeps(
+ T { Agg(ivy"org.openjdk.jmh:jmh-generator-bytecode:1.19") }
+ )
+}