Test suite for sliding window mmap implementation.
This is a basic set of tests for the sliding window mmap. We mostly focus on the verify-pack and pack-objects implementations (including delta reuse) as these commands appear to cover the bulk of the affected portions of sha1_file.c. The test cases don't verify the virtual memory size used, as this can differ from system to system. Instead it just verifies that we can run with very low values for core.packedGitLimit and core.packedGitWindowSize. Adding pack_report() to the end of both builtin-verify-pack.c and builtin-pack-objects.c and manually inspecting the statistics output can help to verify that the total virtual memory size attributed to pack mmap usage is what one might expect on the current system. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
a53128b601
commit
2dee8af676
60
t/t5301-sliding-window.sh
Executable file
60
t/t5301-sliding-window.sh
Executable file
@ -0,0 +1,60 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2006 Shawn Pearce
|
||||
#
|
||||
|
||||
test_description='mmap sliding window tests'
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success \
|
||||
'setup' \
|
||||
'rm -f .git/index*
|
||||
for i in a b c
|
||||
do
|
||||
echo $i >$i &&
|
||||
dd if=/dev/urandom bs=32k count=1 >>$i &&
|
||||
git-update-index --add $i || return 1
|
||||
done &&
|
||||
echo d >d && cat c >>d && git-update-index --add d &&
|
||||
tree=`git-write-tree` &&
|
||||
commit1=`git-commit-tree $tree </dev/null` &&
|
||||
git-update-ref HEAD $commit1 &&
|
||||
git-repack -a -d &&
|
||||
test "`git-count-objects`" = "0 objects, 0 kilobytes" &&
|
||||
pack1=`ls .git/objects/pack/*.pack` &&
|
||||
test -f "$pack1"'
|
||||
|
||||
test_expect_success \
|
||||
'verify-pack -v, defaults' \
|
||||
'git-verify-pack -v "$pack1"'
|
||||
|
||||
test_expect_success \
|
||||
'verify-pack -v, packedGitWindowSize == 1 page' \
|
||||
'git-repo-config core.packedGitWindowSize 512 &&
|
||||
git-verify-pack -v "$pack1"'
|
||||
|
||||
test_expect_success \
|
||||
'verify-pack -v, packedGit{WindowSize,Limit} == 1 page' \
|
||||
'git-repo-config core.packedGitWindowSize 512 &&
|
||||
git-repo-config core.packedGitLimit 512 &&
|
||||
git-verify-pack -v "$pack1"'
|
||||
|
||||
test_expect_success \
|
||||
'repack -a -d, packedGit{WindowSize,Limit} == 1 page' \
|
||||
'git-repo-config core.packedGitWindowSize 512 &&
|
||||
git-repo-config core.packedGitLimit 512 &&
|
||||
commit2=`git-commit-tree $tree -p $commit1 </dev/null` &&
|
||||
git-update-ref HEAD $commit2 &&
|
||||
git-repack -a -d &&
|
||||
test "`git-count-objects`" = "0 objects, 0 kilobytes" &&
|
||||
pack2=`ls .git/objects/pack/*.pack` &&
|
||||
test -f "$pack2"
|
||||
test "$pack1" \!= "$pack2"'
|
||||
|
||||
test_expect_success \
|
||||
'verify-pack -v, defaults' \
|
||||
'git-repo-config --unset core.packedGitWindowSize &&
|
||||
git-repo-config --unset core.packedGitLimit &&
|
||||
git-verify-pack -v "$pack2"'
|
||||
|
||||
test_done
|
Loading…
Reference in New Issue
Block a user