Skip to content

Commit

Permalink
add detection of jfr builds on Upstream (AdoptOpenJDK#188)
Browse files Browse the repository at this point in the history
  • Loading branch information
johnoliver committed Apr 30, 2020
1 parent 12fe821 commit 37567ef
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@ object UpstreamBinaryMapper : BinaryMapper() {

suspend fun toBinaryList(assets: List<GHAsset>): List<Binary> {
return assets
.filter(this::isArchive)
.filter { !assetIsExcluded(it) }
.map { asset -> assetToBinaryAsync(asset, assets) }
.mapNotNull { it.await() }
.filter(this::isArchive)
.filter { !assetIsExcluded(it) }
.map { asset -> assetToBinaryAsync(asset, assets) }
.mapNotNull { it.await() }
}

private fun assetIsExcluded(asset: GHAsset) = EXCLUDES.any { exclude -> asset.name.contains(exclude) }
Expand All @@ -42,19 +42,20 @@ object UpstreamBinaryMapper : BinaryMapper() {
val architecture = getEnumFromFileName(asset.name, Architecture.values())
val imageType = getEnumFromFileName(asset.name, ImageType.values(), ImageType.jdk)
val updatedAt = getUpdatedTime(asset)
val projectType = getEnumFromFileName(asset.name, Project.values(), Project.jdk)

Binary(
pack,
asset.downloadCount,
updatedAt,
null,
null,
HeapSize.normal,
os,
architecture,
imageType,
JvmImpl.hotspot,
Project.jdk
pack,
asset.downloadCount,
updatedAt,
null,
null,
HeapSize.normal,
os,
architecture,
imageType,
JvmImpl.hotspot,
projectType
)
} catch (e: Exception) {
LOGGER.error("Failed to parse binary data", e)
Expand All @@ -63,13 +64,12 @@ object UpstreamBinaryMapper : BinaryMapper() {
}
}

private fun isArchive(asset: GHAsset) =
BinaryMapper.ARCHIVE_WHITELIST.any { asset.name.endsWith(it) }
private fun isArchive(asset: GHAsset) = ARCHIVE_WHITELIST.any { asset.name.endsWith(it) }

private fun getSignatureLink(assets: List<GHAsset>, binary_name: String): String? {
return assets
.firstOrNull { asset ->
asset.name == "$binary_name.sign"
}?.downloadUrl
.firstOrNull { asset ->
asset.name == "$binary_name.sign"
}?.downloadUrl
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package net.adoptopenjdk.api

import kotlin.test.assertEquals
import kotlinx.coroutines.runBlocking
import net.adoptopenjdk.api.v3.dataSources.github.graphql.models.GHAsset
import net.adoptopenjdk.api.v3.mapping.upstream.UpstreamBinaryMapper
import net.adoptopenjdk.api.v3.models.ImageType
import net.adoptopenjdk.api.v3.models.Project
import org.junit.jupiter.api.BeforeAll
import org.junit.jupiter.api.Test
import kotlin.test.assertEquals

class UpstreamBinaryMapperTest {

Expand All @@ -22,28 +23,31 @@ class UpstreamBinaryMapperTest {
private fun getAssetList(names: List<String>): List<GHAsset> {
return names.flatMap { name ->
listOf(
GHAsset(
name,
1L,
"",
1L,
"2013-02-27T19:35:32Z"),
GHAsset(
"$name.sign",
1L,
"a-signature-link to $name",
1L,
"2013-02-27T19:35:32Z")
GHAsset(
name,
1L,
"",
1L,
"2013-02-27T19:35:32Z"
),
GHAsset(
"$name.sign",
1L,
"a-signature-link to $name",
1L,
"2013-02-27T19:35:32Z"
)
)
}
}

@Test
fun filtersOutDebugInfo() {
val assets = getAssetList(listOf(
"OpenJDK8U-jdk_x64_linux_8u232b09.tar.gz",
"OpenJDK8U-jdk_x64_linux_8u232b09-debuginfo.tar.gz"
))
"OpenJDK8U-jdk_x64_linux_8u232b09.tar.gz",
"OpenJDK8U-jdk_x64_linux_8u232b09-debuginfo.tar.gz"
)
)
runBlocking {
val binaryList = UpstreamBinaryMapper.toBinaryList(assets)

Expand Down Expand Up @@ -77,12 +81,34 @@ class UpstreamBinaryMapperTest {
}
}

@Test
fun correctlyClassifiesProjectType() {
val assets = getAssetList(listOf(
"OpenJDK8U-jdk-jfr_x64_linux_8u262b01_ea.tar.gz",
"OpenJDK8U-jdk_x64_linux_8u262b01_ea.tar.gz",
"OpenJDK8U-jre-jfr_x64_linux_8u262b01_ea.tar.gz",
"OpenJDK8U-jre_x64_linux_8u262b01_ea.tar.gz"
)
)

runBlocking {
val binaryList = UpstreamBinaryMapper.toBinaryList(assets)

assertEquals(4, binaryList.size)
assertEquals(Project.jfr, binaryList[0].project)
assertEquals(Project.jdk, binaryList[1].project)
assertEquals(Project.jfr, binaryList[2].project)
assertEquals(Project.jdk, binaryList[3].project)
}
}

@Test
fun addsSignatureLink() {

val assets = getAssetList(listOf(
"OpenJDK11U-x64_linux_11.0.3_7.tar.gz"
))
"OpenJDK11U-x64_linux_11.0.3_7.tar.gz"
)
)

runBlocking {
val binaryList = UpstreamBinaryMapper.toBinaryList(assets)
Expand Down

0 comments on commit 37567ef

Please sign in to comment.