Skip to content

Commit 30391ea

Browse files
authored
Fix assorted problems with K/JS projects (#292)
* Fix dependency resolution for JS projects * Make benchmarking runtime module-system agnostic Closes #185
1 parent da3e2bb commit 30391ea

File tree

22 files changed

+288
-14
lines changed

22 files changed

+288
-14
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package kotlinx.benchmark.integration
2+
3+
import kotlin.test.Test
4+
5+
class KotlinJsTest : GradleTest() {
6+
@Test
7+
fun useEsModules() {
8+
project("es-modules", true).runAndSucceed("jsEsBenchmark") {
9+
assertOutputContains("CommonBenchmark.benchmark")
10+
}
11+
}
12+
13+
@Test
14+
fun useUmdModules() {
15+
project("es-modules", true).runAndSucceed("jsUmdBenchmark") {
16+
assertOutputContains("CommonBenchmark.benchmark")
17+
}
18+
}
19+
20+
@Test
21+
fun useCommonJs() {
22+
project("es-modules", true).runAndSucceed("jsCommonBenchmark") {
23+
assertOutputContains("CommonBenchmark.benchmark")
24+
}
25+
}
26+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package kotlinx.benchmark.integration
2+
3+
import org.junit.Test
4+
5+
// Regression tests for #185
6+
class ProjectWithResourceFilesTest : GradleTest() {
7+
private fun verifyFor(target: String) {
8+
project("project-with-resources", true).let { runner ->
9+
runner.runAndSucceed("${target}Benchmark")
10+
}
11+
}
12+
13+
@Test
14+
fun js() {
15+
verifyFor("js")
16+
}
17+
18+
@Test
19+
fun native() {
20+
verifyFor("native")
21+
}
22+
23+
@Test
24+
fun wasmJs() {
25+
verifyFor("wasmJs")
26+
}
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package kotlinx.benchmark.integration
2+
3+
import org.junit.Test
4+
5+
// Regression tests for #185
6+
class TransitiveDependenciesResolutionTest : GradleTest() {
7+
private fun verifyFor(target: String) {
8+
project("transitive-dependencies-resolution", true).let { runner ->
9+
runner.runAndSucceed("${target}Benchmark")
10+
}
11+
}
12+
13+
@Test
14+
fun js() {
15+
verifyFor("js")
16+
}
17+
18+
@Test
19+
fun native() {
20+
verifyFor("native")
21+
}
22+
23+
@Test
24+
fun wasmJs() {
25+
verifyFor("wasmJs")
26+
}
27+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
kotlin {
2+
js("jsEs") {
3+
nodejs()
4+
useEsModules()
5+
}
6+
js("jsUmd") {
7+
nodejs()
8+
}
9+
js("jsCommon") {
10+
nodejs()
11+
useCommonJs()
12+
}
13+
}
14+
15+
benchmark {
16+
targets {
17+
register("jsEs")
18+
register("jsUmd")
19+
register("jsCommon")
20+
}
21+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
org.gradle.jvmargs=-Xmx2g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package test
2+
3+
import kotlinx.benchmark.*
4+
import kotlin.math.*
5+
6+
@State(Scope.Benchmark)
7+
@Measurement(iterations = 1, time = 1, timeUnit = BenchmarkTimeUnit.SECONDS)
8+
@Warmup(iterations = 1, time = 1, timeUnit = BenchmarkTimeUnit.SECONDS)
9+
@OutputTimeUnit(BenchmarkTimeUnit.MILLISECONDS)
10+
@BenchmarkMode(Mode.Throughput)
11+
open class CommonBenchmark {
12+
@Benchmark
13+
open fun benchmark(): Double {
14+
return log(sqrt(3.0) * cos(3.0), 2.0)
15+
}
16+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import org.jetbrains.kotlin.konan.target.KonanTarget
2+
import org.jetbrains.kotlin.konan.target.HostManager
3+
4+
kotlin {
5+
if (HostManager.hostIsLinux) linuxX64('native')
6+
if (HostManager.hostIsMingw) mingwX64('native')
7+
if (HostManager.host == KonanTarget.MACOS_ARM64.INSTANCE) macosArm64('native')
8+
if (HostManager.host == KonanTarget.MACOS_X64.INSTANCE) macosX64('native')
9+
js()
10+
wasmJs {
11+
nodejs()
12+
}
13+
js() {
14+
nodejs()
15+
}
16+
}
17+
18+
benchmark {
19+
targets {
20+
register("native")
21+
register("js")
22+
register("wasmJs")
23+
}
24+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
org.gradle.jvmargs=-Xmx2g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package test
2+
3+
import kotlinx.benchmark.*
4+
import kotlin.math.*
5+
6+
@State(Scope.Benchmark)
7+
@Measurement(iterations = 1, time = 1, timeUnit = BenchmarkTimeUnit.SECONDS)
8+
@Warmup(iterations = 1, time = 1, timeUnit = BenchmarkTimeUnit.SECONDS)
9+
@OutputTimeUnit(BenchmarkTimeUnit.MILLISECONDS)
10+
@BenchmarkMode(Mode.Throughput)
11+
open class CommonBenchmark {
12+
@Benchmark
13+
open fun mathBenchmark(): Double {
14+
return log(sqrt(3.0) * cos(3.0), 2.0)
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
I'm here to break your build!

0 commit comments

Comments
 (0)