Skip to content
This repository was archived by the owner on Oct 14, 2021. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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