Skip to content

Commit 4c2e816

Browse files
authored
Using develocity api (#26)
* using develocity api * adding correct Gradle test version * using the correct extension
1 parent 6fde6f7 commit 4c2e816

File tree

8 files changed

+152
-56
lines changed

8 files changed

+152
-56
lines changed

README.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Apply the plugin in the main `build.gradle(.kts)` configuration file:
99
Using the plugins DSL:
1010
``` groovy
1111
plugins {
12-
id("io.github.cdsap.kotlinprocess") version "0.1.5"
12+
id("io.github.cdsap.kotlinprocess") version "0.1.6"
1313
}
1414
```
1515

@@ -20,7 +20,7 @@ buildscript {
2020
gradlePluginPortal()
2121
}
2222
dependencies {
23-
classpath("io.github.cdsap:infokotlinprocess:0.1.5")
23+
classpath("io.github.cdsap:infokotlinprocess:0.1.6")
2424
}
2525
}
2626
@@ -31,7 +31,7 @@ apply(plugin = "io.github.cdsap.kotlinprocess")
3131
Using the plugins DSL:
3232
``` groovy
3333
plugins {
34-
id "io.github.cdsap.kotlinprocess" version "0.1.5"
34+
id "io.github.cdsap.kotlinprocess" version "0.1.6"
3535
}
3636
3737
```
@@ -43,7 +43,7 @@ buildscript {
4343
gradlePluginPortal()
4444
}
4545
dependencies {
46-
classpath "io.github.cdsap:infokotlinprocess:0.1.5"
46+
classpath "io.github.cdsap:infokotlinprocess:0.1.6"
4747
}
4848
}
4949
@@ -73,9 +73,11 @@ BUILD SUCCESSFUL in 35s
7373
7474
```
7575

76+
7677
## Requirements
7778
* Gradle 7.5
7879

7980
## Libraries
80-
* com.gradle.enterprise:com.gradle.enterprise.gradle.plugin
81-
* com.jakewharton.picnic:picnic
81+
* `com.gradle:develocity-gradle-plugin`
82+
* `com.gradle.enterprise:com.gradle.enterprise.gradle.plugin`
83+
* `com.jakewharton.picnic:picnic`

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
}
77

88
group = "io.github.cdsap"
9-
version = "0.1.5"
9+
version = "0.1.6"
1010

1111
java {
1212
toolchain {
@@ -18,6 +18,7 @@ dependencies {
1818
implementation("io.github.cdsap:jdk-tools-parser:0.1.1")
1919
implementation("io.github.cdsap:commandline-value-source:0.1.0")
2020
implementation("com.jakewharton.picnic:picnic:0.6.0")
21+
implementation("com.gradle:develocity-gradle-plugin:3.17.2")
2122
implementation("com.gradle.enterprise:com.gradle.enterprise.gradle.plugin:3.12.3")
2223
testImplementation("junit:junit:4.13.2")
2324
}
Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,31 @@
11
package io.github.cdsap.kotlinprocess
22

3+
import com.gradle.develocity.agent.gradle.DevelocityConfiguration
34
import com.gradle.scan.plugin.BuildScanExtension
45
import io.github.cdsap.jdk.tools.parser.ConsolidateProcesses
6+
import io.github.cdsap.jdk.tools.parser.model.Process
57
import io.github.cdsap.jdk.tools.parser.model.TypeProcess
6-
import io.github.cdsap.kotlinprocess.output.BuildScanOutput
8+
import io.github.cdsap.kotlinprocess.output.DevelocityValues
9+
import io.github.cdsap.kotlinprocess.output.EnterpriseValues
710
import io.github.cdsap.valuesourceprocess.jInfo
811
import io.github.cdsap.valuesourceprocess.jStat
912
import org.gradle.api.Plugin
1013
import org.gradle.api.Project
14+
import org.gradle.api.provider.Provider
1115

1216

1317
class InfoKotlinProcessPlugin : Plugin<Project> {
1418
private val nameProcess = "KotlinCompileDaemon"
1519
override fun apply(target: Project) {
1620
target.gradle.rootProject {
17-
val buildScanExtension = extensions.findByType(com.gradle.scan.plugin.BuildScanExtension::class.java)
18-
if (buildScanExtension != null) {
19-
buildScanReporting(project, buildScanExtension)
21+
22+
val develocityConfiguration = extensions.findByType(DevelocityConfiguration::class.java)
23+
val enterpriseExtension = extensions.findByType(com.gradle.scan.plugin.BuildScanExtension::class.java)
24+
25+
if (develocityConfiguration != null) {
26+
buildScanDevelocityReporting(project, develocityConfiguration)
27+
} else if (enterpriseExtension != null) {
28+
buildScanEnterpriseReporting(project, enterpriseExtension)
2029
} else {
2130
consoleReporting(target)
2231
}
@@ -32,16 +41,41 @@ class InfoKotlinProcessPlugin : Plugin<Project> {
3241
}.get()
3342
}
3443

35-
private fun buildScanReporting(
44+
private fun buildScanEnterpriseReporting(
3645
project: Project,
3746
buildScanExtension: BuildScanExtension
3847
) {
39-
val jStat = project.jStat(nameProcess)
40-
val jInfo = project.jInfo(nameProcess)
48+
val (jStat, jInfo) = providerPair(project)
4149

4250
buildScanExtension.buildFinished {
43-
val processes = ConsolidateProcesses().consolidate(jStat.get(), jInfo.get(), TypeProcess.Kotlin)
44-
BuildScanOutput(buildScanExtension, processes).addProcessesInfoToBuildScan()
51+
val processes = processes(jStat, jInfo)
52+
EnterpriseValues(buildScanExtension, processes).addProcessesInfoToBuildScan()
53+
}
54+
}
55+
56+
private fun buildScanDevelocityReporting(
57+
project: Project,
58+
buildScanExtension: DevelocityConfiguration
59+
) {
60+
val (jStat, jInfo) = providerPair(project)
61+
62+
buildScanExtension.buildScan.buildFinished {
63+
val processes = processes(jStat, jInfo)
64+
DevelocityValues(buildScanExtension, processes).addProcessesInfoToBuildScan()
4565
}
4666
}
67+
68+
private fun processes(
69+
jStat: Provider<String>,
70+
jInfo: Provider<String>
71+
): List<Process> {
72+
val processes = ConsolidateProcesses().consolidate(jStat.get(), jInfo.get(), TypeProcess.Kotlin)
73+
return processes
74+
}
75+
76+
private fun providerPair(project: Project): Pair<Provider<String>, Provider<String>> {
77+
val jStat = project.jStat(nameProcess)
78+
val jInfo = project.jInfo(nameProcess)
79+
return Pair(jStat, jInfo)
80+
}
4781
}

src/main/kotlin/io/github/cdsap/kotlinprocess/output/BuildScanOutput.kt

Lines changed: 0 additions & 39 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package io.github.cdsap.kotlinprocess.output
2+
3+
import com.gradle.develocity.agent.gradle.DevelocityConfiguration
4+
import io.github.cdsap.jdk.tools.parser.model.Process
5+
6+
class DevelocityValues(
7+
private val develocityConfiguration: DevelocityConfiguration,
8+
private val processes: List<Process>,
9+
) {
10+
11+
fun addProcessesInfoToBuildScan() {
12+
processes.map {
13+
develocityConfiguration.buildScan {
14+
value("Kotlin-Process-${it.pid}-max", "${it.max} GB")
15+
value("Kotlin-Process-${it.pid}-usage", "${it.usage} GB")
16+
value("Kotlin-Process-${it.pid}-capacity", "${it.capacity} GB")
17+
value("Kotlin-Process-${it.pid}-uptime", "${it.uptime} minutes")
18+
value("Kotlin-Process-${it.pid}-gcTime", "${it.gcTime} minutes")
19+
value("Kotlin-Process-${it.pid}-gcType", it.typeGc)
20+
}
21+
}
22+
}
23+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package io.github.cdsap.kotlinprocess.output
2+
3+
import com.gradle.scan.plugin.BuildScanExtension
4+
import io.github.cdsap.jdk.tools.parser.model.Process
5+
6+
class EnterpriseValues(
7+
private val buildScanExtension: BuildScanExtension,
8+
private val processes: List<Process>,
9+
) {
10+
11+
fun addProcessesInfoToBuildScan() {
12+
processes.map {
13+
with(buildScanExtension) {
14+
value("Kotlin-Process-${it.pid}-max", "${it.max} GB")
15+
value("Kotlin-Process-${it.pid}-usage", "${it.usage} GB")
16+
value("Kotlin-Process-${it.pid}-capacity", "${it.capacity} GB")
17+
value("Kotlin-Process-${it.pid}-uptime", "${it.uptime} minutes")
18+
value("Kotlin-Process-${it.pid}-gcTime", "${it.gcTime} minutes")
19+
value("Kotlin-Process-${it.pid}-gcType", it.typeGc)
20+
}
21+
}
22+
}
23+
}

src/test/kotlin/io/github/cdsap/kotlinprocess/InfoKotlinProcessPluginTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import org.junit.rules.TemporaryFolder
1010

1111
class InfoKotlinProcessPluginTest {
1212

13-
private val gradleVersions = listOf("7.5.1", "7.6", "8.0.1", "8.1.1")
13+
private val gradleVersions = listOf("7.6.2", "8.1.1", "8.6", "8.7")
1414

1515
@Rule
1616
@JvmField

src/test/kotlin/io/github/cdsap/kotlinprocess/InfoKotlinProcessPluginWtihBuildScanTest.kt

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,56 @@ class InfoKotlinProcessPluginWtihBuildScanTest {
6565
TestCase.assertTrue(secondBuild.output.contains("Configuration cache entry reused."))
6666
}
6767
}
68+
69+
@Test
70+
fun testPluginIsCompatibleWithConfigurationCacheWithDevelocity() {
71+
Assume.assumeTrue(
72+
"Gradle Enterprise URL and Access Key are set",
73+
System.getenv("GE_URL") != null && System.getenv("GE_API_KEY") != null
74+
)
75+
76+
testProjectDir.newFile("settings.gradle").appendText(
77+
"""
78+
plugins {
79+
id 'com.gradle.develocity' version '3.17.2'
80+
}
81+
develocity {
82+
server = "${System.getenv("GE_URL")}"
83+
accessKey="${System.getenv("GE_API_KEY")}"
84+
buildScan {
85+
publishing { true }
86+
}
87+
}
88+
""".trimIndent()
89+
)
90+
testProjectDir.newFile("build.gradle").appendText(
91+
"""
92+
plugins {
93+
id 'org.jetbrains.kotlin.jvm' version '1.7.21'
94+
id 'application'
95+
id 'io.github.cdsap.kotlinprocess'
96+
}
97+
repositories {
98+
mavenCentral()
99+
}
100+
101+
""".trimIndent()
102+
)
103+
listOf("8.1.1").forEach {
104+
val firstBuild = GradleRunner.create()
105+
.withProjectDir(testProjectDir.root)
106+
.withArguments("compileKotlin", "--configuration-cache")
107+
.withPluginClasspath()
108+
.withGradleVersion(it)
109+
.build()
110+
val secondBuild = GradleRunner.create()
111+
.withProjectDir(testProjectDir.root)
112+
.withArguments("compileKotlin", "--configuration-cache")
113+
.withPluginClasspath()
114+
.withGradleVersion(it)
115+
.build()
116+
TestCase.assertTrue(firstBuild.output.contains("Configuration cache entry stored"))
117+
TestCase.assertTrue(secondBuild.output.contains("Configuration cache entry reused."))
118+
}
119+
}
68120
}

0 commit comments

Comments
 (0)