blob: 759e0b881d8fabd9dd6ee2bbb8a0bc43c6eec728 [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.
*/
def pythonVersionSuffix = project.ext.pythonVersion.replace('.', '')
def pythonContainerVersion = project.ext.pythonVersion == '2.7' ? '2' : project.ext.pythonVersion
def runScriptsDir = "${rootDir}/sdks/python/scripts"
// Basic test options for ITs running on Jenkins.
def basicTestOpts = [
"--capture=no", // print stdout instantly
"--numprocesses=8", // run tests in parallel
"--timeout=4500", // timeout of whole command execution
"--color=yes", // console color
"--log-cli-level=INFO" //log level info
]
task postCommitIT {
dependsOn 'installGcpTest'
// Run IT tests with TestDirectRunner in batch in Python 3.
doLast {
def batchTests = [
"apache_beam/examples/wordcount_it_test.py::WordCountIT::test_wordcount_it",
"apache_beam/io/gcp/pubsub_integration_test.py::PubSubIntegrationTest",
"apache_beam/io/gcp/big_query_query_to_table_it_test.py::BigQueryQueryToTableIT",
"apache_beam/io/gcp/bigquery_io_read_it_test.py",
"apache_beam/io/gcp/bigquery_read_it_test.py",
"apache_beam/io/gcp/bigquery_write_it_test.py",
"apache_beam/io/gcp/datastore/v1new/datastore_write_it_test.py",
]
def testOpts = basicTestOpts + ["${batchTests.join(' ')}"]
def argMap = ["runner": "TestDirectRunner",
"test_opts": testOpts,
"suite": "postCommitIT-direct-py${pythonVersionSuffix}",
]
def batchCmdArgs = mapToArgString(argMap)
exec {
executable 'sh'
args '-c', ". ${envdir}/bin/activate && ${runScriptsDir}/run_integration_test.sh $batchCmdArgs"
}
}
}
task spannerioIT {
dependsOn 'installGcpTest'
// Run Spanner IO IT tests with TestDirectRunner in batch in Python 3.
doLast {
def batchTests = [
"apache_beam/io/gcp/experimental/spannerio_read_it_test.py",
"apache_beam/io/gcp/experimental/spannerio_write_it_test.py",
]
def testOpts = basicTestOpts + ["${batchTests.join(' ')}"]
def argMap = ["runner": "TestDirectRunner",
"test_opts": testOpts,
"suite": "postCommitIT-direct-py${pythonVersionSuffix}",
]
def batchCmdArgs = mapToArgString(argMap)
exec {
executable 'sh'
args '-c', ". ${envdir}/bin/activate && ${runScriptsDir}/run_integration_test.sh $batchCmdArgs"
}
}
}
task examples {
dependsOn 'installGcpTest'
dependsOn ':sdks:python:sdist'
doLast {
def testOpts = ["--log-cli-level=INFO"]
def argMap = ["runner": "TestDirectRunner",
"test_opts": testOpts,
"suite": "postCommitExamples-direct-py${pythonVersionSuffix}",
"collect": "examples_postcommit and not sickbay_direct"
]
def batchCmdArgs = mapToArgString(argMap)
exec {
executable 'sh'
args '-c', ". ${envdir}/bin/activate && ${runScriptsDir}/run_integration_test.sh $batchCmdArgs"
}
}
}
tasks.register("mongodbioIT") {
dependsOn 'setupVirtualenv'
Random r = new Random()
def port = r.nextInt(1000) + 27017
def containerName = "mongoioit" + port
def options = [
"--mongo_uri=mongodb://localhost:" + port
]
// Pull the latest mongodb docker image and run
doFirst {
exec {
executable 'sh'
args '-c', "docker pull mongo && docker run --name ${containerName} -p ${port}:27017 -d mongo:latest"
}
}
doLast {
exec {
executable 'sh'
args '-c', ". ${envdir}/bin/activate && pip install -e ${rootDir}/sdks/python/[test] && python -m apache_beam.io.mongodbio_it_test ${options.join(' ')}"
}
exec {
executable 'sh'
args '-c', "docker stop ${containerName} && docker rm ${containerName}"
}
}
}
task directRunnerIT {
dependsOn 'installGcpTest'
// Run IT tests with TestDirectRunner in batch.
doLast {
def tests = [
"apache_beam/examples/wordcount_it_test.py::WordCountIT::test_wordcount_it",
"apache_beam/io/gcp/pubsub_integration_test.py::PubSubIntegrationTest",
"apache_beam/io/gcp/big_query_query_to_table_it_test.py::BigQueryQueryToTableIT",
"apache_beam/io/gcp/bigquery_io_read_it_test.py",
"apache_beam/io/gcp/bigquery_read_it_test.py",
"apache_beam/io/gcp/bigquery_write_it_test.py",
"apache_beam/io/gcp/datastore/v1new/datastore_write_it_test.py",
]
def batchTestOpts = basicTestOpts + ["${tests.join(' ')}"]
def argMap = ["runner": "TestDirectRunner",
"test_opts": batchTestOpts,
"suite": "directRunnerIT-batch",
]
def batchCmdArgs = mapToArgString(argMap)
exec {
executable 'sh'
args '-c', ". ${envdir}/bin/activate && ${runScriptsDir}/run_integration_test.sh $batchCmdArgs"
}
}
// Run IT tests with TestDirectRunner in streaming.
doLast {
def tests = [
"apache_beam/examples/wordcount_it_test.py::WordCountIT::test_wordcount_it",
"apache_beam/io/gcp/pubsub_integration_test.py::PubSubIntegrationTest",
"apache_beam/io/gcp/bigquery_test.py::BigQueryStreamingInsertTransformIntegrationTests::test_multiple_destinations_transform",
"apache_beam/io/gcp/bigquery_test.py::PubSubBigQueryIT",
"apache_beam/io/gcp/bigquery_file_loads_test.py::BigQueryFileLoadsIT::test_bqfl_streaming",
]
def streamingTestOpts = basicTestOpts + ["${tests.join(' ')}"]
def argMap = ["runner": "TestDirectRunner",
"streaming": "true",
"test_opts": streamingTestOpts,
"suite": "directRunnerIT-streaming",
]
def streamingCmdArgs = mapToArgString(argMap)
exec {
executable 'sh'
args '-c', ". ${envdir}/bin/activate && ${runScriptsDir}/run_integration_test.sh $streamingCmdArgs"
}
}
}
task hdfsIntegrationTest {
doLast {
exec {
executable 'sh'
args '-c', "${rootDir}/sdks/python/apache_beam/io/hdfs_integration_test/hdfs_integration_test.sh python:${pythonContainerVersion}"
}
}
}