Skip to content

Commit 3732fc3

Browse files
author
Abduqodiri Qurbonzoda
committed
Change the paths to the kotlin-qualification-task
To make it work in my laptop
1 parent 57b6e64 commit 3732fc3

File tree

2 files changed

+40
-30
lines changed

2 files changed

+40
-30
lines changed

plugin/main/src/kotlinx/benchmark/gradle/AndroidMultiplatformTasks.kt

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package kotlinx.benchmark.gradle
22

33
import kotlinx.benchmark.gradle.internal.KotlinxBenchmarkPluginInternalApi
44
import org.gradle.api.*
5+
import org.gradle.api.tasks.TaskProvider
56
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation
67
import java.io.InputStream
78
import java.util.*
@@ -14,18 +15,18 @@ fun Project.processAndroidCompilation(target: KotlinJvmAndroidCompilation) {
1415
println("processAndroidCompilation: ${target.name}")
1516
val compilation = target.target.compilations.names.let(::println)
1617

17-
tasks.register("processAndroid${target.name.capitalize(Locale.getDefault())}Compilation", DefaultTask::class.java) {
18+
val generateSourcesTask = tasks.register("processAndroid${target.name.capitalize(Locale.getDefault())}Compilation", DefaultTask::class.java) {
1819
it.group = "benchmark"
1920
it.description = "Processes the Android compilation '${target.name}' for benchmarks"
2021
it.dependsOn("bundle${target.name.capitalize(Locale.getDefault())}Aar")
2122
it.doLast {
2223
unpackAndProcessAar(target) { classDescriptors ->
2324
generateBenchmarkSourceFiles(classDescriptors)
2425
}
25-
detectAndroidDevice()
26-
createAndroidBenchmarkExecTask()
2726
}
2827
}
28+
29+
createAndroidBenchmarkExecTask(target, generateSourcesTask)
2930
}
3031

3132
fun Project.detectAndroidDevice() {
@@ -47,38 +48,47 @@ fun Project.detectAndroidDevice() {
4748

4849

4950
// Use shell command to execute separate project gradle task
50-
fun Project.createAndroidBenchmarkExecTask() {
51-
// TODO: Project path needs to execute benchmark task
52-
val executeBenchmarkPath = "E:/Android/AndroidProjects/kotlin-qualification-task"
53-
// Using ./gradlew on Windows shows error:
54-
// CreateProcess error=193, %1 is not a valid Win32 application
55-
val osName = System.getProperty("os.name").toLowerCase(Locale.ROOT)
56-
val gradlewPath = "$executeBenchmarkPath/gradlew" + if (osName.contains("win")) ".bat" else ""
57-
val args = listOf("-p", executeBenchmarkPath, "connectedAndroidTest")
51+
fun Project.createAndroidBenchmarkExecTask(target: KotlinJvmAndroidCompilation, generateSourcesTask: TaskProvider<*>) {
52+
tasks.register("android${target.name.capitalize(Locale.getDefault())}Benchmark", DefaultTask::class.java) {
53+
it.group = "benchmark"
54+
it.description = "Processes the Android compilation '${target.name}' for benchmarks"
55+
it.dependsOn(generateSourcesTask)
56+
it.doLast {
57+
detectAndroidDevice()
5858

59-
try {
60-
println("Running command: $gradlewPath ${args.joinToString(" ")}")
59+
// TODO: Project path needs to execute benchmark task
60+
val executeBenchmarkPath = "/Users/abduqodiri.qurbonzoda_1/AndroidStudioProjects/kotlin-qualification-task"
61+
// Using ./gradlew on Windows shows error:
62+
// CreateProcess error=193, %1 is not a valid Win32 application
63+
val osName = System.getProperty("os.name").toLowerCase(Locale.ROOT)
64+
val gradlewPath = "$executeBenchmarkPath/gradlew" + if (osName.contains("win")) ".bat" else ""
65+
val args = listOf("-p", executeBenchmarkPath, "connectedAndroidTest")
6166

62-
val process = ProcessBuilder(gradlewPath, *args.toTypedArray())
63-
.redirectOutput(ProcessBuilder.Redirect.PIPE)
64-
.redirectError(ProcessBuilder.Redirect.PIPE)
65-
.start()
67+
try {
68+
println("Running command: $gradlewPath ${args.joinToString(" ")}")
6669

67-
val outputGobbler = StreamGobbler(process.inputStream) { println(it) }
68-
val errorGobbler = StreamGobbler(process.errorStream) { System.err.println(it) }
70+
val process = ProcessBuilder(gradlewPath, *args.toTypedArray())
71+
.redirectOutput(ProcessBuilder.Redirect.PIPE)
72+
.redirectError(ProcessBuilder.Redirect.PIPE)
73+
.start()
6974

70-
outputGobbler.start()
71-
errorGobbler.start()
75+
val outputGobbler = StreamGobbler(process.inputStream) { println(it) }
76+
val errorGobbler = StreamGobbler(process.errorStream) { System.err.println(it) }
7277

73-
val exitCode = process.waitFor(10, TimeUnit.MINUTES)
74-
if (!exitCode || process.exitValue() != 0) {
75-
println("Android benchmark task failed with exit code ${process.exitValue()}")
76-
} else {
77-
println("Benchmark for Android target finished.")
78+
outputGobbler.start()
79+
errorGobbler.start()
80+
81+
val exitCode = process.waitFor(10, TimeUnit.MINUTES)
82+
if (!exitCode || process.exitValue() != 0) {
83+
println("Android benchmark task failed with exit code ${process.exitValue()}")
84+
} else {
85+
println("Benchmark for Android target finished.")
86+
}
87+
} catch (e: Exception) {
88+
e.printStackTrace()
89+
throw GradleException("Failed to execute benchmark task", e)
90+
}
7891
}
79-
} catch (e: Exception) {
80-
e.printStackTrace()
81-
throw GradleException("Failed to execute benchmark task", e)
8292
}
8393
}
8494

plugin/main/src/kotlinx/benchmark/gradle/AndroidSourceGenerator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fun Project.generateBenchmarkSourceFiles(
1111
) {
1212

1313
// TODO: Path needs to generate files
14-
val targetPath = "E:/Android/AndroidProjects/kotlin-qualification-task/microbenchmark"
14+
val targetPath = "/Users/abduqodiri.qurbonzoda_1/AndroidStudioProjects/kotlin-qualification-task/microbenchmark"
1515
val androidTestDir = File(targetPath).resolve("src/androidTest/kotlin")
1616
if (!androidTestDir.exists()) {
1717
androidTestDir.mkdirs()

0 commit comments

Comments
 (0)