From 13c308a4f3cd558e03628b5ee07629a8ba8fd908 Mon Sep 17 00:00:00 2001 From: eleonore12345 Date: Fri, 28 Jun 2024 18:29:11 +0200 Subject: [PATCH] tests de base --- creation_repo.sh | 30 +++++++- git_update.sh | 158 ++++++++++++++++--------------------------- notes.odt | Bin 45474 -> 45796 bytes performance_tests.sh | 34 +++++++++- readme | 36 ---------- 5 files changed, 118 insertions(+), 140 deletions(-) delete mode 100644 readme diff --git a/creation_repo.sh b/creation_repo.sh index 5c1c012..b736e50 100755 --- a/creation_repo.sh +++ b/creation_repo.sh @@ -1,4 +1,32 @@ #!/bin/bash +#prend en entrée un lien ssh vers un répertoire remote git vide prêt à être rempli + +Help() +{ + echo " +NAME + creation_repo.sh +SYNOPSIS + creation_repo.sh [SSH LINK to en empty remote git repository] +DESCRIPTION + This script is in writing. + It creates a git repository in the current directory, linked to a remote passed as argument. Everything is up-to-date between the remote and the local versions. The data stored is generated randomly in binary. +OPTIONS + -h prints the help. " +} + +while getopts ":h" option; do + case $option in + h) # display Help + Help + exit;; + \?) # Invalid option + echo "Error: Invalid option" + exit;; + esac +done + + if [ -d performance_testing ]; then rm -rf performance_testing fi @@ -13,9 +41,9 @@ 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" diff --git a/git_update.sh b/git_update.sh index 8b6da8a..6aa3b1a 100755 --- a/git_update.sh +++ b/git_update.sh @@ -1,105 +1,61 @@ -#!/bin/bash -# Clone un dépôt git au bon endroit -# Stocker un minimum de données (et donc nettoyer) -# Télécharger un minimum de données -# En cas de conflit donner raison au remote (on écrase les versions locales) +## Testing of differeng cloning methods +Our objective is to find the least-consuming method in terms of memory and bandwidth resources. +We are interested in cloning one specific state of the repository. We are not interested in its history or the possibility to change it from the server where it has been cloned. The first step is done by the script creation_repo.sh which creates an adequate repository to test on. The testing in itself is done by performance_tests.sh. -declare -A usage -declare -A varia +## Creation of the test repository +The script creation_repo.sh creates a performance_testing repository. +NAME + creation_repo.sh +SYNOPSIS + creation_repo.sh [SSH LINK to en empty remote git repository] +DESCRIPTION + This script is in writing. + It creates a git repository in the current directory, linked to a remote passed as argument. Everything is up-to-date between the remote and the local versions. The data stored is generated randomly in binary. +OPTIONS + -h prints the help. -summary="$0 [options] " +Here is a history of the commits: +### branch main +commit f665df376fa57880b5edfb85b156c7703601980e (tag: start) +sample0 1M created +commit a17812c13a69986c1103e0d06ff0a0b59a3a4a63 +sample1 1M created +commit bd9d8e9421c3253abba47b9def480f1b2d595568 +sample3 1M created +commit 0e599f3b47bf3200dc6e2734df0c6e655c0d8dde +sample4 5M created +commit effb3cab262e6e1e8242e524e1862b6f77d7ad38 +sample4 5M deleted +### branch secondary +commit 643cdbbda81f4c4f26513b9d6ecca3d436e97040 +sample0 1M created +commit b4bac1f2a2c1b4ab325751748b9496cccc65b082 +sample1 1M created +commit e69695f08e79c160045b3319297597a9d8c9b513 +sample2 500K created -usage[b]="Branch of git repo" -varia[b]=branch -branch=main - -usage[t]="Tag of git repo" -varia[t]=tag -tag= - -usage[d]="Destination of clone" -varia[d]=dst -dst='.' - -usage[i]="privkey used to ssh pull" -varia[i]=privkey -privkey='' - -usage[N]="Clone to a Non-empty target. Existing files will be overwritten" -varia[N]=nonempty_target -nonempty_target=false - -usage[K]="Remote host key file (known_hosts) for ssh connections" -varia[K]=hostkeyfile -hostkeyfile='' - -usage[H]="Use real home dir" -varia[H]=use_home -use_home=false - - -. driglibash-args - - -# Some SSH options -ssh_opt='ssh' -if [ -n "$privkey" ] ; then - ssh_opt="$ssh_opt -i $privkey" -fi - -if [ -n "$hostkeyfile" ] ; then - ssh_opt="$ssh_opt -o 'UserKnownHostsFile $hostkeyfile'" -fi - -repo="$1" -if [ -z "$repo" ] ; then - die "$0: Empty repo given\n$summary" -fi - -if [ ! $use_home ] ; then - set -a - export HOME=/dev/null - set +a -fi - -run mkdir -p "$dst" -run cd "$dst" - - -if [ -d .git ] ; then - - # Compute git branch and tag - tagref= - if [ -n "$tag" ] ; then - tagref="tags/$tag" - fi - - run git fetch origin "$branch" --tags - run git checkout --force $tagref -B "$branch" - run git reset --hard # TODO we can keep some files? - # Preserve existing files in some cases - if ! "$nonempty_target" ; then - git clean -qffdx - fi - run git submodule update --init --recursive --force --recommend-shallow - run git submodule foreach git fetch - run git submodule foreach git checkout --force HEAD - run git submodule foreach git reset --hard - run git submodule foreach git clean -fdx -else - clone_dst='.' - - # To override an existing dir, we need to clone elsewhere first - if "$nonempty_target" ; then - clone_dst="$(mktemp -d)" - fi - - run git clone -b "$branch" --single-branch --recurse-submodules --shallow-submodules --depth 1 --config core.sshCommand="$ssh_opt" "$repo" "$clone_dst" - - # To override an existing dir, we then move everything to that dir - if "$nonempty_target" ; then - run mv "$clone_dst/"{*,.*} . - run rmdir "$clone_dst" - fi -fi +Which gives us the latest state: +### branch main +sample0 1M +sample1 1M +sample3 1M +### branch secondary +sample0 1M +sample1 1M +sample2 500K +## Testing +The script performance_tests.sh measures memory and bandwidth usage of different git cloning scenarii. +NAME + performance_tests.sh +SYNOPSIS + performance_tests.sh [SSH LINK to en empty remote git repository] [number] +OPTIONS + -a excutes all the tests. + -n [number] executes test [number] + -h prints the help. +DESCRIPTION + This script is in writing. It allows you to measure memory and bandwidth usage for different method of cloning on the remote repository given. + TEST0: classic cloning + TEST1: --single-branch + \ No newline at end of file diff --git a/notes.odt b/notes.odt index a2f914cb7139cc0ba7f9f819f569fe46ef589f79..85a70ceb70b9e47a9520a5861906c3ead6cece99 100644 GIT binary patch delta 14289 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 delta 14089 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 diff --git a/performance_tests.sh b/performance_tests.sh index 883279d..1f100dc 100755 --- a/performance_tests.sh +++ b/performance_tests.sh @@ -2,7 +2,6 @@ . driglibash-base #prerequisite: creation_repo.sh has been run -#remove the local copy Help() { @@ -28,7 +27,7 @@ test0(){ 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 -rf performance_testing + #run rm -rf performance_testing } test1(){ @@ -40,6 +39,30 @@ test1(){ echo "memory usage in a --single-branch cloning : $mem1" echo "bandwidth usage : $bw1" run + #rm -rf performance_testing +} + +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 + mem2=$(du ./performance_testing | 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 performance_testing +} + +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 + mem3=$(du ./performance_testing | 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" + run rm -rf performance_testing } @@ -70,12 +93,19 @@ fi if [ "$ALL_TESTS" = true ]; then test0 $REPO_LINK test1 $REPO_LINK + test2 $REPO_LINK + test3 $REPO_LINK + elif [ -n "$TEST_NUM" ]; then case $TEST_NUM in 0) test0 $REPO_LINK;; 1) test1 $REPO_LINK;; + 2) + test2 $REPO_LINK;; + 3) + test3 $REPO_LINK;; *) echo "Error: Invalid test number" die;; diff --git a/readme b/readme deleted file mode 100644 index 7c12e6d..0000000 --- a/readme +++ /dev/null @@ -1,36 +0,0 @@ - -We are working on a performance_testing repository. -Here is a history of the commits: - -branch main - -commit f665df376fa57880b5edfb85b156c7703601980e (tag: start) -sample0 1M created -commit a17812c13a69986c1103e0d06ff0a0b59a3a4a63 -sample1 1M created -commit bd9d8e9421c3253abba47b9def480f1b2d595568 -sample3 1M created -commit 0e599f3b47bf3200dc6e2734df0c6e655c0d8dde -sample4 5M created -commit effb3cab262e6e1e8242e524e1862b6f77d7ad38 -sample4 5M deleted - -branch secondary - -commit 643cdbbda81f4c4f26513b9d6ecca3d436e97040 -sample0 1M created -commit b4bac1f2a2c1b4ab325751748b9496cccc65b082 -sample1 1M created -commit e69695f08e79c160045b3319297597a9d8c9b513 -sample2 500K created - -Which gives us the latest state: -branch main -sample0 1M -sample1 1M -sample3 1M - -branch secondary -sample0 1M -sample1 1M -sample2 500K