This is an automated email from the ASF dual-hosted git repository.
adar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git
The following commit(s) were added to refs/heads/master by this push:
new 2217dc7 dist_test.py: support --collect-tmpdir in Java tests
2217dc7 is described below
commit 2217dc78600ba3456f5e4318298739d3a480d161
Author: Adar Dembo <[email protected]>
AuthorDate: Wed Apr 3 13:30:24 2019 -0700
dist_test.py: support --collect-tmpdir in Java tests
KUDU-2761 means this isn't useful yet, but it will be when that's fixed.
I also snuck in a fix for a typo in RetryRule.
Change-Id: Ic8bb699c78b3b1ea64c92d53996aa4e5c8cfbe0e
Reviewed-on: http://gerrit.cloudera.org:8080/12924
Tested-by: Adar Dembo <[email protected]>
Reviewed-by: Grant Henke <[email protected]>
---
build-support/dist_test.py | 22 +++++++++---------
.../org/apache/kudu/gradle/DistTestTask.java | 27 ++++++++++++++++++++--
.../java/org/apache/kudu/test/junit/RetryRule.java | 2 +-
3 files changed, 37 insertions(+), 14 deletions(-)
diff --git a/build-support/dist_test.py b/build-support/dist_test.py
index 2e207f5..402b6c6 100755
--- a/build-support/dist_test.py
+++ b/build-support/dist_test.py
@@ -539,7 +539,6 @@ def loop_test(parser, options):
create_task_json(staging, options.num_instances)
submit_tasks(staging, options)
-
def add_loop_test_subparser(subparsers):
p = subparsers.add_parser("loop",
help="Run many instances of the same test, specified by its full path",
@@ -559,10 +558,16 @@ def add_loop_test_subparser(subparsers):
p.add_argument("args", nargs=argparse.REMAINDER, help="test arguments")
p.set_defaults(func=loop_test)
+def get_gradle_cmd_line(options):
+ cmd = [rel_to_abs("java/gradlew")]
+ cmd.extend(GRADLE_FLAGS.split())
+ cmd.append("distTest")
+ if options.collect_tmpdir:
+ cmd.append("--collect-tmpdir")
+ return cmd
def run_java_tests(parser, options):
- subprocess.check_call([rel_to_abs("java/gradlew")] + GRADLE_FLAGS.split() +
- ["distTest"],
+ subprocess.check_call(get_gradle_cmd_line(options),
cwd=rel_to_abs("java"))
staging = StagingDir(rel_to_abs("java/build/dist-test"))
run_isolate(staging)
@@ -579,15 +584,14 @@ def loop_java_test(parser, options):
"""
if options.num_instances < 1:
parser.error("--num-instances must be >= 1")
- subprocess.check_call([rel_to_abs("java/gradlew")] + GRADLE_FLAGS.split() +
- ["distTest", "--classes", "**/%s" % options.pattern],
- cwd=rel_to_abs("java"))
+ cmd = get_gradle_cmd_line(options)
+ cmd.extend([ "--classes", "**/%s" % options.pattern ])
+ subprocess.check_call(cmd, cwd=rel_to_abs("java"))
staging = StagingDir(rel_to_abs("java/build/dist-test"))
run_isolate(staging)
create_task_json(staging, options.num_instances)
submit_tasks(staging, options)
-
def add_java_subparser(subparsers):
p = subparsers.add_parser('java', help='Run java tests via dist-test')
sp = p.add_subparsers()
@@ -602,16 +606,13 @@ def add_java_subparser(subparsers):
loop.add_argument("pattern", help="Pattern matching a Java test class to
run")
loop.set_defaults(func=loop_java_test)
-
def dump_base_deps(parser, options):
print json.dumps(get_base_deps(create_dependency_extractor()))
-
def add_internal_commands(subparsers):
p = subparsers.add_parser('internal', help="[Internal commands not for
users]")
p.add_subparsers().add_parser('dump_base_deps').set_defaults(func=dump_base_deps)
-
def main(argv):
p = argparse.ArgumentParser()
p.add_argument("--collect-tmpdir", dest="collect_tmpdir",
action="store_true",
@@ -626,7 +627,6 @@ def main(argv):
args = p.parse_args(argv)
args.func(p, args)
-
if __name__ == "__main__":
init_logging()
main(sys.argv[1:])
diff --git
a/java/buildSrc/src/main/groovy/org/apache/kudu/gradle/DistTestTask.java
b/java/buildSrc/src/main/groovy/org/apache/kudu/gradle/DistTestTask.java
index 32c5b24..4d3f5db 100644
--- a/java/buildSrc/src/main/groovy/org/apache/kudu/gradle/DistTestTask.java
+++ b/java/buildSrc/src/main/groovy/org/apache/kudu/gradle/DistTestTask.java
@@ -26,6 +26,7 @@ import
org.gradle.api.internal.tasks.testing.detection.DefaultTestClassScanner;
import org.gradle.api.internal.tasks.testing.detection.TestFrameworkDetector;
import org.gradle.api.logging.Logger;
import org.gradle.api.logging.Logging;
+import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFiles;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.TaskAction;
@@ -70,6 +71,8 @@ public class DistTestTask extends DefaultTask {
private List<Test> testTasks = Lists.newArrayList();
+ private boolean collectTmpDir = false;
+
/**
* Called by the build file to add test tasks to be considered for
* dist-tests.
@@ -88,6 +91,23 @@ public class DistTestTask extends DefaultTask {
return this;
}
+ /**
+ * Not actually used, but gradle mandates that the @Input annotation be
placed
+ * on a getter, and we need @Input so that the task is rerun if the value of
+ * the 'collect-tmpdir' option changes.
+ */
+ @Input
+ public boolean getCollectTmpDir() {
+ return collectTmpDir;
+ }
+
+ @Option(option = "collect-tmpdir",
+ description = "Archives the test's temp directory as an artifact if
the test fails.")
+ public DistTestTask setCollectTmpdir() {
+ collectTmpDir = true;
+ return this;
+ }
+
@InputFiles
public FileCollection getInputClasses() {
FileCollection fc = getProject().files(); // Create and empty
FileCollection.
@@ -176,8 +196,11 @@ public class DistTestTask extends DefaultTask {
// Build up the actual Java command line to run the test.
ImmutableList.Builder<String> cmd = new ImmutableList.Builder<>();
-
cmd.add(isolateFileDir.relativize(buildSupportDir.resolve("run_dist_test.py")).toString(),
- "--test-language=java",
+
cmd.add(isolateFileDir.relativize(buildSupportDir.resolve("run_dist_test.py")).toString());
+ if (collectTmpDir) {
+ cmd.add("--collect-tmpdir");
+ }
+ cmd.add("--test-language=java",
"--",
"-ea",
"-cp",
diff --git
a/java/kudu-test-utils/src/main/java/org/apache/kudu/test/junit/RetryRule.java
b/java/kudu-test-utils/src/main/java/org/apache/kudu/test/junit/RetryRule.java
index a4611db..80272fd 100644
---
a/java/kudu-test-utils/src/main/java/org/apache/kudu/test/junit/RetryRule.java
+++
b/java/kudu-test-utils/src/main/java/org/apache/kudu/test/junit/RetryRule.java
@@ -58,7 +58,7 @@ public class RetryRule implements TestRule {
private final ResultReporter reporter;
static {
- // Initialize the flaky test set if it exists. The file wil have one test
+ // Initialize the flaky test set if it exists. The file will have one test
// name per line.
String value = System.getenv("KUDU_FLAKY_TEST_LIST");
if (value != null) {