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) {

Reply via email to