summaryrefslogtreecommitdiffstats
path: root/vendor/gix-negotiate/tests/fixtures
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gix-negotiate/tests/fixtures')
-rw-r--r--vendor/gix-negotiate/tests/fixtures/generated-archives/make_repos.tar.xzbin0 -> 92828 bytes
-rw-r--r--vendor/gix-negotiate/tests/fixtures/make_repos.sh146
2 files changed, 146 insertions, 0 deletions
diff --git a/vendor/gix-negotiate/tests/fixtures/generated-archives/make_repos.tar.xz b/vendor/gix-negotiate/tests/fixtures/generated-archives/make_repos.tar.xz
new file mode 100644
index 000000000..93e836931
--- /dev/null
+++ b/vendor/gix-negotiate/tests/fixtures/generated-archives/make_repos.tar.xz
Binary files differ
diff --git a/vendor/gix-negotiate/tests/fixtures/make_repos.sh b/vendor/gix-negotiate/tests/fixtures/make_repos.sh
new file mode 100644
index 000000000..b1b96527d
--- /dev/null
+++ b/vendor/gix-negotiate/tests/fixtures/make_repos.sh
@@ -0,0 +1,146 @@
+#!/bin/bash
+set -eu -o pipefail
+
+function tick () {
+ if test -z "${tick+set}"
+ then
+ tick=1112911993
+ else
+ tick=$(($tick + 60))
+ fi
+ GIT_COMMITTER_DATE="$tick -0700"
+ GIT_AUTHOR_DATE="$tick -0700"
+ export GIT_COMMITTER_DATE GIT_AUTHOR_DATE
+}
+
+tick
+function commit() {
+ local message=${1:?first argument is the commit message}
+ local file="$message.t"
+ echo "$1" > "$file"
+ git add -- "$file"
+ tick
+ git commit -m "$message"
+ git tag "$message"
+}
+
+function negotiation_tips () {
+ local tips=""
+ for arg in "$@"; do
+ tips+=" --negotiation-tip=$arg"
+ done
+ echo "$tips"
+}
+
+function trace_fetch_baseline () {
+ local remote="${1:?need remote url}"; shift
+ git -C client commit-graph write --no-progress --reachable
+ git -C client repack -adq
+
+ for algo in noop consecutive skipping; do
+ GIT_TRACE_PACKET="$PWD/baseline.$algo" \
+ git -C client -c fetch.negotiationAlgorithm="$algo" fetch --negotiate-only $(negotiation_tips "$@") \
+ --upload-pack 'unset GIT_TRACE_PACKET; git-upload-pack' \
+ "$remote" || :
+ done
+}
+
+
+(mkdir no_parents && cd no_parents
+ git init -q server && cd server
+ commit to_fetch
+ cd ..
+
+ (git init -q client && cd client
+ for i in $(seq 7); do
+ commit c$i
+ done
+ )
+
+ trace_fetch_baseline file://$PWD/server main
+)
+
+(mkdir two_colliding_skips && cd two_colliding_skips
+ git init -q server && cd server
+ commit to_fetch
+ cd ..
+
+ (git init -q client && cd client
+ for i in $(seq 11); do
+ commit c$i
+ done
+ git checkout c5
+ commit c5side
+ )
+
+ trace_fetch_baseline file://$PWD/server HEAD main
+)
+
+(mkdir advertisement_as_filter && cd advertisement_as_filter
+ git init -q server && cd server
+ commit c1
+ commit c2
+ commit c3
+ git tag -d c1 c2 c3
+ cd ..
+ git clone server client && cd client
+ commit c4
+ commit c5
+ git checkout c4^^
+ commit c2side
+ cd ..
+ (cd server
+ git checkout --orphan anotherbranch
+ commit to_fetch
+ )
+
+ trace_fetch_baseline origin HEAD main
+)
+
+
+(mkdir multi_round && cd multi_round
+ git init -q server && cd server
+ commit to_fetch
+ cd ..
+
+ git init -q client && cd client
+ for i in $(seq 8); do
+ git checkout --orphan b$i &&
+ commit b$i.c0
+ done
+
+ for j in $(seq 19); do
+ for i in $(seq 8); do
+ git checkout b$i &&
+ commit b$i.c$j
+ done
+ done
+ cd ..
+ (cd server
+ git fetch --no-tags "$PWD/../client" b1:refs/heads/b1
+ git checkout b1
+ commit commit-on-b1
+ )
+ trace_fetch_baseline file://$PWD/server $(ls client/.git/refs/heads | sort)
+)
+
+(mkdir clock_skew && cd clock_skew
+ git init -q server && cd server
+ commit to_fetch
+ cd ..
+
+ (git init -q client && cd client
+ tick=2000000000
+ commit c1
+ commit c2
+
+ tick=1000000000
+ git checkout c1
+ commit old1
+ commit old2
+ commit old3
+ commit old4
+ )
+
+ trace_fetch_baseline file://$PWD/server HEAD main
+)