blob: 2786589de595e8573ef65acd31b55936281ecca6 [file] [log] [blame]
/*
* Copyright 2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import common.JvmVendor
import common.JvmVersion
import common.Os
import configurations.BaseGradleBuildType
import configurations.PerformanceTestCoordinator
import jetbrains.buildServer.configs.kotlin.v2018_2.BuildStep
import jetbrains.buildServer.configs.kotlin.v2018_2.buildSteps.GradleBuildStep
import model.PerformanceTestType
import model.SpecificBuild
import model.Stage
import model.StageNames
import model.TestCoverage
import model.TestType
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
class PerformanceTestBuildTypeTest {
private
val buildModel = model.CIBuildModel(buildScanTags = listOf("Check"))
@Test
fun `create correct PerformanceTest build type`() {
val performanceTest = PerformanceTestCoordinator(buildModel, PerformanceTestType.test, Stage(StageNames.READY_FOR_MERGE,
specificBuilds = listOf(
SpecificBuild.BuildDistributions,
SpecificBuild.Gradleception,
SpecificBuild.SmokeTests),
functionalTests = listOf(
TestCoverage(1, TestType.platform, Os.linux, JvmVersion.java8),
TestCoverage(2, TestType.platform, Os.windows, JvmVersion.java11, vendor = JvmVendor.openjdk)),
performanceTests = listOf(PerformanceTestType.test),
omitsSlowProjects = true))
assertEquals(listOf(
"GRADLE_RUNNER",
"CHECK_CLEAN_M2",
"GRADLE_RERUNNER"
), performanceTest.steps.items.map(BuildStep::name))
val expectedRunnerParams = listOf(
"--baselines",
"%performance.baselines%",
"",
"-x",
"prepareSamples",
"-Porg.gradle.performance.branchName=%teamcity.build.branch%",
"-Porg.gradle.performance.db.url=%performance.db.url%",
"-Porg.gradle.performance.db.username=%performance.db.username%",
"-Porg.gradle.performance.db.password=%performance.db.password.tcagent%",
"-PteamCityUsername=%teamcity.username.restbot%",
"-PteamCityPassword=%teamcity.password.restbot%",
"-PtestJavaHome=%linux.java8.oracle.64bit%",
"-PmaxParallelForks=%maxParallelForks%",
"-s",
"--daemon",
"",
"-I",
"\"%teamcity.build.checkoutDir%/gradle/init-scripts/build-scan.init.gradle.kts\"",
"-Dorg.gradle.internal.tasks.createops",
"-Dorg.gradle.internal.plugins.portal.url.override=%gradle.plugins.portal.url%",
"-Porg.gradle.performance.buildTypeId=Gradle_Check_IndividualPerformanceScenarioWorkersLinux",
"-Porg.gradle.performance.workerTestTaskName=fullPerformanceTest",
"-Porg.gradle.performance.coordinatorBuildId=%teamcity.build.id%",
"-PgithubToken=%github.ci.oauth.token%",
"\"-Dscan.tag.PerformanceTest\"",
"--build-cache",
"\"-Dgradle.cache.remote.url=%gradle.cache.remote.url%\"",
"\"-Dgradle.cache.remote.username=%gradle.cache.remote.username%\"",
"\"-Dgradle.cache.remote.password=%gradle.cache.remote.password%\""
)
assertEquals(
(listOf("clean", "distributedPerformanceTests") + expectedRunnerParams).joinToString(" "),
performanceTest.getGradleStep("GRADLE_RUNNER").gradleParams!!.trim()
)
assertEquals(BuildStep.ExecutionMode.DEFAULT, performanceTest.getGradleStep("GRADLE_RUNNER").executionMode)
assertEquals(
(listOf("tagBuild", "distributedPerformanceTests") +
expectedRunnerParams +
"-PteamCityBuildId=%teamcity.build.id%" +
"-PonlyPreviousFailedTestClasses=true" +
"-Dscan.tag.RERUN_TESTS"
).joinToString(" "),
performanceTest.getGradleStep("GRADLE_RERUNNER").gradleParams
)
assertEquals(BuildStep.ExecutionMode.RUN_ON_FAILURE, performanceTest.getGradleStep("GRADLE_RERUNNER").executionMode)
}
private
fun BaseGradleBuildType.getGradleStep(stepName: String) = steps.items.find { it.name == stepName }!! as GradleBuildStep
}