Mercurial > hg > mercurial-crew-with-dirclash
view tests/run-tests @ 1598:14d1f1868bf6
cleanup of revlog.group when repository is local
revlog.group cached every chunk from the revlog, the behaviour was
needed to minimize the roundtrip with old-http.
We now cache the revlog data ~4MB at a time.
The memory used server side when pulling goes down to 35Mo maximum
whereas without the patch more than 160Mo was used when cloning the linux kernel
repository.
The time used by cloning is higher mainly because of the check in revlog.revision.
before
110.25user 20.90system 2:52.00elapsed 76%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+708707minor)pagefaults 0swaps
after
117.56user 18.86system 2:50.43elapsed 80%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+748366minor)pagefaults 0swaps
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Tue, 27 Dec 2005 13:09:49 -0600 |
parents | 651690fe6be3 |
children | a5c46cff620f 7d83a351a936 |
line wrap: on
line source
#!/bin/sh -e LANG="C"; export LANG LC_CTYPE="C"; export LC_CTYPE LC_NUMERIC="C"; export LC_NUMERIC LC_TIME="C"; export LC_TIME LC_COLLATE="C"; export LC_COLLATE LC_MONETARY="C"; export LC_MONETARY LC_MESSAGES="C"; export LC_MESSAGES LC_PAPER="C"; export LC_PAPER LC_NAME="C"; export LC_NAME LC_ADDRESS="C"; export LC_ADDRESS LC_TELEPHONE="C"; export LC_TELEPHONE LC_MEASUREMENT="C"; export LC_MEASUREMENT LC_IDENTIFICATION="C"; export LC_IDENTIFICATION LC_ALL=""; export LC_ALL TZ=GMT; export TZ HGEDITOR=true; export HGEDITOR HGMERGE=true; export HGMERGE HGUSER="test"; export HGUSER umask 022 tests=0 failed=0 HGTMP="" cleanup_exit() { rm -rf "$HGTMP" } # Remove temporary files even if we get interrupted trap "cleanup_exit" 0 # normal exit trap "exit 255" 1 2 3 6 15 # HUP INT QUIT ABRT TERM HGTMP="${TMPDIR-/tmp}/hgtests.$RANDOM.$RANDOM.$RANDOM.$$" (umask 077 && mkdir "$HGTMP") || { echo "Could not create temporary directory! Exiting." 1>&2 exit 1 } TESTDIR="$PWD" INST="$HGTMP/install" PYTHONDIR="$INST/lib/python" cd .. if ${PYTHON-python} setup.py install --home="$INST" \ --install-lib="$PYTHONDIR" > tests/install.err 2>&1 then rm tests/install.err else cat tests/install.err exit 1 fi cd "$TESTDIR" PATH="$INST/bin:$PATH"; export PATH PYTHONPATH="$PYTHONDIR"; export PYTHONPATH run_one() { rm -f "$1.err" mkdir "$HGTMP/$1" cd "$HGTMP/$1" fail=0 HOME="$HGTMP/$1"; export HOME OUT="$HGTMP/$1.out" OUTOK="$TESTDIR/$1.out" ERR="$TESTDIR/$1.err" if "$TESTDIR/$1" > "$OUT" 2>&1; then : no error else echo "$1 failed with error code $?" fail=1 fi if [ -s "$OUT" -a ! -s "$OUTOK" ] ; then cp "$OUT" "$ERR" echo echo "$1 generated unexpected output:" cat "$ERR" fail=1 elif [ -r "$OUTOK" ]; then if diff -u "$OUTOK" "$OUT" > /dev/null; then : no differences else cp "$OUT" "$ERR" echo echo "$1 output changed:" diff -u "$OUTOK" "$ERR" || true fail=1 fi fi cd "$TESTDIR" rm -f "$HGTMP/$1.out" rm -rf "$HGTMP/$1" return $fail } # list of prerequisite programs # stuff from coreutils (cat, rm, etc) are not tested prereqs="python merge diff grep unzip md5sum gunzip sed" missing='' for pre in $prereqs ; do if type $pre > /dev/null 2>&1 ; then : prereq exists else missing="$pre $missing" fi done if [ "$missing" != '' ] ; then echo "ERROR: the test suite needs some programs to execute correctly." echo "The following programs are missing: " for pre in $missing; do echo " $pre" done exit 1 fi TESTS="$*" if [ -z "$TESTS" ] ; then TESTS=`ls test-* | grep -v "[.~]"` fi for f in $TESTS ; do echo -n "." run_one $f || failed=`expr $failed + 1` tests=`expr $tests + 1` done echo echo "Ran $tests tests, $failed failed." if [ $failed -gt 0 ] ; then exit 1 fi exit 0