[ https://issues.apache.org/jira/browse/BEAM-5781?focusedWorklogId=156500&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-156500 ]
ASF GitHub Bot logged work on BEAM-5781: ---------------------------------------- Author: ASF GitHub Bot Created on: 19/Oct/18 23:38 Start Date: 19/Oct/18 23:38 Worklog Time Spent: 10m Work Description: boyuanzz closed pull request #6736: [BEAM-5781] Enable ValidatesRunner tests for portable Java URL: https://github.com/apache/beam/pull/6736 This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/build.gradle b/build.gradle index 488ac0ddf62..96d7f641c39 100644 --- a/build.gradle +++ b/build.gradle @@ -181,19 +181,20 @@ check.dependsOn rat // This indirection also makes Jenkins use the branch of the PR // for the test definitions. task javaPreCommit() { - dependsOn ":rat" +// dependsOn ":rat" // We need to list the model/* builds since sdks/java/core doesn't // depend on any of the model. - dependsOn ":beam-model-pipeline:build" - dependsOn ":beam-model-job-management:build" - dependsOn ":beam-model-fn-execution:build" - dependsOn ":beam-runners-google-cloud-dataflow-java-legacy-worker:build" - dependsOn ":beam-runners-google-cloud-dataflow-java-fn-api-worker:build" - dependsOn ":beam-sdks-java-core:buildNeeded" - dependsOn ":beam-sdks-java-core:buildDependents" +// dependsOn ":beam-model-pipeline:build" +// dependsOn ":beam-model-job-management:build" +// dependsOn ":beam-model-fn-execution:build" +// dependsOn ":beam-runners-google-cloud-dataflow-java-legacy-worker:build" +// dependsOn ":beam-runners-google-cloud-dataflow-java-fn-api-worker:build" +// dependsOn ":beam-sdks-java-core:buildNeeded" +// dependsOn ":beam-sdks-java-core:buildDependents" dependsOn ":beam-examples-java:preCommit" - dependsOn ":beam-sdks-java-extensions-sql-jdbc:preCommit" - dependsOn ":beam-sdks-java-javadoc:allJavadoc" + dependsOn ":beam-runners-google-cloud-dataflow-java:validatesRunnerTestFnApiWorker" +// dependsOn ":beam-sdks-java-extensions-sql-jdbc:preCommit" +// dependsOn ":beam-sdks-java-javadoc:allJavadoc" } task javaPostCommit() { diff --git a/runners/google-cloud-dataflow-java/build.gradle b/runners/google-cloud-dataflow-java/build.gradle index ebe9dcd1344..2ac2d3f574a 100644 --- a/runners/google-cloud-dataflow-java/build.gradle +++ b/runners/google-cloud-dataflow-java/build.gradle @@ -32,6 +32,7 @@ evaluationDependsOn(":beam-sdks-java-io-google-cloud-platform") evaluationDependsOn(":beam-sdks-java-core") evaluationDependsOn(":beam-examples-java") evaluationDependsOn(":beam-runners-google-cloud-dataflow-java-legacy-worker") +evaluationDependsOn(":beam-runners-google-cloud-dataflow-java-fn-api-worker") processResources { filter org.apache.tools.ant.filters.ReplaceTokens, tokens: [ @@ -103,20 +104,40 @@ test { systemProperties = [ "beamUseDummyRunner" : "true" ] } -// For the following test tasks, set workerHarnessContainerImage to empty to make Dataflow pick up -// the non-versioned container image, which handles a staged worker jar. +def dataflowProject = project.findProperty('dataflowProject') ?: 'apache-beam-testing' +def dataflowTempRoot = project.findProperty('dataflowTempRoot') ?: 'gs://temp-storage-for-validates-runner-tests/' +def dataflowLegacyWorkerJar = project.findProperty('dataflowWorkerJar') ?: project(":beam-runners-google-cloud-dataflow-java-legacy-worker").shadowJar.archivePath +def dataflowFnApiWorkerJar = project.findProperty('dataflowWorkerJar') ?: project(":beam-runners-google-cloud-dataflow-java-fn-api-worker").shadowJar.archivePath + +def dockerImageRoot = "us.gcr.io/${dataflowProject}/java-examples-it" +def dockerImageContainer = "${dockerImageRoot}/java" +def dockerTag = new Date().format('yyyyMMddHHmmss') + +def commonExcludeCategories = [ + 'org.apache.beam.sdk.testing.LargeKeys$Above10MB', + 'org.apache.beam.sdk.testing.UsesAttemptedMetrics', + 'org.apache.beam.sdk.testing.UsesDistributionMetrics', + 'org.apache.beam.sdk.testing.UsesGaugeMetrics', + 'org.apache.beam.sdk.testing.UsesSetState', + 'org.apache.beam.sdk.testing.UsesMapState', + 'org.apache.beam.sdk.testing.UsesSplittableParDoWithWindowedSideInputs', + 'org.apache.beam.sdk.testing.UsesUnboundedPCollections', + 'org.apache.beam.sdk.testing.UsesTestStream', + 'org.apache.beam.sdk.testing.UsesParDoLifecycle', + 'org.apache.beam.sdk.testing.UsesMetricsPusher', +] + +// For the following test tasks using legacy worker, set workerHarnessContainerImage to empty to +// make Dataflow pick up the non-versioned container image, which handles a staged worker jar. task validatesRunnerTest(type: Test) { group = "Verification" dependsOn ":beam-runners-google-cloud-dataflow-java-legacy-worker:shadowJar" - def dataflowProject = project.findProperty('dataflowProject') ?: 'apache-beam-testing' - def dataflowTempRoot = project.findProperty('dataflowTempRoot') ?: 'gs://temp-storage-for-validates-runner-tests/' - def dataflowWorkerJar = project.findProperty('dataflowWorkerJar') ?: project(":beam-runners-google-cloud-dataflow-java-legacy-worker").shadowJar.archivePath systemProperty "beamTestPipelineOptions", JsonOutput.toJson([ "--runner=TestDataflowRunner", "--project=${dataflowProject}", "--tempRoot=${dataflowTempRoot}", - "--dataflowWorkerJar=${dataflowWorkerJar}", + "--dataflowWorkerJar=${dataflowLegacyWorkerJar}", "--workerHarnessContainerImage=", ]) @@ -128,37 +149,64 @@ task validatesRunnerTest(type: Test) { testClassesDirs = files(project(":beam-sdks-java-core").sourceSets.test.output.classesDirs) useJUnit { includeCategories 'org.apache.beam.sdk.testing.ValidatesRunner' - excludeCategories 'org.apache.beam.sdk.testing.LargeKeys$Above10MB' - excludeCategories 'org.apache.beam.sdk.testing.UsesAttemptedMetrics' - excludeCategories 'org.apache.beam.sdk.testing.UsesDistributionMetrics' - excludeCategories 'org.apache.beam.sdk.testing.UsesGaugeMetrics' - excludeCategories 'org.apache.beam.sdk.testing.UsesSetState' - excludeCategories 'org.apache.beam.sdk.testing.UsesMapState' - excludeCategories 'org.apache.beam.sdk.testing.UsesSplittableParDoWithWindowedSideInputs' - excludeCategories 'org.apache.beam.sdk.testing.UsesUnboundedPCollections' - excludeCategories 'org.apache.beam.sdk.testing.UsesTestStream' - excludeCategories 'org.apache.beam.sdk.testing.UsesParDoLifecycle' - excludeCategories 'org.apache.beam.sdk.testing.UsesMetricsPusher' + commonExcludeCategories.each { + excludeCategories it + } + } +} + +project.rootProject.ext.set("docker-repository-root", "${dockerImageRoot}") +project.rootProject.ext.set("docker-tag","${dockerTag}") +evaluationDependsOn(":beam-sdks-java-container") + +task buildAndPushDockerContainer(type:Exec) { + dependsOn ":beam-sdks-java-container:docker" + commandLine "gcloud", "docker", "--", "push", "${dockerImageContainer}" +} + + +task validatesRunnerTestFnApiWorker(type: Test) { + group = "Verification" + dependsOn ":beam-runners-google-cloud-dataflow-java-fn-api-worker:shadowJar" + dependsOn buildAndPushDockerContainer + + systemProperty "beamTestPipelineOptions", JsonOutput.toJson([ + "--runner=TestDataflowRunner", + "--project=${dataflowProject}", + "--tempRoot=${dataflowTempRoot}", + "--dataflowWorkerJar=${dataflowFnApiWorkerJar}", + "--workerHarnessContainerImage=${dockerImageContainer}:${dockerTag}", + "--experiments=beam_fn_api", + ]) + + // Increase test parallelism up to the number of Gradle workers. By default this is equal + // to the number of CPU cores, but can be increased by setting --max-workers=N. + maxParallelForks Integer.MAX_VALUE + classpath = configurations.validatesRunner + testClassesDirs = files(project(":beam-sdks-java-core").sourceSets.test.output.classesDirs) + useJUnit { + includeCategories 'org.apache.beam.sdk.testing.ValidatesRunner' + commonExcludeCategories.each { + excludeCategories it + } } } task validatesRunner { group = "Verification" description "Validates Dataflow runner" - dependsOn validatesRunnerTest +// dependsOn validatesRunnerTest + dependsOn validatesRunnerTestFnApiWorker } task googleCloudPlatformIntegrationTest(type: Test) { group = "Verification" dependsOn ":beam-runners-google-cloud-dataflow-java-legacy-worker:shadowJar" - def dataflowProject = project.findProperty('dataflowProject') ?: 'apache-beam-testing' - def dataflowTempRoot = project.findProperty('dataflowTempRoot') ?: 'gs://temp-storage-for-end-to-end-tests' - def dataflowWorkerJar = project.findProperty('dataflowWorkerJar') ?: project(":beam-runners-google-cloud-dataflow-java-legacy-worker").shadowJar.archivePath systemProperty "beamTestPipelineOptions", JsonOutput.toJson([ "--runner=TestDataflowRunner", "--project=${dataflowProject}", "--tempRoot=${dataflowTempRoot}", - "--dataflowWorkerJar=${dataflowWorkerJar}", + "--dataflowWorkerJar=${dataflowLegacyWorkerJar}", "--workerHarnessContainerImage=", ]) @@ -174,15 +222,12 @@ task googleCloudPlatformIntegrationTest(type: Test) { task examplesJavaIntegrationTest(type: Test) { group = "Verification" dependsOn ":beam-runners-google-cloud-dataflow-java-legacy-worker:shadowJar" - def dataflowProject = project.findProperty('dataflowProject') ?: 'apache-beam-testing' - def dataflowTempRoot = project.findProperty('dataflowTempRoot') ?: 'gs://temp-storage-for-end-to-end-tests' - def dataflowWorkerJar = project.findProperty('dataflowWorkerJar') ?: project(":beam-runners-google-cloud-dataflow-java-legacy-worker").shadowJar.archivePath systemProperty "beamTestPipelineOptions", JsonOutput.toJson([ "--runner=TestDataflowRunner", "--project=${dataflowProject}", "--tempRoot=${dataflowTempRoot}", - "--dataflowWorkerJar=${dataflowWorkerJar}", + "--dataflowWorkerJar=${dataflowLegacyWorkerJar}", "--workerHarnessContainerImage=", ]) @@ -200,15 +245,12 @@ task examplesJavaIntegrationTest(type: Test) { task coreSDKJavaIntegrationTest(type: Test) { group = "Verification" dependsOn ":beam-runners-google-cloud-dataflow-java-legacy-worker:shadowJar" - def dataflowProject = project.findProperty('dataflowProject') ?: 'apache-beam-testing' - def dataflowTempRoot = project.findProperty('dataflowTempRoot') ?: 'gs://temp-storage-for-end-to-end-tests' - def dataflowWorkerJar = project.findProperty('dataflowWorkerJar') ?: project(":beam-runners-google-cloud-dataflow-java-legacy-worker").shadowJar.archivePath systemProperty "beamTestPipelineOptions", JsonOutput.toJson([ "--runner=TestDataflowRunner", "--project=${dataflowProject}", "--tempRoot=${dataflowTempRoot}", - "--dataflowWorkerJar=${dataflowWorkerJar}", + "--dataflowWorkerJar=${dataflowLegacyWorkerJar}", "--workerHarnessContainerImage=", ]) diff --git a/runners/google-cloud-dataflow-java/examples/build.gradle b/runners/google-cloud-dataflow-java/examples/build.gradle index 6009ff9f284..18d86b8e555 100644 --- a/runners/google-cloud-dataflow-java/examples/build.gradle +++ b/runners/google-cloud-dataflow-java/examples/build.gradle @@ -24,6 +24,7 @@ applyJavaNature(publish: false) // its sourceSets.test.output directly. evaluationDependsOn(":beam-examples-java") evaluationDependsOn(":beam-runners-google-cloud-dataflow-java-legacy-worker") +evaluationDependsOn(":beam-runners-google-cloud-dataflow-java-fn-api-worker") configurations { dataflowRunnerPreCommit } @@ -35,8 +36,11 @@ dependencies { def gcpProject = project.findProperty('gcpProject') ?: 'apache-beam-testing' def gcsTempRoot = project.findProperty('gcsTempRoot') ?: 'gs://temp-storage-for-end-to-end-tests/' +def dockerImageRoot = "us.gcr.io/${gcpProject}/java-examples-it" +def dockerImageContainer = "${dockerImageRoot}/java" +def dockerTag = new Date().format('yyyyMMddHHmmss') -task preCommit(type: Test) { +task preCommitLegacyWorker(type: Test) { dependsOn ":beam-runners-google-cloud-dataflow-java-legacy-worker:shadowJar" def dataflowWorkerJar = project.findProperty('dataflowWorkerJar') ?: project(":beam-runners-google-cloud-dataflow-java-legacy-worker").shadowJar.archivePath @@ -56,3 +60,41 @@ task preCommit(type: Test) { maxParallelForks 4 systemProperty "beamTestPipelineOptions", JsonOutput.toJson(preCommitBeamTestPipelineOptions) } + +project.rootProject.ext.set("docker-repository-root", "${dockerImageRoot}") +project.rootProject.ext.set("docker-tag","${dockerTag}") +evaluationDependsOn(":beam-sdks-java-container") + +task buildAndPushDockerContainer(type:Exec) { + dependsOn ":beam-sdks-java-container:docker" + commandLine "gcloud", "docker", "--", "push", "${dockerImageContainer}" +} + +task preCommitFnApiWorker(type: Test) { + dependsOn ":beam-runners-google-cloud-dataflow-java-fn-api-worker:shadowJar" + dependsOn buildAndPushDockerContainer + + def dataflowWorkerJar = project.findProperty('dataflowWorkerJar') ?: project(":beam-runners-google-cloud-dataflow-java-fn-api-worker").shadowJar.archivePath + def preCommitBeamTestPipelineOptions = [ + "--project=${gcpProject}", + "--tempRoot=${gcsTempRoot}", + "--runner=TestDataflowRunner", + "--dataflowWorkerJar=${dataflowWorkerJar}", + "--workerHarnessContainerImage=${dockerImageContainer}:${dockerTag}", + "--experiments=beam_fn_api", + ] + testClassesDirs = files(project(":beam-examples-java").sourceSets.test.output.classesDirs) + include "**/WordCountIT.class" + include "**/WindowedWordCountIT.class" + forkEvery 1 + maxParallelForks 4 + systemProperty "beamTestPipelineOptions", JsonOutput.toJson(preCommitBeamTestPipelineOptions) + useJUnit { + excludeCategories 'org.apache.beam.sdk.testing.StreamingIT' + } +} + +task preCommit() { + dependsOn preCommitLegacyWorker + dependsOn preCommitFnApiWorker +} \ No newline at end of file ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org Issue Time Tracking ------------------- Worklog Id: (was: 156500) Time Spent: 20m (was: 10m) > Enable ValidatesRunner tests for portable Java > ---------------------------------------------- > > Key: BEAM-5781 > URL: https://issues.apache.org/jira/browse/BEAM-5781 > Project: Beam > Issue Type: Test > Components: runner-dataflow > Reporter: Boyuan Zhang > Assignee: Boyuan Zhang > Priority: Major > Time Spent: 20m > Remaining Estimate: 0h > -- This message was sent by Atlassian JIRA (v7.6.3#76005)