added mpp platform values into AllowedListAnonymizer for statistics

#KT-58104 InProgress
This commit is contained in:
Dmitrii Krasnov
2023-05-09 12:54:35 +02:00
committed by Space Team
parent e0e1d57120
commit 8e3469f220
7 changed files with 93 additions and 67 deletions
@@ -20,9 +20,6 @@ import kotlin.io.path.appendText
@NativeGradlePluginTests @NativeGradlePluginTests
class AppleFrameworkIT : KGPBaseTest() { class AppleFrameworkIT : KGPBaseTest() {
// TODO(Dmitrii Krasnov): remove it, when KT-58104 will be fixed
override val defaultBuildOptions = super.defaultBuildOptions.copy(statisticsForceValidation = false)
@DisplayName("Assembling AppleFrameworkForXcode tasks for IosArm64") @DisplayName("Assembling AppleFrameworkForXcode tasks for IosArm64")
@OptIn(EnvironmentalVariablesOverride::class) @OptIn(EnvironmentalVariablesOverride::class)
@GradleAndroidTest @GradleAndroidTest
@@ -30,7 +27,7 @@ class AppleFrameworkIT : KGPBaseTest() {
fun shouldAssembleAppleFrameworkForXcodeForIosArm64( fun shouldAssembleAppleFrameworkForXcodeForIosArm64(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
agpVersion: String, agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk jdkProvider: JdkVersions.ProvidedJdk,
) { ) {
nativeProject( nativeProject(
@@ -78,7 +75,7 @@ class AppleFrameworkIT : KGPBaseTest() {
fun shouldAssembleAppleFrameworkForXcodeForArm64AndX64Simulators( fun shouldAssembleAppleFrameworkForXcodeForArm64AndX64Simulators(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
agpVersion: String, agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk jdkProvider: JdkVersions.ProvidedJdk,
) { ) {
nativeProject( nativeProject(
@@ -114,7 +111,7 @@ class AppleFrameworkIT : KGPBaseTest() {
fun shouldCheckThatMacOSFrameworkHasSymlinks( fun shouldCheckThatMacOSFrameworkHasSymlinks(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
agpVersion: String, agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk jdkProvider: JdkVersions.ProvidedJdk,
) { ) {
nativeProject( nativeProject(
@@ -148,7 +145,7 @@ class AppleFrameworkIT : KGPBaseTest() {
fun shouldFailWithExecutingEmbedAndSignAppleFrameworkForXcode( fun shouldFailWithExecutingEmbedAndSignAppleFrameworkForXcode(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
agpVersion: String, agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk jdkProvider: JdkVersions.ProvidedJdk,
) { ) {
nativeProject("sharedAppleFramework", gradleVersion, buildJdk = jdkProvider.location) { nativeProject("sharedAppleFramework", gradleVersion, buildJdk = jdkProvider.location) {
buildAndFail( buildAndFail(
@@ -167,7 +164,7 @@ class AppleFrameworkIT : KGPBaseTest() {
fun shouldCheckAllRegisteredTasksWithXcodeEnvironmentForDebugIosArm64( fun shouldCheckAllRegisteredTasksWithXcodeEnvironmentForDebugIosArm64(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
agpVersion: String, agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk jdkProvider: JdkVersions.ProvidedJdk,
) { ) {
val buildOptions = defaultBuildOptions.copy( val buildOptions = defaultBuildOptions.copy(
androidVersion = agpVersion androidVersion = agpVersion
@@ -212,7 +209,7 @@ class AppleFrameworkIT : KGPBaseTest() {
fun shouldCheckEmbedAndSignAppleFrameworkForXcodeDoesNotRequireXcodeEnv( fun shouldCheckEmbedAndSignAppleFrameworkForXcodeDoesNotRequireXcodeEnv(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
agpVersion: String, agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk jdkProvider: JdkVersions.ProvidedJdk,
) { ) {
val buildOptions = defaultBuildOptions.copy( val buildOptions = defaultBuildOptions.copy(
androidVersion = agpVersion androidVersion = agpVersion
@@ -264,7 +261,7 @@ class AppleFrameworkIT : KGPBaseTest() {
fun shouldCheckThatStaticFrameworkForArm64IsBuildAndNotEmbedded( fun shouldCheckThatStaticFrameworkForArm64IsBuildAndNotEmbedded(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
agpVersion: String, agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk jdkProvider: JdkVersions.ProvidedJdk,
) { ) {
nativeProject( nativeProject(
@@ -309,7 +306,7 @@ class AppleFrameworkIT : KGPBaseTest() {
fun shouldReportConfErrorsToXcodeWhenRequestedByEmbedAndSign( fun shouldReportConfErrorsToXcodeWhenRequestedByEmbedAndSign(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
agpVersion: String, agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk jdkProvider: JdkVersions.ProvidedJdk,
) { ) {
val buildOptions = defaultBuildOptions.copy( val buildOptions = defaultBuildOptions.copy(
androidVersion = agpVersion androidVersion = agpVersion
@@ -354,7 +351,7 @@ class AppleFrameworkIT : KGPBaseTest() {
fun shouldReportCompilationErrorsToXcodeWhenRequestedByEmbedAndSign( fun shouldReportCompilationErrorsToXcodeWhenRequestedByEmbedAndSign(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
agpVersion: String, agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk jdkProvider: JdkVersions.ProvidedJdk,
) { ) {
val buildOptions = defaultBuildOptions.copy( val buildOptions = defaultBuildOptions.copy(
androidVersion = agpVersion androidVersion = agpVersion
@@ -393,7 +390,7 @@ class AppleFrameworkIT : KGPBaseTest() {
fun shouldPrintCompilationErrorsWithGradleStyle( fun shouldPrintCompilationErrorsWithGradleStyle(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
agpVersion: String, agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk jdkProvider: JdkVersions.ProvidedJdk,
) { ) {
val buildOptions = defaultBuildOptions.copy( val buildOptions = defaultBuildOptions.copy(
androidVersion = agpVersion androidVersion = agpVersion
@@ -432,7 +429,7 @@ class AppleFrameworkIT : KGPBaseTest() {
fun shouldPrintCompilationErrorsWithXcodeStyle( fun shouldPrintCompilationErrorsWithXcodeStyle(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
agpVersion: String, agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk jdkProvider: JdkVersions.ProvidedJdk,
) { ) {
val buildOptions = defaultBuildOptions.copy( val buildOptions = defaultBuildOptions.copy(
androidVersion = agpVersion androidVersion = agpVersion
@@ -475,7 +472,7 @@ class AppleFrameworkIT : KGPBaseTest() {
fun shouldReportErrorsToXcodeWhenEmbedAndSignRequestedAndDisableCompilerDaemon( fun shouldReportErrorsToXcodeWhenEmbedAndSignRequestedAndDisableCompilerDaemon(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
agpVersion: String, agpVersion: String,
jdkProvider: JdkVersions.ProvidedJdk jdkProvider: JdkVersions.ProvidedJdk,
) { ) {
val buildOptions = defaultBuildOptions.copy( val buildOptions = defaultBuildOptions.copy(
androidVersion = agpVersion androidVersion = agpVersion
@@ -525,7 +522,7 @@ class AppleFrameworkIT : KGPBaseTest() {
@JdkVersions(versions = [JavaVersion.VERSION_11]) @JdkVersions(versions = [JavaVersion.VERSION_11])
fun smokeTestWithAppleGradlePlugin( fun smokeTestWithAppleGradlePlugin(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
providedJdk: JdkVersions.ProvidedJdk providedJdk: JdkVersions.ProvidedJdk,
) { ) {
nativeProject( nativeProject(
@@ -19,9 +19,6 @@ import kotlin.test.fail
@NativeGradlePluginTests @NativeGradlePluginTests
class AppleSiliconIT : KGPBaseTest() { class AppleSiliconIT : KGPBaseTest() {
// TODO(Dmitrii Krasnov): remove it, when KT-58104 will be fixed
override val defaultBuildOptions = super.defaultBuildOptions.copy(statisticsForceValidation = false)
private val host = HostManager.host private val host = HostManager.host
@DisplayName("Tests compilation") @DisplayName("Tests compilation")
@@ -17,9 +17,6 @@ import java.util.*
@NativeGradlePluginTests @NativeGradlePluginTests
class CommonNativeIT : KGPBaseTest() { class CommonNativeIT : KGPBaseTest() {
// TODO(Dmitrii Krasnov): remove it, when KT-58104 will be fixed
override val defaultBuildOptions = super.defaultBuildOptions.copy(statisticsForceValidation = false)
private val String.withPrefix get() = "native-apple-devices-common/$this" private val String.withPrefix get() = "native-apple-devices-common/$this"
@DisplayName("Common ios") @DisplayName("Common ios")
@@ -59,7 +56,7 @@ class CommonNativeIT : KGPBaseTest() {
projectName: String, projectName: String,
libTargets: List<String>, libTargets: List<String>,
appTargets: List<String>, appTargets: List<String>,
gradleVersion: GradleVersion gradleVersion: GradleVersion,
) { ) {
nativeProject(projectName.withPrefix, gradleVersion) { nativeProject(projectName.withPrefix, gradleVersion) {
@@ -47,8 +47,6 @@ class FatFrameworkIT : KGPBaseTest() {
nativeProject( nativeProject(
"native-fat-framework/smoke", "native-fat-framework/smoke",
gradleVersion, gradleVersion,
// TODO(Dmitrii Krasnov): return default statisticsForceValidation, when KT-58104 will be fixed
buildOptions = defaultBuildOptions.copy(statisticsForceValidation = false)
) { ) {
buildGradleKts.modify { buildGradleKts.modify {
it.checkedReplace("iosArm32()", "watchosArm32()") it.checkedReplace("iosArm32()", "watchosArm32()")
@@ -18,9 +18,6 @@ import org.junit.jupiter.api.condition.OS
@NativeGradlePluginTests @NativeGradlePluginTests
class XCFrameworkIT : KGPBaseTest() { class XCFrameworkIT : KGPBaseTest() {
// TODO(Dmitrii Krasnov): remove it, when KT-58104 will be fixed
override val defaultBuildOptions = super.defaultBuildOptions.copy(statisticsForceValidation = false)
@DisplayName("Assembling shared debug XCFramework for all available ios and watchos targets ") @DisplayName("Assembling shared debug XCFramework for all available ios and watchos targets ")
@GradleTest @GradleTest
fun shouldAssembleXCFrameworkForAllAvailableTargets(gradleVersion: GradleVersion) { fun shouldAssembleXCFrameworkForAllAvailableTargets(gradleVersion: GradleVersion) {
@@ -0,0 +1,67 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.gradle.plugin.statistics
import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.statistics.metrics.StringAnonymizationPolicy
import org.jetbrains.kotlin.statistics.metrics.StringMetrics
import org.junit.jupiter.api.DisplayName
import kotlin.test.Test
class KotlinBuildStatHandlerTest {
@DisplayName("Checks that all KonanTarget names are presented in MPP_PLATFORMS statistic's report validator")
@Test
fun mppPlatformsShouldContainsllKonanTargetsTest() {
val regex = Regex(StringMetrics.MPP_PLATFORMS.anonymization.validationRegexp())
val konanTargetsMissedInMppPlatforms = KonanTarget::class.sealedSubclasses
.mapNotNull { sealedClass -> sealedClass.objectInstance }
.filter { sealedClass -> !regex.matches(sealedClass.name) }
assert(konanTargetsMissedInMppPlatforms.isEmpty()) {
"There are platforms $konanTargetsMissedInMppPlatforms which are not presented in MPP_PLATFORMS regex"
}
}
@DisplayName("Checks that all KotlinPlatformType names are presented in MPP_PLATFORMS statistic's report validator")
@Test
fun mppPlatformsShouldContainAllKotlinPlatformTypeTest() {
val regex = Regex(StringMetrics.MPP_PLATFORMS.anonymization.validationRegexp())
val kotlinPlatformTypesMissedInMppPlatforms = KotlinPlatformType.values()
.map { platformType -> platformType.name }
.filter { platformTypeName -> !regex.matches(platformTypeName) }
assert(kotlinPlatformTypesMissedInMppPlatforms.isEmpty()) {
"There are platform types $kotlinPlatformTypesMissedInMppPlatforms which are not presented in MPP_PLATFORMS regex"
}
}
@DisplayName("Checks that only values listed in KotlinPlatformType and KonanTarget are included in MPP_PLATFORMS")
@Test
fun mppPlatformsShouldContainOnlyKonanTargetsAndKotlinPlatformTypeTest() {
val allowedMppValues =
(StringMetrics.MPP_PLATFORMS.anonymization as StringAnonymizationPolicy.AllowedListAnonymizer)
.allowedValues
val kotlinPlatformTypesMissedInMppPlatforms = KotlinPlatformType.values()
.map { platformType -> platformType.name }
val konanTargetsMissedInMppPlatforms = KonanTarget::class.sealedSubclasses
.mapNotNull { sealedClass -> sealedClass.objectInstance }
.map { koltinTarget -> koltinTarget.name }
val extraValues = allowedMppValues - kotlinPlatformTypesMissedInMppPlatforms - konanTargetsMissedInMppPlatforms
assert(extraValues.isEmpty()) {
"There are platforms $extraValues which are presented in MPP_PLATFORMS regex," +
" but they are presented neither in konan targets nor in kotlin platform types"
}
}
}
@@ -24,62 +24,35 @@ enum class StringMetrics(val type: StringOverridePolicy, val anonymization: Stri
CONCAT, AllowedListAnonymizer( CONCAT, AllowedListAnonymizer(
listOf( listOf(
"common", "common",
"metadata", "native",
"jvm", "jvm",
"js", "js",
"arm32", "android_x64",
"arm64", "android_x86",
"mips32",
"mipsel32",
"x64",
"android",
"androidJvm", "androidJvm",
"androidApp",
"androidNativeArm",
"androidNativeArm32",
"android_arm32", "android_arm32",
"androidNativeArm64",
"android_arm64", "android_arm64",
"androidNative",
"androidNativeX86",
"androidNativeX64",
"iosArm",
"iosArm32",
"ios_arm32", "ios_arm32",
"iosArm64",
"ios_arm64", "ios_arm64",
"ios_simulator_arm64", "ios_simulator_arm64",
"ios",
"ios_x64", "ios_x64",
"iosSim", "watchos_arm32",
"iosX64", "watchos_arm64",
"watchos", "watchos_x86",
"watchosArm32", "watchos_x64",
"watchosArm64", "watchos_simulator_arm64",
"watchosX86", "watchos_device_arm64",
"tvos", "tvos_arm64",
"tvosArm64", "tvos_x64",
"tvosX64", "tvos_simulator_arm64",
"linux",
"linuxArm32Hfp",
"linux_arm32_hfp", "linux_arm32_hfp",
"linuxMips32",
"linux_mips32", "linux_mips32",
"linuxMipsel32",
"linux_mipsel32", "linux_mipsel32",
"linuxX64",
"linux_arm64", "linux_arm64",
"linux_x64", "linux_x64",
"macos",
"osx",
"macosX64",
"macos_x64", "macos_x64",
"macos_arm64", "macos_arm64",
"mingw",
"mingwX64",
"mingw_x64", "mingw_x64",
"mingwX86",
"mingw_X86",
"mingw_x86", "mingw_x86",
"wasm32", "wasm32",
"wasm" "wasm"