[
https://issues.apache.org/jira/browse/BEAM-3942?focusedWorklogId=89427&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-89427
]
ASF GitHub Bot logged work on BEAM-3942:
----------------------------------------
Author: ASF GitHub Bot
Created on: 10/Apr/18 14:42
Start Date: 10/Apr/18 14:42
Worklog Time Spent: 10m
Work Description: lgajowy commented on a change in pull request #5003:
[BEAM-3942] Update performance testing framework to use Gradle
URL: https://github.com/apache/beam/pull/5003#discussion_r180446975
##########
File path: build_rules.gradle
##########
@@ -593,6 +593,118 @@ ext.applyJavaNature = {
}
}
+// Reads and contains all necessary performance test parameters
+class JavaPerformanceTestConfiguration {
+ String pkbLocation = System.getProperty('pkbLocation')
+
+ String logLevel = System.getProperty('logLevel', 'INFO')
+ String gradleBinary = System.getProperty('gradleBinary', './gradlew')
+ String isOfficial = System.getProperty('official', 'true')
+ String benchmarks = System.getProperty('benchmarks',
'beam_integration_benchmark')
+
+ String beamPrebuilt = System.getProperty('beamPrebuilt', 'true')
+ String beamSdk = System.getProperty('beamSdk', 'java')
+
+ String timeout = System.getProperty('itTimeout', '1200')
+
+ String kubeconfig = System.getProperty('kubeconfig',
System.getProperty('user.home') + '/.kube/config')
+ String kubectl = System.getProperty('kubectl', 'kubectl')
+
+ // PerfKit will have trouble reading 'null' path. It expects empty string if
no scripts are expected.
+ String kubernetesScripts = System.getProperty('kubernetesScripts', '')
+
+ String integrationTestPipelineOptions =
System.getProperty('integrationTestPipelineOptions')
+
+ // PerfKit will have trouble reading 'null' path. It expects empty string if
no config file is expected.
+ String optionsConfigFile = System.getProperty('beamITOptions', '')
+
+ String integrationTest = System.getProperty('integrationTest')
+ String itModule = System.getProperty('itModule')
+
+ String runner = System.getProperty('integrationTestRunner', 'direct')
+
+ String extraProperties = System.getProperty('beamExtraProperties', '')
+}
+
+// Configures a project with a set of tasks needed for running performance
tests
+ext.enableJavaPerformanceTesting = {
+ println "enableJavaPerformanceTesting with ${it ? "$it" : "default
configuration"} for project ${project.name}"
+
+ // Use the implicit it parameter of the closure to handle zero argument or
one argument map calls.
+ JavaPerformanceTestConfiguration configuration = it ? it as
JavaPerformanceTestConfiguration : new JavaPerformanceTestConfiguration()
+
+ // Add runners needed to run integration tests on
+ task packageIntegrationTests(type: Jar) {
+ if (gradle.startParameter.taskNames.contains('integrationTest')) {
+
+ def runner = configuration.runner
+ dependencies {
+ if (runner.contains('dataflow')) {
+ testCompile project(path: ":runners:google-cloud-dataflow-java",
configuration: 'shadowTest')
+ } else {
+ testCompile project(path: ":runners:direct-java", configuration:
'shadowTest')
+ }
+ }
+ }
+ }
+
+ // Task for running integration tests
+ task integrationTest(type: Test) {
+ include "**/*IT.class"
+ systemProperties.beamTestPipelineOptions =
configuration.integrationTestPipelineOptions
+ }
+}
+
+ext.createPerformanceTestHarness = {
+ println "createPerformanceTestHarness with ${it ? "$it" : "default
configuration"} for project ${project.name}"
+
+ // Use the implicit it parameter of the closure to handle zero argument or
one argument map calls.
+ JavaPerformanceTestConfiguration configuration = it ? it as
JavaPerformanceTestConfiguration : new JavaPerformanceTestConfiguration()
+
+ // This task runs PerfKitBenchmarker, which does benchmarking of the IO ITs.
+ // The arguments passed to it allows it to invoke gradle again with the
desired benchmark.
+ //
+ // To invoke this, run:
+ //
+ // ./gradlew performanceTest \
+ // -DpkbLocation="<path to pkb.py>"
+ // -DintegrationTestPipelineOptions='["--numberOfRecords=1000", "<more
options>"]' \
+ // -DintegrationTest=<io test, eg. org.apache.beam.sdk.io.text.TextIOIT> \
+ // -DitModule=<directory containing desired test, eg.
sdks/java/io/file-based-io-tests> \
+ // -DintegrationTestRunner=direct/dataflow/<other>
+ //
+ // There are more options with default values that can be tweaked if needed
(see below).
+ task performanceTest(type: Exec) {
+
+ // Perfkit needs to work in the Beam's root directory,
Review comment:
I made this comment more clear in the next commit too. I meant that the
performanceTest task requires perfkit to be run in the project root directory.
----------------------------------------------------------------
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:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 89427)
Time Spent: 5h 50m (was: 5h 40m)
> Update performance testing framework to use Gradle.
> ---------------------------------------------------
>
> Key: BEAM-3942
> URL: https://issues.apache.org/jira/browse/BEAM-3942
> Project: Beam
> Issue Type: Sub-task
> Components: testing
> Reporter: Chamikara Jayalath
> Assignee: Ćukasz Gajowy
> Priority: Major
> Time Spent: 5h 50m
> Remaining Estimate: 0h
>
> This requires performing updates to PerfKitBenchmarker and Beam so that we
> can execute performance tests using Gradle.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)