Skip to content

Commit 9f33226

Browse files
derrickstoleedscho
authored andcommitted
gvfs-helper: override cache server for post
This extension of the gvfs.cache-server config now allows a new key, gvfs.post.cache-server, to overrid the cache-server URL for only the batched objects endpoint. The purpose of this config is to allow for incremental testing and deployment of new cache-server infrastructure. Signed-off-by: Derrick Stolee <stolee@gmail.com>
1 parent c29bc85 commit 9f33226

3 files changed

Lines changed: 59 additions & 0 deletions

File tree

‎Documentation/config/gvfs.adoc‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ gvfs.<verb>.cache-server::
1313
get::
1414
Use this cache server when downloading objects immediately via the
1515
GET endpoint.
16+
post::
17+
Use this cache server when downloading objects in batches using the
18+
POST endpoint.
1619
--
1720

1821
gvfs.sharedcache::

‎gvfs-helper.c‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,7 @@ enum gh__server_type {
396396
enum gh__verb {
397397
PREFETCH,
398398
GET,
399+
POST,
399400
};
400401

401402
static void update_cache_server_for_verb(enum gh__verb verb)
@@ -413,6 +414,10 @@ static void update_cache_server_for_verb(enum gh__verb verb)
413414
verbstr = "get";
414415
break;
415416

417+
case POST:
418+
verbstr = "post";
419+
break;
420+
416421
default:
417422
gh__global.cache_server_url_backup = NULL;
418423
return;
@@ -3439,7 +3444,9 @@ static void do__http_post__gvfs_objects(struct gh__response_status *status,
34393444

34403445
setup_gvfs_objects_progress(&params, j_pack_num, j_pack_den);
34413446

3447+
update_cache_server_for_verb(POST);
34423448
do_req__with_fallback("gvfs/objects", &params, status);
3449+
reset_cache_server();
34433450

34443451
gh__request_params__release(&params);
34453452
jw_release(&jw_req);

‎t/t5799-gvfs-helper.sh‎

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1773,4 +1773,53 @@ test_expect_success 'verb-specific cache-server: prefetch does NOT use gvfs.get.
17731773
verify_server_was_not_contacted 1
17741774
'
17751775

1776+
test_expect_success 'verb-specific cache-server: post uses gvfs.post.cache-server' '
1777+
test_when_finished "per_test_cleanup" &&
1778+
test_when_finished "git -C \"$REPO_T1\" config --unset gvfs.post.cache-server" &&
1779+
start_gvfs_protocol_server 0 &&
1780+
start_gvfs_protocol_server 1 &&
1781+
1782+
# Configure server 0 as default cache-server and server 1 for post.
1783+
git -C "$REPO_T1" config gvfs.cache-server "$(cache_server_url 0)" &&
1784+
git -C "$REPO_T1" config gvfs.post.cache-server "$(cache_server_url 1)" &&
1785+
1786+
# Run post - should go to server 1.
1787+
git -C "$REPO_T1" gvfs-helper \
1788+
--cache-server=trust \
1789+
--remote=origin \
1790+
--no-progress \
1791+
post \
1792+
<"$OIDS_BLOBS_FILE" >OUT.output 2>OUT.stderr &&
1793+
1794+
# Verify server 1 was contacted (post-specific).
1795+
verify_server_was_contacted 1 &&
1796+
1797+
# Verify server 0 was NOT contacted.
1798+
verify_server_was_not_contacted 0
1799+
'
1800+
1801+
test_expect_success 'verb-specific cache-server: get does NOT use gvfs.post.cache-server' '
1802+
test_when_finished "per_test_cleanup" &&
1803+
test_when_finished "git -C \"$REPO_T1\" config --unset gvfs.post.cache-server" &&
1804+
start_gvfs_protocol_server 0 &&
1805+
start_gvfs_protocol_server 1 &&
1806+
1807+
# Configure server 0 as default cache-server and server 1 for post.
1808+
git -C "$REPO_T1" config gvfs.cache-server "$(cache_server_url 0)" &&
1809+
git -C "$REPO_T1" config gvfs.post.cache-server "$(cache_server_url 1)" &&
1810+
1811+
# Run get - should go to server 0 (default), not server 1 (post).
1812+
git -C "$REPO_T1" gvfs-helper \
1813+
--cache-server=trust \
1814+
--remote=origin \
1815+
get \
1816+
<"$OID_ONE_BLOB_FILE" >OUT.output 2>OUT.stderr &&
1817+
1818+
# Verify server 0 was contacted (default cache-server).
1819+
verify_server_was_contacted 0 &&
1820+
1821+
# Verify server 1 was NOT contacted (post-specific).
1822+
verify_server_was_not_contacted 1
1823+
'
1824+
17761825
test_done

0 commit comments

Comments
 (0)