git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 3/3] tests: allow user to specify trash directory location

From
Jeff King <peff@peff.net>
Date
Aug 9, 2009, 08:39 UTC
Message-ID
<20090809083945.GC8250@coredump.intra.peff.net>
In-Reply-To
<20090809083518.GA8147@coredump.intra.peff.net>

The tests generate a large amount of I/O activity creating and destroying repositories and files. We can improve the time it takes to run the test suite by creating trash directories on filesystems with better performance characteristic, even though we may not want the rest of the git repository on those filesystems (e.g., because they are not network connected, or because they are temporary ramdisks).

For example, on a dual processor system:
  $ cd t && time make -j32
  real    1m51.562s
  user    0m59.260s
  sys     1m20.933s
  # /dev/shm is tmpfs
  $ cd t && time make -j32 GIT_TEST_OPTS="--root=/dev/shm"
  real    1m1.484s
  user    0m53.555s
  sys     1m5.264s

We almost halve the wall clock time, and we utilize the dual processors much better.

Signed-off-by: Jeff King <peff@peff.net>
---
There is a test below for absolute versus relative path in the root
provided.  Do we need some extra magic to make it work on non-Unix
platforms?
 t/test-lib.sh |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/t/test-lib.sh b/t/test-lib.sh
index e6a7bb1..a5b8d03 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -114,6 +114,9 @@ do
 		valgrind=t; verbose=t; shift ;;
 	--tee)
 		shift ;; # was handled already
+	--root=*)
+		root=$(expr "z$1" : 'z[^=]*=\(.*\)')
+		shift ;;
 	*)
 		echo "error: unknown test option '$1'" >&2; exit 1 ;;
 	esac
@@ -645,7 +648,11 @@ fi
 
 # Test repository
 test="trash directory.$(basename "$0" .sh)"
-TRASH_DIRECTORY="$TEST_DIRECTORY/$test"
+test -n "$root" && test="$root/$test"
+case "$test" in
+/*) TRASH_DIRECTORY="$test" ;;
+ *) TRASH_DIRECTORY="$TEST_DIRECTORY/$test" ;;
+esac
 test ! -z "$debug" || remove_trash=$TRASH_DIRECTORY
 rm -fr "$test" || {
 	GIT_EXIT_OK=t
-- 
1.6.4.178.g7a987
Previous: Jeff KingNext: Johannes Sixt
Message 4 of 7 in “moving test trash directories”
  1. 0/3 moving test trash directoriesJeff King, Aug 9, 2009
  2. 1/3 tests: use "$TEST_DIRECTORY" instead of ".."Jeff King, Aug 9, 2009
  3. 2/3 tests: provide $TRASH_DIRECTORY variableJeff King, Aug 9, 2009
  4. 3/3 tests: allow user to specify trash directory locationJeff King, Aug 9, 2009
  5. Johannes SixtAug 9, 2009
  6. Johannes SchindelinAug 9, 2009
  7. 4/3 t/Makefile: include config.makJeff King, Aug 9, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.