| /* |
| * 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. |
| */ |
| |
| import CommonJobProperties as commonJobProperties |
| import InfluxDBCredentialsHelper |
| |
| def now = new Date().format("MMddHHmmss", TimeZone.getTimeZone('UTC')) |
| |
| // Common pipeline args for Dataflow job. |
| def dataflowPipelineArgs = [ |
| project : 'apache-beam-testing', |
| region : 'us-central1', |
| staging_location: 'gs://temp-storage-for-end-to-end-tests/staging-it', |
| temp_location : 'gs://temp-storage-for-end-to-end-tests/temp-it', |
| ] |
| |
| testConfigurations = [] |
| pythonVersions = ['37'] |
| |
| for (pythonVersion in pythonVersions) { |
| testConfigurations.add([ |
| jobName : "beam_PerformanceTests_WordCountIT_Py${pythonVersion}", |
| jobDescription : "Python SDK Performance Test - Run WordCountIT in Py${pythonVersion} with 1Gb files", |
| jobTriggerPhrase : "Run Python${pythonVersion} WordCountIT Performance Test", |
| test : "apache_beam/examples/wordcount_it_test.py::WordCountIT::test_wordcount_it", |
| gradleTaskName : ":sdks:python:test-suites:dataflow:py${pythonVersion}:runPerformanceTest", |
| pipelineOptions : dataflowPipelineArgs + [ |
| job_name : "performance-tests-wordcount-python${pythonVersion}-batch-1gb${now}", |
| runner : 'TestDataflowRunner', |
| publish_to_big_query : true, |
| metrics_dataset : 'beam_performance', |
| metrics_table : "wordcount_py${pythonVersion}_pkb_results", |
| influx_measurement : "wordcount_py${pythonVersion}_results", |
| influx_db_name : InfluxDBCredentialsHelper.InfluxDBDatabaseName, |
| influx_hostname : InfluxDBCredentialsHelper.InfluxDBHostUrl, |
| input : "gs://apache-beam-samples/input_small_files/ascii_sort_1MB_input.0000*", // 1Gb |
| output : "gs://temp-storage-for-end-to-end-tests/py-it-cloud/output", |
| expect_checksum : "ea0ca2e5ee4ea5f218790f28d0b9fe7d09d8d710", |
| num_workers : '10', |
| autoscaling_algorithm: "NONE", // Disable autoscale the worker pool. |
| ] |
| ]) |
| } |
| |
| for (testConfig in testConfigurations) { |
| createPythonPerformanceTestJob(testConfig) |
| } |
| |
| private void createPythonPerformanceTestJob(Map testConfig) { |
| // This job runs the Beam Python performance tests |
| job(testConfig.jobName) { |
| // Set default Beam job properties. |
| commonJobProperties.setTopLevelMainJobProperties(delegate) |
| |
| InfluxDBCredentialsHelper.useCredentials(delegate) |
| |
| // Run job in postcommit, don't trigger every push. |
| commonJobProperties.setAutoJob(delegate, 'H */6 * * *') |
| |
| // Allows triggering this build against pull requests. |
| commonJobProperties.enablePhraseTriggeringFromPullRequest( |
| delegate, |
| testConfig.jobDescription, |
| testConfig.jobTriggerPhrase, |
| ) |
| |
| publishers { |
| archiveJunit('**/pytest*.xml') |
| } |
| |
| steps { |
| gradle { |
| rootBuildScriptDir(commonJobProperties.checkoutDir) |
| switches("--info") |
| switches("-Ptest-pipeline-options=\"${commonJobProperties.mapToArgString(testConfig.pipelineOptions)}\"") |
| switches("-Ptest=${testConfig.test}") |
| tasks(testConfig.gradleTaskName) |
| commonJobProperties.setGradleSwitches(delegate) |
| } |
| } |
| } |
| } |