2016-07-11 10:17:46 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
. "test/testlib.sh"
|
|
|
|
|
2016-07-11 10:50:12 +00:00
|
|
|
begin_test "custom-transfer-wrong-path"
|
2016-07-11 10:17:46 +00:00
|
|
|
(
|
|
|
|
set -e
|
|
|
|
|
|
|
|
# this repo name is the indicator to the server to support custom transfer
|
2016-07-13 13:25:33 +00:00
|
|
|
reponame="test-custom-transfer-fail"
|
2016-07-11 10:17:46 +00:00
|
|
|
setup_remote_repo "$reponame"
|
|
|
|
|
|
|
|
clone_repo "$reponame" $reponame
|
|
|
|
|
2016-07-11 10:50:12 +00:00
|
|
|
# deliberately incorrect path
|
|
|
|
git config lfs.customtransfer.testcustom.path path-to-nothing
|
2016-07-11 10:17:46 +00:00
|
|
|
|
|
|
|
git lfs track "*.dat" 2>&1 | tee track.log
|
2017-03-24 16:59:03 +00:00
|
|
|
grep "Tracking \"\*.dat\"" track.log
|
2016-07-11 10:17:46 +00:00
|
|
|
|
|
|
|
contents="jksgdfljkgsdlkjafg lsjdgf alkjgsd lkfjag sldjkgf alkjsgdflkjagsd kljfg asdjgf kalsd"
|
|
|
|
contents_oid=$(calc_oid "$contents")
|
|
|
|
|
|
|
|
printf "$contents" > a.dat
|
|
|
|
git add a.dat
|
|
|
|
git add .gitattributes
|
|
|
|
git commit -m "add a.dat" 2>&1 | tee commit.log
|
2017-03-23 17:48:58 +00:00
|
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git push origin master 2>&1 | tee pushcustom.log
|
2016-07-11 10:50:12 +00:00
|
|
|
# use PIPESTATUS otherwise we get exit code from tee
|
|
|
|
res=${PIPESTATUS[0]}
|
2016-12-15 16:59:06 +00:00
|
|
|
grep "xfer: adapter \"testcustom\" Begin()" pushcustom.log
|
2016-07-11 10:50:12 +00:00
|
|
|
grep "Failed to start custom transfer command" pushcustom.log
|
|
|
|
if [ "$res" = "0" ]; then
|
|
|
|
echo "Push should have failed because of an incorrect custom transfer path."
|
|
|
|
exit 1
|
|
|
|
fi
|
2016-07-11 10:17:46 +00:00
|
|
|
|
|
|
|
)
|
|
|
|
end_test
|
|
|
|
|
2016-07-13 13:25:33 +00:00
|
|
|
begin_test "custom-transfer-upload-download"
|
|
|
|
(
|
|
|
|
set -e
|
|
|
|
|
|
|
|
# this repo name is the indicator to the server to support custom transfer
|
|
|
|
reponame="test-custom-transfer-1"
|
|
|
|
setup_remote_repo "$reponame"
|
|
|
|
|
|
|
|
clone_repo "$reponame" $reponame
|
|
|
|
|
|
|
|
# set up custom transfer adapter
|
|
|
|
git config lfs.customtransfer.testcustom.path lfstest-customadapter
|
|
|
|
|
|
|
|
git lfs track "*.dat" 2>&1 | tee track.log
|
2017-03-24 16:59:03 +00:00
|
|
|
grep "Tracking \"\*.dat\"" track.log
|
2016-07-13 13:25:33 +00:00
|
|
|
git add .gitattributes
|
|
|
|
git commit -m "Tracking"
|
|
|
|
|
|
|
|
# set up a decent amount of data so that there's work for multiple concurrent adapters
|
|
|
|
echo "[
|
|
|
|
{
|
|
|
|
\"CommitDate\":\"$(get_date -10d)\",
|
|
|
|
\"Files\":[
|
2017-03-17 19:13:20 +00:00
|
|
|
{\"Filename\":\"verify.dat\",\"Size\":18,\"Data\":\"send-verify-action\"},
|
2016-07-13 13:25:33 +00:00
|
|
|
{\"Filename\":\"file1.dat\",\"Size\":1024},
|
|
|
|
{\"Filename\":\"file2.dat\",\"Size\":750}]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
\"CommitDate\":\"$(get_date -7d)\",
|
|
|
|
\"Files\":[
|
|
|
|
{\"Filename\":\"file1.dat\",\"Size\":1050},
|
|
|
|
{\"Filename\":\"file3.dat\",\"Size\":660},
|
|
|
|
{\"Filename\":\"file4.dat\",\"Size\":230}]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
\"CommitDate\":\"$(get_date -5d)\",
|
|
|
|
\"Files\":[
|
|
|
|
{\"Filename\":\"file5.dat\",\"Size\":1200},
|
|
|
|
{\"Filename\":\"file6.dat\",\"Size\":300}]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
\"CommitDate\":\"$(get_date -2d)\",
|
|
|
|
\"Files\":[
|
|
|
|
{\"Filename\":\"file3.dat\",\"Size\":120},
|
|
|
|
{\"Filename\":\"file5.dat\",\"Size\":450},
|
|
|
|
{\"Filename\":\"file7.dat\",\"Size\":520},
|
|
|
|
{\"Filename\":\"file8.dat\",\"Size\":2048}]
|
|
|
|
}
|
|
|
|
]" | lfstest-testutils addcommits
|
|
|
|
|
2017-03-23 17:48:58 +00:00
|
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git push origin master 2>&1 | tee pushcustom.log
|
2016-07-13 13:25:33 +00:00
|
|
|
# use PIPESTATUS otherwise we get exit code from tee
|
|
|
|
[ ${PIPESTATUS[0]} = "0" ]
|
|
|
|
|
|
|
|
grep "xfer: started custom adapter process" pushcustom.log
|
|
|
|
grep "xfer\[lfstest-customadapter\]:" pushcustom.log
|
2017-03-17 19:13:20 +00:00
|
|
|
grep "12 of 12 files" pushcustom.log
|
2016-07-13 13:25:33 +00:00
|
|
|
|
|
|
|
rm -rf .git/lfs/objects
|
2017-03-23 17:48:58 +00:00
|
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git lfs fetch --all 2>&1 | tee fetchcustom.log
|
2016-07-13 13:25:33 +00:00
|
|
|
[ ${PIPESTATUS[0]} = "0" ]
|
|
|
|
|
|
|
|
grep "xfer: started custom adapter process" fetchcustom.log
|
|
|
|
grep "xfer\[lfstest-customadapter\]:" fetchcustom.log
|
2017-03-17 19:13:20 +00:00
|
|
|
grep "12 of 12 files" fetchcustom.log
|
2016-07-13 13:25:33 +00:00
|
|
|
|
2017-01-10 10:19:57 +00:00
|
|
|
grep "Terminating test custom adapter gracefully" fetchcustom.log
|
|
|
|
|
2017-01-04 23:10:53 +00:00
|
|
|
objectlist=`find .git/lfs/objects -type f`
|
2017-03-17 19:13:20 +00:00
|
|
|
[ "$(echo "$objectlist" | wc -l)" -eq 12 ]
|
2016-07-13 13:25:33 +00:00
|
|
|
)
|
|
|
|
end_test
|
2017-07-20 14:09:14 +00:00
|
|
|
|
|
|
|
begin_test "custom-transfer-standalone"
|
|
|
|
(
|
|
|
|
set -e
|
|
|
|
|
|
|
|
# setup a git repo to be used as a local repo, not remote
|
|
|
|
reponame="test-custom-transfer-standalone"
|
|
|
|
setup_remote_repo "$reponame"
|
|
|
|
|
|
|
|
# clone directly, not through lfstest-gitserver
|
|
|
|
clone_repo_url "$REMOTEDIR/$reponame.git" $reponame
|
|
|
|
|
|
|
|
# set up custom transfer adapter to use a specific transfer agent
|
|
|
|
git config lfs.customtransfer.testcustom.path lfstest-standalonecustomadapter
|
|
|
|
git config lfs.customtransfer.testcustom.concurrent false
|
|
|
|
git config lfs.standalonetransferagent testcustom
|
|
|
|
export TEST_STANDALONE_BACKUP_PATH="$(pwd)/test-custom-transfer-standalone-backup"
|
|
|
|
mkdir -p $TEST_STANDALONE_BACKUP_PATH
|
|
|
|
rm -rf $TEST_STANDALONE_BACKUP_PATH/*
|
|
|
|
|
|
|
|
git lfs track "*.dat" 2>&1 | tee track.log
|
2017-09-17 16:41:30 +00:00
|
|
|
grep "Tracking \"\*.dat\"" track.log
|
|
|
|
git add .gitattributes
|
|
|
|
git commit -m "Tracking"
|
|
|
|
|
|
|
|
# set up a decent amount of data so that there's work for multiple concurrent adapters
|
|
|
|
echo "[
|
|
|
|
{
|
|
|
|
\"CommitDate\":\"$(get_date -10d)\",
|
|
|
|
\"Files\":[
|
|
|
|
{\"Filename\":\"verify.dat\",\"Size\":18,\"Data\":\"send-verify-action\"},
|
|
|
|
{\"Filename\":\"file1.dat\",\"Size\":1024},
|
|
|
|
{\"Filename\":\"file2.dat\",\"Size\":750}]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
\"CommitDate\":\"$(get_date -7d)\",
|
|
|
|
\"Files\":[
|
|
|
|
{\"Filename\":\"file1.dat\",\"Size\":1050},
|
|
|
|
{\"Filename\":\"file3.dat\",\"Size\":660},
|
|
|
|
{\"Filename\":\"file4.dat\",\"Size\":230}]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
\"CommitDate\":\"$(get_date -5d)\",
|
|
|
|
\"Files\":[
|
|
|
|
{\"Filename\":\"file5.dat\",\"Size\":1200},
|
|
|
|
{\"Filename\":\"file6.dat\",\"Size\":300}]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
\"CommitDate\":\"$(get_date -2d)\",
|
|
|
|
\"Files\":[
|
|
|
|
{\"Filename\":\"file3.dat\",\"Size\":120},
|
|
|
|
{\"Filename\":\"file5.dat\",\"Size\":450},
|
|
|
|
{\"Filename\":\"file7.dat\",\"Size\":520},
|
|
|
|
{\"Filename\":\"file8.dat\",\"Size\":2048}]
|
|
|
|
}
|
|
|
|
]" | lfstest-testutils addcommits
|
|
|
|
|
|
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git push origin master 2>&1 | tee pushcustom.log
|
|
|
|
# use PIPESTATUS otherwise we get exit code from tee
|
|
|
|
[ ${PIPESTATUS[0]} = "0" ]
|
|
|
|
|
|
|
|
# Make sure the lock verification is not attempted.
|
|
|
|
grep "locks/verify$" pushcustom.log && false
|
|
|
|
|
|
|
|
grep "xfer: started custom adapter process" pushcustom.log
|
|
|
|
grep "xfer\[lfstest-standalonecustomadapter\]:" pushcustom.log
|
|
|
|
grep "12 of 12 files" pushcustom.log
|
|
|
|
|
|
|
|
rm -rf .git/lfs/objects
|
|
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git lfs fetch --all 2>&1 | tee fetchcustom.log
|
|
|
|
[ ${PIPESTATUS[0]} = "0" ]
|
|
|
|
|
|
|
|
grep "xfer: started custom adapter process" fetchcustom.log
|
|
|
|
grep "xfer\[lfstest-standalonecustomadapter\]:" fetchcustom.log
|
|
|
|
grep "12 of 12 files" fetchcustom.log
|
|
|
|
|
|
|
|
grep "Terminating test custom adapter gracefully" fetchcustom.log
|
|
|
|
|
|
|
|
objectlist=`find .git/lfs/objects -type f`
|
|
|
|
[ "$(echo "$objectlist" | wc -l)" -eq 12 ]
|
|
|
|
)
|
|
|
|
end_test
|
|
|
|
|
|
|
|
begin_test "custom-transfer-standalone-urlmatch"
|
|
|
|
(
|
|
|
|
set -e
|
|
|
|
|
|
|
|
# setup a git repo to be used as a local repo, not remote
|
|
|
|
reponame="test-custom-transfer-standalone-urlmatch"
|
|
|
|
setup_remote_repo "$reponame"
|
|
|
|
|
|
|
|
# clone directly, not through lfstest-gitserver
|
|
|
|
clone_repo_url "$REMOTEDIR/$reponame.git" $reponame
|
|
|
|
|
|
|
|
# set up custom transfer adapter to use a specific transfer agent, using a URL prefix match
|
|
|
|
git config lfs.customtransfer.testcustom.path lfstest-standalonecustomadapter
|
|
|
|
git config lfs.customtransfer.testcustom.concurrent false
|
|
|
|
git config remote.origin.lfsurl https://git.example.com/example/path/to/repo
|
|
|
|
git config lfs.https://git.example.com/example/path/.standalonetransferagent testcustom
|
|
|
|
git config lfs.standalonetransferagent invalid-agent
|
|
|
|
|
|
|
|
# git config lfs.standalonetransferagent testcustom
|
|
|
|
export TEST_STANDALONE_BACKUP_PATH="$(pwd)/test-custom-transfer-standalone-urlmatch-backup"
|
|
|
|
mkdir -p $TEST_STANDALONE_BACKUP_PATH
|
|
|
|
rm -rf $TEST_STANDALONE_BACKUP_PATH/*
|
|
|
|
|
|
|
|
git lfs track "*.dat" 2>&1 | tee track.log
|
2017-07-20 14:09:14 +00:00
|
|
|
grep "Tracking \"\*.dat\"" track.log
|
|
|
|
git add .gitattributes
|
|
|
|
git commit -m "Tracking"
|
|
|
|
|
|
|
|
# set up a decent amount of data so that there's work for multiple concurrent adapters
|
|
|
|
echo "[
|
|
|
|
{
|
|
|
|
\"CommitDate\":\"$(get_date -10d)\",
|
|
|
|
\"Files\":[
|
|
|
|
{\"Filename\":\"verify.dat\",\"Size\":18,\"Data\":\"send-verify-action\"},
|
|
|
|
{\"Filename\":\"file1.dat\",\"Size\":1024},
|
|
|
|
{\"Filename\":\"file2.dat\",\"Size\":750}]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
\"CommitDate\":\"$(get_date -7d)\",
|
|
|
|
\"Files\":[
|
|
|
|
{\"Filename\":\"file1.dat\",\"Size\":1050},
|
|
|
|
{\"Filename\":\"file3.dat\",\"Size\":660},
|
|
|
|
{\"Filename\":\"file4.dat\",\"Size\":230}]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
\"CommitDate\":\"$(get_date -5d)\",
|
|
|
|
\"Files\":[
|
|
|
|
{\"Filename\":\"file5.dat\",\"Size\":1200},
|
|
|
|
{\"Filename\":\"file6.dat\",\"Size\":300}]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
\"CommitDate\":\"$(get_date -2d)\",
|
|
|
|
\"Files\":[
|
|
|
|
{\"Filename\":\"file3.dat\",\"Size\":120},
|
|
|
|
{\"Filename\":\"file5.dat\",\"Size\":450},
|
|
|
|
{\"Filename\":\"file7.dat\",\"Size\":520},
|
|
|
|
{\"Filename\":\"file8.dat\",\"Size\":2048}]
|
|
|
|
}
|
|
|
|
]" | lfstest-testutils addcommits
|
|
|
|
|
|
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git push origin master 2>&1 | tee pushcustom.log
|
|
|
|
# use PIPESTATUS otherwise we get exit code from tee
|
|
|
|
[ ${PIPESTATUS[0]} = "0" ]
|
|
|
|
|
2017-08-10 09:04:07 +00:00
|
|
|
# Make sure the lock verification is not attempted.
|
|
|
|
grep "locks/verify$" pushcustom.log && false
|
|
|
|
|
2017-07-20 14:09:14 +00:00
|
|
|
grep "xfer: started custom adapter process" pushcustom.log
|
|
|
|
grep "xfer\[lfstest-standalonecustomadapter\]:" pushcustom.log
|
|
|
|
grep "12 of 12 files" pushcustom.log
|
|
|
|
|
|
|
|
rm -rf .git/lfs/objects
|
|
|
|
GIT_TRACE=1 GIT_TRANSFER_TRACE=1 git lfs fetch --all 2>&1 | tee fetchcustom.log
|
|
|
|
[ ${PIPESTATUS[0]} = "0" ]
|
|
|
|
|
|
|
|
grep "xfer: started custom adapter process" fetchcustom.log
|
|
|
|
grep "xfer\[lfstest-standalonecustomadapter\]:" fetchcustom.log
|
|
|
|
grep "12 of 12 files" fetchcustom.log
|
|
|
|
|
|
|
|
grep "Terminating test custom adapter gracefully" fetchcustom.log
|
|
|
|
|
|
|
|
objectlist=`find .git/lfs/objects -type f`
|
|
|
|
[ "$(echo "$objectlist" | wc -l)" -eq 12 ]
|
|
|
|
)
|
|
|
|
end_test
|