From da3fba564ee64f5b5a5e53773fff0392ed1e6f35 Mon Sep 17 00:00:00 2001 From: John Oliver <1615532+johnoliver@users.noreply.github.com> Date: Thu, 30 Apr 2020 13:58:29 +0000 Subject: [PATCH] add detection of jfr builds on Upstream --- .../mapping/upstream/UpstreamBinaryMapper.kt | 40 ++++++------ .../api/UpstreamBinaryMapperTest.kt | 62 +++++++++++++------ 2 files changed, 64 insertions(+), 38 deletions(-) diff --git a/adoptopenjdk-api-v3-updater/src/main/kotlin/net/adoptopenjdk/api/v3/mapping/upstream/UpstreamBinaryMapper.kt b/adoptopenjdk-api-v3-updater/src/main/kotlin/net/adoptopenjdk/api/v3/mapping/upstream/UpstreamBinaryMapper.kt index 58ccc8fe..ddd74a3d 100644 --- a/adoptopenjdk-api-v3-updater/src/main/kotlin/net/adoptopenjdk/api/v3/mapping/upstream/UpstreamBinaryMapper.kt +++ b/adoptopenjdk-api-v3-updater/src/main/kotlin/net/adoptopenjdk/api/v3/mapping/upstream/UpstreamBinaryMapper.kt @@ -24,10 +24,10 @@ object UpstreamBinaryMapper : BinaryMapper() { suspend fun toBinaryList(assets: List): List { 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) } @@ -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) @@ -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, binary_name: String): String? { return assets - .firstOrNull { asset -> - asset.name == "$binary_name.sign" - }?.downloadUrl + .firstOrNull { asset -> + asset.name == "$binary_name.sign" + }?.downloadUrl } } diff --git a/adoptopenjdk-api-v3-updater/src/test/kotlin/net/adoptopenjdk/api/UpstreamBinaryMapperTest.kt b/adoptopenjdk-api-v3-updater/src/test/kotlin/net/adoptopenjdk/api/UpstreamBinaryMapperTest.kt index 124f24ad..cfc37106 100644 --- a/adoptopenjdk-api-v3-updater/src/test/kotlin/net/adoptopenjdk/api/UpstreamBinaryMapperTest.kt +++ b/adoptopenjdk-api-v3-updater/src/test/kotlin/net/adoptopenjdk/api/UpstreamBinaryMapperTest.kt @@ -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 { @@ -22,18 +23,20 @@ class UpstreamBinaryMapperTest { private fun getAssetList(names: List): List { 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" + ) ) } } @@ -41,9 +44,10 @@ class UpstreamBinaryMapperTest { @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) @@ -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)