Merge branch 'sg/stress-test'
authorJunio C Hamano <gitster@pobox.com>
Fri, 18 Jan 2019 21:49:56 +0000 (13:49 -0800)
committerJunio C Hamano <gitster@pobox.com>
Fri, 18 Jan 2019 21:49:56 +0000 (13:49 -0800)
Flaky tests can now be repeatedly run under load with the
"--stress" option.

* sg/stress-test:
  test-lib: add the '--stress' option to run a test repeatedly under load
  test-lib-functions: introduce the 'test_set_port' helper function
  test-lib: set $TRASH_DIRECTORY earlier
  test-lib: consolidate naming of test-results paths
  test-lib: parse command line options earlier
  test-lib: parse options in a for loop to keep $@ intact
  test-lib: extract Bash version check for '-x' tracing
  test-lib: translate SIGTERM and SIGHUP to an exit

1  2 
t/lib-git-daemon.sh
t/t0410-partial-clone.sh

diff --combined t/lib-git-daemon.sh
@@@ -28,7 -28,7 +28,7 @@@ the
        test_skip_or_die $GIT_TEST_GIT_DAEMON "file system does not support FIFOs"
  fi
  
- LIB_GIT_DAEMON_PORT=${LIB_GIT_DAEMON_PORT-${this_test#t}}
+ test_set_port LIB_GIT_DAEMON_PORT
  
  GIT_DAEMON_PID=
  GIT_DAEMON_DOCUMENT_ROOT_PATH="$PWD"/repo
@@@ -54,11 -54,19 +54,11 @@@ start_git_daemon() 
                "$@" "$GIT_DAEMON_DOCUMENT_ROOT_PATH" \
                >&3 2>git_daemon_output &
        GIT_DAEMON_PID=$!
 -      >daemon.log
        {
                read -r line <&7
 -              printf "%s\n" "$line"
 -              printf >&4 "%s\n" "$line"
 -              (
 -                      while read -r line <&7
 -                      do
 -                              printf "%s\n" "$line"
 -                              printf >&4 "%s\n" "$line"
 -                      done
 -              ) &
 -      } 7<git_daemon_output >>"$TRASH_DIRECTORY/daemon.log" &&
 +              printf "%s\n" "$line" >&4
 +              cat <&7 >&4 &
 +      } 7<git_daemon_output &&
  
        # Check expected output
        if test x"$(expr "$line" : "\[[0-9]*\] \(.*\)")" != x"Ready to rumble"
diff --combined t/t0410-partial-clone.sh
@@@ -349,7 -349,7 +349,7 @@@ test_expect_success 'rev-list stops tra
        grep $(git -C repo rev-parse bar) out  # sanity check that some walking was done
  '
  
 -test_expect_success 'rev-list accepts missing and promised objects on command line' '
 +test_expect_success 'rev-list dies for missing objects on cmd line' '
        rm -rf repo &&
        test_create_repo repo &&
        test_commit -C repo foo &&
  
        git -C repo config core.repositoryformatversion 1 &&
        git -C repo config extensions.partialclone "arbitrary string" &&
 -      git -C repo rev-list --exclude-promisor-objects --objects "$COMMIT" "$TREE" "$BLOB"
 +
 +      for OBJ in "$COMMIT" "$TREE" "$BLOB"; do
 +              test_must_fail git -C repo rev-list --objects \
 +                      --exclude-promisor-objects "$OBJ" &&
 +              test_must_fail git -C repo rev-list --objects-edge-aggressive \
 +                      --exclude-promisor-objects "$OBJ" &&
 +
 +              # Do not die or crash when --ignore-missing is passed.
 +              git -C repo rev-list --ignore-missing --objects \
 +                      --exclude-promisor-objects "$OBJ" &&
 +              git -C repo rev-list --ignore-missing --objects-edge-aggressive \
 +                      --exclude-promisor-objects "$OBJ"
 +      done
  '
  
  test_expect_success 'gc repacks promisor objects separately from non-promisor objects' '
@@@ -492,7 -480,6 +492,6 @@@ test_expect_success 'gc stops traversa
        ! grep "$TREE_HASH" out
  '
  
- LIB_HTTPD_PORT=12345  # default port, 410, cannot be used as non-root
  . "$TEST_DIRECTORY"/lib-httpd.sh
  start_httpd