blob: ee61a28fad7a76fcbfaa89db2ac95f02f99b93c2 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
/*
* Configuration for running multi-process tests in isolation. See the 'multiProcessTestTasks'
* variable for the list of multi-process test tasks.
*
* To run multi-process tests in isolation, set the Gradle property 'parallelDunit'.
*
* Additional configuration properties for running multi-process tests in Docker are:
*
* --max-workers The maximum number of workers processes for Gradle to run in parallel.
* (Note that Gradle applies this value to all tasks, not just test tasks.)
*
* testMaxParallelForks The maximum number of tests for each multi-process test task to process in
* parallel. If 'parallelDunit' us defined, `testMaxParallelForks` defaults to
* 1/4 of the machine's available processors. If 'parallelDunit' is not
* defined, the default 'testMaxParallelForks' is 1. (Note that test.gradle
* also applies this property to unit test tasks, with different defaults.)
*/
import org.apache.geode.gradle.testing.Executers
import org.apache.geode.gradle.testing.isolation.WorkingDirectoryIsolator
def multiProcessTestTasks = [acceptanceTest, repeatAcceptanceTest,
distributedTest, repeatDistributedTest,
integrationTest, repeatIntegrationTest,
upgradeTest, repeatUpgradeTest,
uiTest, repeatUnitTest]
if (project.hasProperty('testJVM') && !testJVM.trim().isEmpty()) {
for (task in multiProcessTestTasks) {
task.environment "JAVA_HOME", "${project.testJVM}"
}
}
if (project.hasProperty('parallelDunit')) {
def parallelForks = project.hasProperty('testMaxParallelForks')
? Integer.parseUnsignedInt(project.testMaxParallelForks)
: Runtime.runtime.availableProcessors().intdiv(4) ?: 1
for (task in multiProcessTestTasks) {
task.maxParallelForks = parallelForks
task.ext {
isolatedTest = true
}
}
apply plugin: 'geode-isolated-test'
} else {
for (task in multiProcessTestTasks) {
if (project.hasProperty('testMaxParallelForks')) {
task.maxParallelForks = Integer.parseUnsignedInt(project.testMaxParallelForks)
}
task.doFirst {
testExecuter = Executers.withAdjustment(it, new WorkingDirectoryIsolator())
}
}
}