Skip to content

Commit 84b52a0

Browse files
jeffhostetlerdscho
authored andcommitted
t5799: add unit tests for new gvfs.fallback config setting
Signed-off-by: Jeff Hostetler <[email protected]>
1 parent e1c0ed0 commit 84b52a0

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

t/t5799-gvfs-helper.sh

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,12 @@ test_set_port GIT_TEST_GVFS_PROTOCOL_PORT
2424
# actually use it). We are only testing explicit object
2525
# fetching using gvfs-helper.exe in isolation.
2626
#
27+
# repo_t2:
28+
# Another empty repo to use after we contaminate t1.
29+
#
2730
REPO_SRC="$(pwd)"/repo_src
2831
REPO_T1="$(pwd)"/repo_t1
32+
REPO_T2="$(pwd)"/repo_t2
2933

3034
# Setup some loopback URLs where test-gvfs-protocol.exe will be
3135
# listening. We will spawn it directly inside the repo_src directory,
@@ -45,6 +49,7 @@ ORIGIN_URL=http://$HOST_PORT/servertype/origin
4549
CACHE_URL=http://$HOST_PORT/servertype/cache
4650

4751
SHARED_CACHE_T1="$(pwd)"/shared_cache_t1
52+
SHARED_CACHE_T2="$(pwd)"/shared_cache_t2
4853

4954
# The pid-file is created by test-gvfs-protocol.exe when it starts.
5055
# The server will shut down if/when we delete it. (This is a little
@@ -182,6 +187,10 @@ test_expect_success 'setup repos' '
182187
mkdir "$SHARED_CACHE_T1/pack" &&
183188
mkdir "$SHARED_CACHE_T1/info" &&
184189
#
190+
mkdir "$SHARED_CACHE_T2" &&
191+
mkdir "$SHARED_CACHE_T2/pack" &&
192+
mkdir "$SHARED_CACHE_T2/info" &&
193+
#
185194
# setup repo_t1 and point all of the gvfs.* values to repo_src.
186195
#
187196
test_create_repo "$REPO_T1" &&
@@ -191,6 +200,13 @@ test_expect_success 'setup repos' '
191200
git -C "$REPO_T1" config --local gvfs.sharedCache "$SHARED_CACHE_T1" &&
192201
echo "$SHARED_CACHE_T1" >> "$REPO_T1"/.git/objects/info/alternates &&
193202
#
203+
test_create_repo "$REPO_T2" &&
204+
git -C "$REPO_T2" branch -M main &&
205+
git -C "$REPO_T2" remote add origin $ORIGIN_URL &&
206+
git -C "$REPO_T2" config --local gvfs.cache-server $CACHE_URL &&
207+
git -C "$REPO_T2" config --local gvfs.sharedCache "$SHARED_CACHE_T2" &&
208+
echo "$SHARED_CACHE_T2" >> "$REPO_T2"/.git/objects/info/alternates &&
209+
#
194210
#
195211
#
196212
cat <<-EOF >creds.txt &&
@@ -203,6 +219,7 @@ test_expect_success 'setup repos' '
203219
EOF
204220
chmod 755 creds.sh &&
205221
git -C "$REPO_T1" config --local credential.helper "!f() { cat \"$(pwd)\"/creds.txt; }; f" &&
222+
git -C "$REPO_T2" config --local credential.helper "!f() { cat \"$(pwd)\"/creds.txt; }; f" &&
206223
#
207224
# Create some test data sets.
208225
#
@@ -1267,6 +1284,87 @@ test_expect_success 'integration: fully implicit: diff 2 commits' '
12671284
>OUT.output 2>OUT.stderr
12681285
'
12691286

1287+
# T1 should be considered contaminated at this point.
1288+
1289+
#################################################################
1290+
# gvfs-helper.exe defaults to no fallback.
1291+
# gvfs-helper-client.c defaults to adding `--fallback` to child process.
1292+
#
1293+
# `gvfs.fallback` was added to change the default behavior in the
1294+
# gvfs-helper-client.c code to add either `--fallback` or `--no-fallback`
1295+
# (for origin server load reasons).
1296+
#
1297+
# When `gvfs.fallback` is unset, we default to TRUE and pass `--fallback`.
1298+
# Otherwise, we use the boolean value to decide.
1299+
#
1300+
# NOTE: We DO NOT attempt to count connection requests in the
1301+
# following tests. Since we are using a normal `git` command to drive
1302+
# the `gvfs-helper-client.c` code (and spawn `git-gvfs-helper.exe`) we
1303+
# cannot make assumptions on the number of child processes or
1304+
# reqeusts. The "promisor" logic may drive one or more single-item
1305+
# GETs or a series of bulk POST attempts. Therefore, we must rely
1306+
# only on the result of the command and (implicitly) whether all
1307+
# missing objects were resolved. We use mayhem features to selectively
1308+
# break the cache and origin servers.
1309+
#################################################################
1310+
1311+
test_expect_success 'integration: implicit-get: http_503: diff 2 commits' '
1312+
test_when_finished "per_test_cleanup" &&
1313+
1314+
# Tell both servers to always send 503.
1315+
start_gvfs_protocol_server_with_mayhem http_503 &&
1316+
1317+
# Implicitly demand-load everything without any pre-seeding.
1318+
# (We cannot tell from whether fallback was used or not in this
1319+
# limited test.)
1320+
#
1321+
test_must_fail \
1322+
git -C "$REPO_T2" -c core.useGVFSHelper=true \
1323+
diff $(cat m1.branch)..$(cat m3.branch) \
1324+
>OUT.output 2>OUT.stderr &&
1325+
1326+
stop_gvfs_protocol_server
1327+
'
1328+
1329+
test_expect_success 'integration: implicit-get: cache_http_503,no-fallback: diff 2 commits' '
1330+
test_when_finished "per_test_cleanup" &&
1331+
1332+
# Tell cache server to send 503 and origin server to send 200.
1333+
start_gvfs_protocol_server_with_mayhem cache_http_503 &&
1334+
1335+
# Implicitly demand-load everything without any pre-seeding.
1336+
# This should fail because we do not allow fallback.
1337+
#
1338+
test_must_fail \
1339+
git -C "$REPO_T2" \
1340+
-c core.useGVFSHelper=true \
1341+
-c gvfs.fallback=false \
1342+
diff $(cat m1.branch)..$(cat m3.branch) \
1343+
>OUT.output 2>OUT.stderr &&
1344+
1345+
stop_gvfs_protocol_server
1346+
'
1347+
1348+
test_expect_success 'integration: implicit-get: cache_http_503,with-fallback: diff 2 commits' '
1349+
test_when_finished "per_test_cleanup" &&
1350+
1351+
# Tell cache server to send 503 and origin server to send 200.
1352+
start_gvfs_protocol_server_with_mayhem cache_http_503 &&
1353+
1354+
# Implicitly demand-load everything without any pre-seeding.
1355+
#
1356+
git -C "$REPO_T2" \
1357+
-c core.useGVFSHelper=true \
1358+
-c gvfs.fallback=true \
1359+
diff $(cat m1.branch)..$(cat m3.branch) \
1360+
>OUT.output 2>OUT.stderr &&
1361+
1362+
stop_gvfs_protocol_server
1363+
'
1364+
1365+
# T2 should be considered contaminated at this point.
1366+
1367+
12701368
#################################################################
12711369
# Duplicate packfile tests.
12721370
#

0 commit comments

Comments
 (0)