From 8bb420be254af373f5f6e18abde9661280232e81 Mon Sep 17 00:00:00 2001 From: eleonore12345 Date: Thu, 4 Jul 2024 18:29:55 +0200 Subject: [PATCH] =?UTF-8?q?version=20buggee=20mais=20bient=C3=B4t=20finie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- creation_repo.sh | 14 ++++--- notes.odt | Bin 49441 -> 49569 bytes performance_tests.sh | 92 +++++++++++++++++++++++++++++++++++++++---- 3 files changed, 92 insertions(+), 14 deletions(-) diff --git a/creation_repo.sh b/creation_repo.sh index fd0554f..cb7e4ac 100755 --- a/creation_repo.sh +++ b/creation_repo.sh @@ -24,9 +24,11 @@ if [[ "${BASH_SOURCE[0]}" = "${0}" ]]; then exit;; esac done - return 0 fi +create_random_file(){ + run dd if=/dev/urandom of=$1 bs=$2 count=1 &> /dev/null +} REPO_NAME=performance_testing REPO_PATH=./remote @@ -40,23 +42,23 @@ if [ ! -d $REPO_NAME ]; then cd $REPO_NAME git init git branch -m main - dd if=/dev/urandom of=sample0 bs=1M count=1 + create_random_file 'sample0' '1M' git add . git commit -m"first 1M sample created" git tag start - dd if=/dev/urandom of=sample1 bs=1M count=1 + create_random_file 'sample1' '1M' git add sample1 git commit -m"second 1M sample created" git branch secondary git checkout secondary - dd if=/dev/urandom of=sample2 bs=500K count=1 + create_random_file 'sample2' '500K' git add sample2 git commit -m"first 500K sample created in branch secondary" git checkout main - dd if=/dev/urandom of=sample3 bs=1M count=1 + create_random_file 'sample3' '1M' git add sample3 git commit -m"third 1M sample created" - dd if=/dev/urandom of=sample4 bs=5M count=1 + create_random_file 'sample4' '5M' git add sample4 git commit -m"first 5M sample created" rm sample4 diff --git a/notes.odt b/notes.odt index cf63801c651dbf1cac6f126af038eed86df498f1..92b0b6e658870552621f67be517eb09700283bd1 100644 GIT binary patch delta 21152 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 delta 21070 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 diff --git a/performance_tests.sh b/performance_tests.sh index cd9ad79..49215c4 100755 --- a/performance_tests.sh +++ b/performance_tests.sh @@ -117,6 +117,7 @@ test4(){ test5(){ section TEST5 run echo 'TEST 5 : case of classic fetching and merging, after addition of a 1M file' + #initialization run git clone $1 &> /dev/null cd $REPO_NAME run git fetch --progress origin &> /dev/null @@ -129,6 +130,7 @@ test5(){ run git add sample5 run git commit --quiet -m"fourth 1M sample created" cd ../../$REPO_NAME + #fetching run git fetch --progress origin &> /dev/null run git merge --progress &> fetching_text get_storage_used . @@ -144,8 +146,9 @@ test5(){ } test6(){ - section TEST6 + section TEST6 run echo 'TEST 6 : case of classic fetching and merging, after removal of a 1M file' + #initialization run git clone $1 &> /dev/null cd $REPO_NAME run git fetch --progress origin &> /dev/null @@ -158,6 +161,7 @@ test6(){ run git add sample0 run git commit --quiet -m"1M sample0 deleted" cd ../../$REPO_NAME + #fetching run git fetch --progress origin &> /dev/null run git merge --progress &> fetching_text get_storage_used . @@ -175,6 +179,7 @@ test6(){ test7(){ section TEST7 run echo 'TEST 7 : case of classic fetching and merging, after addition then removal of a 1M file' + #initialization run git clone $1 &> /dev/null cd $REPO_NAME run git fetch --progress origin &> /dev/null @@ -190,6 +195,7 @@ test7(){ run git add sample5 run git commit --quiet -m"1M "sample5" deleted" cd ../../$REPO_NAME + #fetching run git fetch --progress origin &> /dev/null run git merge --progress &> /dev/null get_storage_used . @@ -205,11 +211,12 @@ test7(){ test8(){ section TEST8 - run echo 'TEST 8 : case of classic fetching and merging, after addition of a 1M file' - run git clone $1 &> /dev/null + run echo 'TEST 8 : case of fetching --depth=1 and merging, after addition of a 1M file' + #initialization + run git clone $1 #&> /dev/null cd $REPO_NAME - run git fetch --progress --depth=1 origin &> /dev/null - run git merge --progress origin &> /dev/null + run git fetch --progress origin &> fetching1 #&> /dev/null is this useless? + run git merge --progress origin &> merging1 #&> /dev/null get_storage_used . mem_before=$mem #modification of the remote repo @@ -218,8 +225,8 @@ test8(){ run git add sample5 run git commit --quiet -m"fourth 1M sample created" cd ../../$REPO_NAME - run git fetch --progress origin &> /dev/null - run git merge --progress &> fetching_text + run git fetch --progress --depth=1 origin &> fetching2 # /dev/null + run git merge --progress --allow-unrelated-histories &> merging2 get_storage_used . mem_after=$mem mem=$(($mem_after-$mem_before)) @@ -227,12 +234,75 @@ test8(){ echo "memory usage: +$mem" echo "bandwidth usage: $bw" cd ../$REMOTE + git reset --hard -q a99be63309fc4f4600210000583546d966d12d4f #does not work cause commits change numbers + cd ../.. + #rm -rf performance_testing +} + +test9(){ + section TEST9 + run echo 'TEST 9 : case of --depth=1 fetching and merging, after removal of a 1M file' + #initialization + run git clone $1 &> /dev/null + cd $REPO_NAME + run git fetch --progress origin &> /dev/null + run git merge --progress origin &> /dev/null + get_storage_used . + mem_before=$mem + #modification of the remote repo + cd ../$REMOTE + run rm sample0 + run git add sample0 + run git commit --quiet -m"1M sample0 deleted" + cd ../../$REPO_NAME + #fetching + run git fetch --progress --depth=1 origin &> /dev/null + run git merge --progress &> fetching_text + get_storage_used . + mem_after=$mem + mem=$(($mem_after-$mem_before)) + get_bandwidth fetching_text + echo "memory usage: $mem" + echo "bandwidth usage: $bw" + cd ../$REMOTE git reset --hard -q a99be63309fc4f4600210000583546d966d12d4f cd ../.. rm -rf performance_testing } - +test10(){ + section TEST10 + run echo 'TEST 10 : case of --depth=1 fetching and merging, after addition then removal of a 1M file' + run git clone $1 &> /dev/null + cd $REPO_NAME + run git fetch --progress origin &> /dev/null + run git merge --progress origin &> /dev/null + get_storage_used . + mem_before=$mem + echo "mem before is $mem_before" + #modification of the remote repo + cd ../$REMOTE + create_random_file 'sample5' '1M' #adding a 1M file + run git add sample5 + run git commit --quiet -m"fourth 1M sample created" + run rm sample5 + run git add sample5 + run git commit --quiet -m"1M "sample5" deleted" + cd ../../$REPO_NAME + #fetching + run git fetch --progress --depth=1 origin &> /fetching_text #dev/null + run git merge --progress &> merging_text #/dev/null + get_storage_used . + mem_after=$mem + echo "mem after is $mem_before" + mem=$(($mem_after-$mem_before)) + echo "memory usage: $mem" + echo "bandwidth usage unknown" + cd ../$REMOTE + git reset --hard -q a99be63309fc4f4600210000583546d966d12d4f + cd ../.. + rm -rf performance_testing +} while getopts ":hn:a" option; do case $option in @@ -259,6 +329,8 @@ if [ "$ALL_TESTS" = true ]; then test6 $REMOTE test7 $REMOTE test8 $REMOTE + test9 $REMOTE + test10 $REMOTE elif [ -n "$TEST_NUM" ]; then case $TEST_NUM in @@ -280,6 +352,10 @@ elif [ -n "$TEST_NUM" ]; then test7 $REMOTE;; 8) test8 $REMOTE;; + 9) + test9 $REMOTE;; + 10) + test10 $REMOTE;; *) echo "Error: Invalid test number" die;;