From 7b0ffbf6a167f05de9c6390d989303b301ba4d56 Mon Sep 17 00:00:00 2001 From: eleonore12345 Date: Wed, 3 Jul 2024 14:51:49 +0200 Subject: [PATCH] remote local --- creation_repo.sh | 83 +++++++++++++++++++--------------------- performance_tests.sh | 91 +++++++++++++++++++++----------------------- 2 files changed, 82 insertions(+), 92 deletions(-) diff --git a/creation_repo.sh b/creation_repo.sh index b736e50..fd0554f 100755 --- a/creation_repo.sh +++ b/creation_repo.sh @@ -1,5 +1,4 @@ #!/bin/bash -#prend en entrée un lien ssh vers un répertoire remote git vide prêt à être rempli Help() { @@ -14,8 +13,8 @@ DESCRIPTION OPTIONS -h prints the help. " } - -while getopts ":h" option; do +if [[ "${BASH_SOURCE[0]}" = "${0}" ]]; then + while getopts ":h" option; do case $option in h) # display Help Help @@ -25,47 +24,43 @@ while getopts ":h" option; do exit;; esac done - - -if [ -d performance_testing ]; then - rm -rf performance_testing + return 0 fi -mkdir performance_testing -cd performance_testing -git init -git branch -m main -git remote add origin $1 -git fetch origin -git merge -dd if=/dev/urandom of=sample0 bs=1M count=1 -git add . -git commit -m"first 1M sample created" -git push -u origin main -git tag start -git push origin start -dd if=/dev/urandom of=sample1 bs=1M count=1 -git add sample1 -git commit -m"second 1M sample created" -git push -git branch secondary -git checkout secondary -dd if=/dev/urandom of=sample2 bs=500K count=1 -git add sample2 -git commit -m"first 500K sample created in branch secondary" -git push -u origin secondary -git checkout main -dd if=/dev/urandom of=sample3 bs=1M count=1 -git add sample3 -git commit -m"third 1M sample created" -git push -dd if=/dev/urandom of=sample4 bs=5M count=1 -git add sample4 -git commit -m"first 5M sample created" -git push -rm sample4 -git add sample4 -git commit -m"sample4 deleted" -git push -#optional: tests to check if it has initialized correctly \ No newline at end of file +REPO_NAME=performance_testing +REPO_PATH=./remote + +if [ ! -d $REPO_PATH ]; then + mkdir $REPO_PATH +fi +cd $REPO_PATH +if [ ! -d $REPO_NAME ]; then + mkdir $REPO_NAME + cd $REPO_NAME + git init + git branch -m main + dd if=/dev/urandom of=sample0 bs=1M count=1 + git add . + git commit -m"first 1M sample created" + git tag start + dd if=/dev/urandom of=sample1 bs=1M count=1 + 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 + 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 + git add sample3 + git commit -m"third 1M sample created" + dd if=/dev/urandom of=sample4 bs=5M count=1 + git add sample4 + git commit -m"first 5M sample created" + rm sample4 + git add sample4 + git commit -m"sample4 deleted" +fi +cd .. diff --git a/performance_tests.sh b/performance_tests.sh index 8e5d4b9..9663a00 100755 --- a/performance_tests.sh +++ b/performance_tests.sh @@ -1,9 +1,10 @@ #!/bin/bash . driglibash-base +. creation_repo.sh &> /dev/null #prerequisite: creation_repo.sh has been run FILES_TO_KEEP='sample0' -REPO_NAME='performance_testing' +REMOTE="./remote/performance_testing" Help() { echo " @@ -24,71 +25,66 @@ DESCRIPTION test0(){ section TEST0 echo "TEST 0 : case of classic cloning." - git clone --progress $1 2> cloning_text + git clone --progress --no-local $1 2> cloning_text mem0=$(du ./$REPO_NAME | tail -n1 | tr -cd [:digit:]) bw0=$(grep -e "Receiving objects:" cloning_text| grep -o "[[:digit:].]* MiB " | tail -n1) echo "memory usage in a classic cloning : $mem0" echo "bandwidth usage : $bw0" + run rm cloning_text run rm -rf $REPO_NAME - } test1(){ section TEST1 echo "TEST 1 : case of --single-branch cloning." - git clone --progress --single-branch $1 2> cloning_text + git clone --progress --single-branch --no-local $1 2> cloning_text mem1=$(du ./$REPO_NAME| tail -n1 | tr -cd [:digit:]) bw1=$(grep -e "Receiving objects:" cloning_text| grep -o "[[:digit:].]* MiB " | tail -n1) echo "memory usage in a --single-branch cloning : $mem1" echo "bandwidth usage : $bw1" - run - rm -rf $REPO_NAME - + run rm cloning_text + run rm -rf $REPO_NAME } test2(){ section TEST2 echo "TEST 2 : case of --depth=1 --no-single-branch" - git clone --progress --depth=1 --no-single-branch $1 2> cloning_text + git clone --progress --depth=1 --no-local --no-single-branch $1 2> cloning_text mem2=$(du ./$REPO_NAME| tail -n1 | tr -cd [:digit:]) bw2=$(grep -e "Receiving objects:" cloning_text| grep -o "[[:digit:].]* MiB " | tail -n1) echo "memory usage in a --depth=1 --no-single-branch cloning : $mem2" echo "bandwidth usage : $bw2" - run - rm -rf $REPO_NAME - + run rm cloning_text + run rm -rf $REPO_NAME } test3(){ section TEST3 echo "TEST 3 : case of --depth=1 with single-branch (default))" - git clone --progress --single-branch --depth=1 $1 2> cloning_text + git clone --progress --single-branch --no-local --depth=1 $1 2> cloning_text mem3=$(du ./$REPO_NAME| tail -n1 | tr -cd [:digit:]) bw3=$(grep -e "Receiving objects:" cloning_text| grep -o "[[:digit:].]* MiB " | tail -n1) echo "memory usage in a --depth=1 with single-branch cloning : $mem3" echo "bandwidth usage : $bw3" - rm -rf $REPO_NAME - + run rm cloning_text + run rm -rf $REPO_NAME } test4(){ section TEST4 run mkdir $REPO_NAME - run echo 'TEST 4 : case of sparse-checking only some files with depth=1' run cd $REPO_NAME - run git init -q run git config core.sparsecheckout true run echo $FILES_TO_KEEP >> .git/info/sparse-checkout - run git remote add -f origin $1 &> /dev/null - run git pull origin main &> /dev/null + run git remote add -f origin file://$1 #&> /dev/null + run git pull origin main #&> /dev/null mem4=$(du . | tail -n1 | tr -cd [:digit:]) echo "memory usage with sparse checking only $FILES_TO_KEEP : $mem4" echo "The bandwidth usage is not available through the Git commands." - cd .. + run rm cloning_text run rm -rf $REPO_NAME - } #TESTS ON THE UPDATING OF THE REPOSITORY @@ -98,12 +94,21 @@ test5(){ run echo 'TEST 5 : case of classic fetching and merging' run git clone $1 &> /dev/null cd $REPO_NAME - mem5temp=$(du . | tail -n1 | tr -cd [:digit:]) run git fetch -v origin &> fetching_text run git merge -v &> merging_text - mem5=$(du . | tail -n1 | tr -cd [:digit:]) + mem5before=$(du . | tail -n1 | tr -cd [:digit:]) + #modification of the remote repo + cd $REMOTE + run dd if=/dev/urandom of=sample5 bs=1M count=1 #adding a 1M file + run git add sample5 + run git commit -m"fourth 1M sample created" + cd - + run git fetch -v origin &> fetching_text + run git merge -v &> merging_text + mem5after=$(du . | tail -n1 | tr -cd [:digit:]) + mem5=$(($mem5after-$mem5before)) echo "memory usage in a classic fetching and merging : $mem5" - echo "bandwidth usage : $bw5" + #echo "bandwidth usage : $bw5" } #test 6 : shallow exclude @@ -113,47 +118,38 @@ while getopts ":hn:a" option; do h) # display Help Help exit;; - \?) # Invalid option - echo "Error: Invalid option" - exit;; n) TEST_NUM=$OPTARG;; a) ALL_TESTS=true;; + \?) # Invalid option + echo "Error: Invalid option here" + exit;; esac done -shift "$(($OPTIND -1))" #so that the cloning link is in $1 no matter how many options were used -if [ -z "$1" ]; then - echo "Error: No repository link provided" - Help - die -else - REPO_LINK=$1 -fi - if [ "$ALL_TESTS" = true ]; then - test0 $REPO_LINK - test1 $REPO_LINK - test2 $REPO_LINK - test3 $REPO_LINK - test4 $REPO_LINK - test5 $REPO_LINK + test0 $REMOTE + test1 $REMOTE + test2 $REMOTE + test3 $REMOTE + test4 $REMOTE + test5 $REMOTE elif [ -n "$TEST_NUM" ]; then case $TEST_NUM in 0) - test0 $REPO_LINK;; + test0 $REMOTE;; 1) - test1 $REPO_LINK;; + test1 $REMOTE;; 2) - test2 $REPO_LINK;; + test2 $REMOTE;; 3) - test3 $REPO_LINK;; + test3 $REMOTE;; 4) - test4 $REPO_LINK;; + test4 $REMOTE;; 5) - test5 $REPO_LINK;; + test5 $REMOTE;; *) echo "Error: Invalid test number" die;; @@ -162,5 +158,4 @@ else Help fi -#to do : use a local remote #optimize in case all tests are run