| /* | |
| * 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 | |
| ] | |
| ) |