This is an automated email from the ASF dual-hosted git repository.
heejong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new a286049 [BEAM-12389] fix xlang validate runner test flakiness
new 8ab0d34 Merge pull request #15025 from ihji/BEAM-12389
a286049 is described below
commit a2860491f7e41fc024ca5f05a7c5be5f6332a7ce
Author: Heejong Lee <[email protected]>
AuthorDate: Wed Jun 16 15:14:31 2021 -0700
[BEAM-12389] fix xlang validate runner test flakiness
---
.../org/apache/beam/gradle/BeamModulePlugin.groovy | 17 +++++++++++++----
runners/flink/job-server/flink_job_server.gradle | 4 ++--
runners/spark/job-server/spark_job_server.gradle | 4 ++--
sdks/python/test-suites/direct/xlang/build.gradle | 2 +-
4 files changed, 18 insertions(+), 9 deletions(-)
diff --git
a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
index 1b77c06..985bdb3 100644
--- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
@@ -45,7 +45,7 @@ import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.testing.jacoco.tasks.JacocoReport
-import java.util.concurrent.atomic.AtomicInteger
+import java.net.ServerSocket
/**
* This plugin adds methods to configure a module with Beam's defaults, called
"natures".
*
@@ -82,7 +82,16 @@ class BeamModulePlugin implements Plugin<Project> {
* limitations under the License.
*/
"""
- static AtomicInteger startingExpansionPortNumber = new AtomicInteger(18091)
+ static def getRandomPort() {
+ new ServerSocket(0).withCloseable { socket ->
+ def port = socket.getLocalPort()
+ if (port > 0) {
+ return port
+ } else {
+ throw new GradleException("couldn't find a free port.")
+ }
+ }
+ }
/** A class defining the set of configurable properties accepted by
applyJavaNature. */
class JavaNatureConfiguration {
@@ -2029,8 +2038,8 @@ class BeamModulePlugin implements Plugin<Project> {
// Task for launching expansion services
def envDir = project.project(":sdks:python").envdir
def pythonDir = project.project(":sdks:python").projectDir
- def javaPort = startingExpansionPortNumber.getAndDecrement()
- def pythonPort = startingExpansionPortNumber.getAndDecrement()
+ def javaPort = getRandomPort()
+ def pythonPort = getRandomPort()
def expansionJar =
project.project(':sdks:java:testing:expansion-service').buildTestExpansionServiceJar.archivePath
def expansionServiceOpts = [
"group_id": project.name,
diff --git a/runners/flink/job-server/flink_job_server.gradle
b/runners/flink/job-server/flink_job_server.gradle
index 4a4d5ff..a95504c 100644
--- a/runners/flink/job-server/flink_job_server.gradle
+++ b/runners/flink/job-server/flink_job_server.gradle
@@ -211,8 +211,8 @@ task validatesPortableRunner() {
dependsOn validatesPortableRunnerStreamingCheckpoint
}
-def jobPort = BeamModulePlugin.startingExpansionPortNumber.getAndDecrement()
-def artifactPort =
BeamModulePlugin.startingExpansionPortNumber.getAndDecrement()
+def jobPort = BeamModulePlugin.getRandomPort()
+def artifactPort = BeamModulePlugin.getRandomPort()
def setupTask = project.tasks.create(name: "flinkJobServerSetup", type: Exec) {
dependsOn shadowJar
diff --git a/runners/spark/job-server/spark_job_server.gradle
b/runners/spark/job-server/spark_job_server.gradle
index 172e9e5..c32f7b0 100644
--- a/runners/spark/job-server/spark_job_server.gradle
+++ b/runners/spark/job-server/spark_job_server.gradle
@@ -202,8 +202,8 @@ task validatesPortableRunner() {
dependsOn validatesPortableRunnerStreaming
}
-def jobPort = BeamModulePlugin.startingExpansionPortNumber.getAndDecrement()
-def artifactPort =
BeamModulePlugin.startingExpansionPortNumber.getAndDecrement()
+def jobPort = BeamModulePlugin.getRandomPort()
+def artifactPort = BeamModulePlugin.getRandomPort()
def setupTask = project.tasks.create(name: "sparkJobServerSetup", type: Exec) {
dependsOn shadowJar
diff --git a/sdks/python/test-suites/direct/xlang/build.gradle
b/sdks/python/test-suites/direct/xlang/build.gradle
index dc33fb4..0e64e58 100644
--- a/sdks/python/test-suites/direct/xlang/build.gradle
+++ b/sdks/python/test-suites/direct/xlang/build.gradle
@@ -26,7 +26,7 @@ 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.startingExpansionPortNumber.getAndDecrement()
+def jobPort = BeamModulePlugin.getRandomPort()
def tmpDir = System.getenv("TMPDIR") ?: System.getenv("WORKSPACE") ?: "/tmp"
def pidFile = "${tmpDir}/local_job_service_main-${jobPort}.pid"