From eead52668ba9515b58cf24adeb690a9a3c799408 Mon Sep 17 00:00:00 2001 From: Pawel Pasterz Date: Wed, 21 Apr 2021 05:00:53 +0200 Subject: [PATCH 1/2] Introduce categories in IT --- integration_tests/build.gradle.kts | 30 +++++++++++++++++-- .../kotlin/integration/AllTestFilteredIT.kt | 5 ++++ .../kotlin/integration/CustomShardingIT.kt | 3 ++ .../test/kotlin/integration/DumpShardsIT.kt | 5 ++++ .../src/test/kotlin/integration/GameloopIT.kt | 5 ++++ .../test/kotlin/integration/IgnoreFailedIT.kt | 3 ++ .../test/kotlin/integration/LegacyResultIT.kt | 5 ++++ .../integration/ManyTestsOnSingleShardIT.kt | 3 ++ .../test/kotlin/integration/MultipleApksIT.kt | 3 ++ .../kotlin/integration/MultipleDevicesIT.kt | 3 ++ .../test/kotlin/integration/RunTimeoutIT.kt | 4 +++ .../test/kotlin/integration/SanityRoboIT.kt | 4 ++- .../kotlin/integration/TestFilteringIT.kt | 3 ++ .../kotlin/integration/config/Categories.kt | 4 +++ 14 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 integration_tests/src/test/kotlin/integration/config/Categories.kt diff --git a/integration_tests/build.gradle.kts b/integration_tests/build.gradle.kts index 799ec5ad2d..dba4317fde 100644 --- a/integration_tests/build.gradle.kts +++ b/integration_tests/build.gradle.kts @@ -38,12 +38,16 @@ tasks.test { } } -tasks.register("integrationTests") { +tasks.register("integrationTestsAndroid") { group = "Verification" - description = "Runs flank integration tests" + description = "Runs flank integration tests -- Android" filter { includeTestsMatching("*IT") } + useJUnit { + includeCategories = setOf("integration.config.AndroidTest") + excludeCategories = setOf("integration.config.IosTest") + } testLogging { events("skipped", "failed") exceptionFormat = TestExceptionFormat.FULL @@ -51,6 +55,28 @@ tasks.register("integrationTests") { maxParallelForks = Runtime.getRuntime().availableProcessors() / 2 } +tasks.register("integrationTestsIos") { + group = "Verification" + description = "Runs flank integration tests -- iOS" + filter { + includeTestsMatching("*IT") + } + useJUnit { + includeCategories = setOf("integration.config.IosTest") + excludeCategories = setOf("integration.config.AndroidTest") + } + testLogging { + events("skipped", "failed") + exceptionFormat = TestExceptionFormat.FULL + } + failFast = true +} + +tasks.register("integrationTests") { + dependsOn("integrationTestsAndroid", "integrationTestsIos") + tasks["integrationTestsIos"].mustRunAfter("integrationTestsAndroid") +} + val compileTestKotlin: KotlinCompile by tasks compileTestKotlin.kotlinOptions { freeCompilerArgs = listOf("-Xinline-classes") diff --git a/integration_tests/src/test/kotlin/integration/AllTestFilteredIT.kt b/integration_tests/src/test/kotlin/integration/AllTestFilteredIT.kt index 0f003f5f67..94682fbf2f 100644 --- a/integration_tests/src/test/kotlin/integration/AllTestFilteredIT.kt +++ b/integration_tests/src/test/kotlin/integration/AllTestFilteredIT.kt @@ -2,7 +2,10 @@ package integration import FlankCommand import com.google.common.truth.Truth.assertThat +import integration.config.AndroidTest +import integration.config.IosTest import org.junit.Test +import org.junit.experimental.categories.Category import run import utils.CONFIGS_PATH import utils.FLANK_JAR_PATH @@ -19,6 +22,7 @@ import utils.toOutputReportFile class AllTestFilteredIT { private val name = this::class.java.simpleName + @Category(AndroidTest::class) @Test fun `filter all tests - android`() { val name = "$name-android" @@ -45,6 +49,7 @@ class AllTestFilteredIT { assertThat(outputReport.weblinks).isEmpty() } + @Category(IosTest::class) @Test fun `filter all tests - ios`() { val name = "$name-ios" diff --git a/integration_tests/src/test/kotlin/integration/CustomShardingIT.kt b/integration_tests/src/test/kotlin/integration/CustomShardingIT.kt index 66fb1429d1..cfe554bf50 100644 --- a/integration_tests/src/test/kotlin/integration/CustomShardingIT.kt +++ b/integration_tests/src/test/kotlin/integration/CustomShardingIT.kt @@ -5,8 +5,10 @@ import com.fasterxml.jackson.databind.json.JsonMapper import com.fasterxml.jackson.module.kotlin.KotlinModule import com.google.common.truth.Truth.assertThat import flank.common.isWindows +import integration.config.AndroidTest import org.junit.Rule import org.junit.Test +import org.junit.experimental.categories.Category import org.junit.rules.TemporaryFolder import run import utils.AndroidTestShards @@ -38,6 +40,7 @@ class CustomShardingIT { @get:Rule val root = TemporaryFolder() + @Category(AndroidTest::class) @Test fun `flank custom sharding -- android`() { diff --git a/integration_tests/src/test/kotlin/integration/DumpShardsIT.kt b/integration_tests/src/test/kotlin/integration/DumpShardsIT.kt index cd08ca9235..614ebf1fe4 100644 --- a/integration_tests/src/test/kotlin/integration/DumpShardsIT.kt +++ b/integration_tests/src/test/kotlin/integration/DumpShardsIT.kt @@ -3,8 +3,11 @@ package integration import FlankCommand import com.google.common.truth.Truth.assertThat import flank.common.isWindows +import integration.config.AndroidTest +import integration.config.IosTest import org.junit.Assume.assumeFalse import org.junit.Test +import org.junit.experimental.categories.Category import run import utils.CONFIGS_PATH import utils.FLANK_JAR_PATH @@ -22,6 +25,7 @@ import java.io.File class DumpShardsIT { private val name = this::class.java.simpleName + @Category(AndroidTest::class) @Test fun `dump shards - android`() { val name = "$name-android" @@ -63,6 +67,7 @@ class DumpShardsIT { ) } + @Category(IosTest::class) @Test fun `dump shards - ios`() { assumeFalse(isWindows) diff --git a/integration_tests/src/test/kotlin/integration/GameloopIT.kt b/integration_tests/src/test/kotlin/integration/GameloopIT.kt index f197a48895..3926ee3aa8 100644 --- a/integration_tests/src/test/kotlin/integration/GameloopIT.kt +++ b/integration_tests/src/test/kotlin/integration/GameloopIT.kt @@ -5,8 +5,11 @@ import com.google.common.truth.Truth.assertThat import flank.common.isLinux import flank.common.isMacOS import flank.common.isWindows +import integration.config.AndroidTest +import integration.config.IosTest import org.junit.Assume.assumeFalse import org.junit.Test +import org.junit.experimental.categories.Category import run import utils.CONFIGS_PATH import utils.FLANK_JAR_PATH @@ -24,6 +27,7 @@ class GameloopIT { private val name = this::class.java.simpleName + @Category(AndroidTest::class) @Test fun androidGameloop() { val name = "$name-android" @@ -54,6 +58,7 @@ class GameloopIT { assertThat(testAxis.outcome).isEqualTo("success") } + @Category(IosTest::class) @Test fun iosGameloop() { assumeFalse(isWindows) diff --git a/integration_tests/src/test/kotlin/integration/IgnoreFailedIT.kt b/integration_tests/src/test/kotlin/integration/IgnoreFailedIT.kt index e75a77b269..bf242bee12 100644 --- a/integration_tests/src/test/kotlin/integration/IgnoreFailedIT.kt +++ b/integration_tests/src/test/kotlin/integration/IgnoreFailedIT.kt @@ -2,7 +2,9 @@ package integration import FlankCommand import com.google.common.truth.Truth.assertThat +import integration.config.AndroidTest import org.junit.Test +import org.junit.experimental.categories.Category import run import utils.CONFIGS_PATH import utils.FLANK_JAR_PATH @@ -20,6 +22,7 @@ import utils.toOutputReportFile class IgnoreFailedIT { private val name = this::class.java.simpleName + @Category(AndroidTest::class) @Test fun `return with exit code 0 for failed tests`() { val result = FlankCommand( diff --git a/integration_tests/src/test/kotlin/integration/LegacyResultIT.kt b/integration_tests/src/test/kotlin/integration/LegacyResultIT.kt index c84fa627fa..cb10b75ae4 100644 --- a/integration_tests/src/test/kotlin/integration/LegacyResultIT.kt +++ b/integration_tests/src/test/kotlin/integration/LegacyResultIT.kt @@ -3,8 +3,11 @@ package integration import FlankCommand import com.google.common.truth.Truth.assertThat import flank.common.isWindows +import integration.config.AndroidTest +import integration.config.IosTest import org.junit.Assume.assumeFalse import org.junit.Test +import org.junit.experimental.categories.Category import run import utils.CONFIGS_PATH import utils.FLANK_JAR_PATH @@ -24,6 +27,7 @@ import utils.toOutputReportFile class LegacyResultIT { private val name = this::class.java.simpleName + @Category(AndroidTest::class) @Test fun androidLegacyJUnitResultTest() { val result = FlankCommand( @@ -59,6 +63,7 @@ class LegacyResultIT { ) } + @Category(IosTest::class) @Test fun iosLegacyJUnitResultTest() { assumeFalse(isWindows) diff --git a/integration_tests/src/test/kotlin/integration/ManyTestsOnSingleShardIT.kt b/integration_tests/src/test/kotlin/integration/ManyTestsOnSingleShardIT.kt index 1de85aa16f..dee400f203 100644 --- a/integration_tests/src/test/kotlin/integration/ManyTestsOnSingleShardIT.kt +++ b/integration_tests/src/test/kotlin/integration/ManyTestsOnSingleShardIT.kt @@ -2,7 +2,9 @@ package integration import FlankCommand import com.google.common.truth.Truth.assertThat +import integration.config.AndroidTest import org.junit.Test +import org.junit.experimental.categories.Category import run import utils.CONFIGS_PATH import utils.FLANK_JAR_PATH @@ -25,6 +27,7 @@ class ManyTestsOnSingleShardIT { private val name = this::class.java.simpleName + @Category(AndroidTest::class) @Test fun `return with exit code 0 and has correct output`() { val result = FlankCommand( diff --git a/integration_tests/src/test/kotlin/integration/MultipleApksIT.kt b/integration_tests/src/test/kotlin/integration/MultipleApksIT.kt index 40e893d5b7..7fcc853e29 100644 --- a/integration_tests/src/test/kotlin/integration/MultipleApksIT.kt +++ b/integration_tests/src/test/kotlin/integration/MultipleApksIT.kt @@ -2,7 +2,9 @@ package integration import FlankCommand import com.google.common.truth.Truth.assertThat +import integration.config.AndroidTest import org.junit.Test +import org.junit.experimental.categories.Category import run import utils.CONFIGS_PATH import utils.FLANK_JAR_PATH @@ -26,6 +28,7 @@ import utils.toOutputReportFile class MultipleApksIT { private val name = this::class.java.simpleName + @Category(AndroidTest::class) @Test fun `flank full option run`() { val result = FlankCommand( diff --git a/integration_tests/src/test/kotlin/integration/MultipleDevicesIT.kt b/integration_tests/src/test/kotlin/integration/MultipleDevicesIT.kt index 2bc23d1efe..7b262d1b20 100644 --- a/integration_tests/src/test/kotlin/integration/MultipleDevicesIT.kt +++ b/integration_tests/src/test/kotlin/integration/MultipleDevicesIT.kt @@ -2,7 +2,9 @@ package integration import FlankCommand import com.google.common.truth.Truth.assertThat +import integration.config.AndroidTest import org.junit.Test +import org.junit.experimental.categories.Category import run import utils.CONFIGS_PATH import utils.FLANK_JAR_PATH @@ -18,6 +20,7 @@ import utils.toOutputReportFile class MultipleDevicesIT { private val name = this::class.java.simpleName + @Category(AndroidTest::class) @Test fun `run tests on multiple devices - android`() { val name = "$name-android" diff --git a/integration_tests/src/test/kotlin/integration/RunTimeoutIT.kt b/integration_tests/src/test/kotlin/integration/RunTimeoutIT.kt index 5b816e052c..cf3a46adaf 100644 --- a/integration_tests/src/test/kotlin/integration/RunTimeoutIT.kt +++ b/integration_tests/src/test/kotlin/integration/RunTimeoutIT.kt @@ -2,7 +2,9 @@ package integration import FlankCommand import com.google.common.truth.Truth.assertThat +import integration.config.AndroidTest import org.junit.Test +import org.junit.experimental.categories.Category import run import utils.CONFIGS_PATH import utils.FLANK_JAR_PATH @@ -16,6 +18,8 @@ import utils.toOutputReportFile class RunTimeoutIT { private val name = this::class.java.simpleName + + @Category(AndroidTest::class) @Test fun `cancel test run on timeout`() { val result = FlankCommand( diff --git a/integration_tests/src/test/kotlin/integration/SanityRoboIT.kt b/integration_tests/src/test/kotlin/integration/SanityRoboIT.kt index 47a436a1c1..311e12dc73 100644 --- a/integration_tests/src/test/kotlin/integration/SanityRoboIT.kt +++ b/integration_tests/src/test/kotlin/integration/SanityRoboIT.kt @@ -2,7 +2,9 @@ package integration import FlankCommand import com.google.common.truth.Truth.assertThat +import integration.config.AndroidTest import org.junit.Test +import org.junit.experimental.categories.Category import run import utils.CONFIGS_PATH import utils.FLANK_JAR_PATH @@ -16,8 +18,8 @@ import utils.removeUnicode import utils.toOutputReportFile class SanityRoboIT { - private val name = this::class.java.simpleName + @Category(AndroidTest::class) @Test fun `sanity robo`() { val result = FlankCommand( diff --git a/integration_tests/src/test/kotlin/integration/TestFilteringIT.kt b/integration_tests/src/test/kotlin/integration/TestFilteringIT.kt index 5204ba1440..ce1886d1e4 100644 --- a/integration_tests/src/test/kotlin/integration/TestFilteringIT.kt +++ b/integration_tests/src/test/kotlin/integration/TestFilteringIT.kt @@ -2,7 +2,9 @@ package integration import FlankCommand import com.google.common.truth.Truth.assertThat +import integration.config.AndroidTest import org.junit.Test +import org.junit.experimental.categories.Category import run import utils.CONFIGS_PATH import utils.FLANK_JAR_PATH @@ -20,6 +22,7 @@ import utils.toOutputReportFile class TestFilteringIT { private val name = this::class.java.simpleName + @Category(AndroidTest::class) @Test fun `run test from only one apk`() { val result = FlankCommand( diff --git a/integration_tests/src/test/kotlin/integration/config/Categories.kt b/integration_tests/src/test/kotlin/integration/config/Categories.kt new file mode 100644 index 0000000000..7335a0063f --- /dev/null +++ b/integration_tests/src/test/kotlin/integration/config/Categories.kt @@ -0,0 +1,4 @@ +package integration.config + +interface AndroidTest +interface IosTest From 86c2904e7e17399ede6902bfcdc443e3c89bafdf Mon Sep 17 00:00:00 2001 From: Pawel Pasterz Date: Wed, 21 Apr 2021 10:21:05 +0200 Subject: [PATCH 2/2] Use all available processors for android IT --- integration_tests/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration_tests/build.gradle.kts b/integration_tests/build.gradle.kts index dba4317fde..d8e3a3fd2f 100644 --- a/integration_tests/build.gradle.kts +++ b/integration_tests/build.gradle.kts @@ -52,7 +52,7 @@ tasks.register("integrationTestsAndroid") { events("skipped", "failed") exceptionFormat = TestExceptionFormat.FULL } - maxParallelForks = Runtime.getRuntime().availableProcessors() / 2 + maxParallelForks = Runtime.getRuntime().availableProcessors() } tasks.register("integrationTestsIos") {