| /* |
| * 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. |
| */ |
| |
| // TODO(https://github.com/apache/beam/issues/20209): Move this definition into common.gradle. |
| |
| plugins { id 'org.apache.beam.module' } |
| applyJavaNature(publish: false, exportJavadoc: false) |
| |
| import org.apache.beam.gradle.BeamModulePlugin |
| |
| project.evaluationDependsOn(":sdks:python") |
| project.evaluationDependsOn(":runners:portability:java") |
| |
| def envDir = project.project(":sdks:python").envdir |
| def crossLanguageTestClasspath = project.project(":runners:portability:java").sourceSets.test.runtimeClasspath |
| def jobPort = BeamModulePlugin.getRandomPort() |
| def tmpDir = System.getenv("TMPDIR") ?: System.getenv("WORKSPACE") ?: "/tmp" |
| def pidFile = "${tmpDir}/local_job_service_main-${jobPort}.pid" |
| |
| def setupTask = project.tasks.register("fnApiJobServerSetup", Exec) { |
| dependsOn ':sdks:python:installGcpTest' |
| |
| executable 'sh' |
| args '-c', ". ${envDir}/bin/activate && python -m apache_beam.runners.portability.local_job_service_main --job_port ${jobPort} --pid_file ${pidFile} --background --stdout_file ${tmpDir}/beam-fnapi-job-server.log" |
| } |
| |
| def cleanupTask = project.tasks.register("fnApiJobServerCleanup", Exec) { |
| executable 'sh' |
| args '-c', ". ${envDir}/bin/activate && python -m apache_beam.runners.portability.local_job_service_main --pid_file ${pidFile} --stop" |
| } |
| |
| def gcpProject = project.findProperty('gcpProject') ?: 'apache-beam-testing' |
| |
| createCrossLanguageValidatesRunnerTask( |
| startJobServer: setupTask, |
| cleanupJobServer: cleanupTask, |
| numParallelTests: 1, |
| classpath: crossLanguageTestClasspath, |
| pythonPipelineOptions: [ |
| "--runner=PortableRunner", |
| "--job_endpoint=localhost:${jobPort}", |
| "--environment_cache_millis=10000", |
| "--experiments=beam_fn_api", |
| ], |
| javaPipelineOptions: [ |
| "--runner=PortableRunner", |
| "--jobEndpoint=localhost:${jobPort}", |
| "--environmentCacheMillis=10000", |
| "--experiments=beam_fn_api", |
| "--customBeamRequirement=${project.project(":sdks:python").projectDir}/build/apache-beam.tar.gz", |
| ], |
| goScriptOptions: [ |
| "--runner portable", |
| "--tests \"./test/integration/xlang ./test/integration/io/xlang/...\"", |
| "--endpoint localhost:${jobPort}", |
| ], |
| ) |
| |
| createTransformServiceTask( |
| startJobServer: setupTask, |
| cleanupJobServer: cleanupTask, |
| numParallelTests: 1, |
| collectMarker: 'uses_transform_service', |
| pythonPipelineOptions: [ |
| "--runner=TestDirectRunner", |
| "--project=${gcpProject}", |
| ], |
| pytestOptions: [ |
| "--capture=no", // print stdout instantly |
| "--timeout=4500", // timeout of whole command execution |
| "--color=yes", // console color |
| "--log-cli-level=INFO" //log level info |
| ] |
| ) |