From c3fd36825393d4e8b29331427b5c8cc1604868e5 Mon Sep 17 00:00:00 2001 From: eleonore12345 Date: Fri, 28 Jun 2024 15:45:45 +0200 Subject: [PATCH] performance_tests.sh et readm.md mis en forme --- notes.odt | Bin 46394 -> 45474 bytes performance_tests.sh | 92 ++++++++++++++++++++++++++++++++++++++----- readme.md | 61 ++++++++++++++++++++++++++++ 3 files changed, 144 insertions(+), 9 deletions(-) create mode 100644 readme.md diff --git a/notes.odt b/notes.odt index c810a95c3c94dd5b59c5cc679fe5f28b4efc47bf..a2f914cb7139cc0ba7f9f819f569fe46ef589f79 100644 GIT binary patch delta 16932 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 WfE?7IJpu^eIk|459NYd4AQ1rdy|y#} diff --git a/performance_tests.sh b/performance_tests.sh index 4945511..883279d 100755 --- a/performance_tests.sh +++ b/performance_tests.sh @@ -1,14 +1,88 @@ #!/bin/bash -. driglibash-args + +. driglibash-base #prerequisite: creation_repo.sh has been run #remove the local copy -rm -rf performance_testing -section TEST0 -echo "TEST 0 : case of classic cloning." -git clone --progress $1 2> cloning_text +Help() +{ + echo " +NAME + performance_tests.sh +SYNOPSIS + performance_tests.sh [-h] [-a] [-n number] [SSH LINK to en empty remote git repository] 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 " +} + +test0(){ + section TEST0 + echo "TEST 0 : case of classic cloning." + git clone --progress $1 2> cloning_text + mem0=$(du ./performance_testing | 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 -rf performance_testing +} + +test1(){ + section TEST1 + echo "TEST 1 : case of --single-branch cloning." + git clone --progress --single-branch $1 2> cloning_text + mem1=$(du ./performance_testing | 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 performance_testing +} + +while getopts ":hn:a" option; do + case $option in + h) # display Help + Help + exit;; + \?) # Invalid option + echo "Error: Invalid option" + exit;; + n) + TEST_NUM=$OPTARG;; + a) + ALL_TESTS=true;; + 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 +elif [ -n "$TEST_NUM" ]; then + case $TEST_NUM in + 0) + test0 $REPO_LINK;; + 1) + test1 $REPO_LINK;; + *) + echo "Error: Invalid test number" + die;; + esac +else + Help +fi + + -mem0=$(du ./performance_testing | 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" diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..6aa3b1a --- /dev/null +++ b/readme.md @@ -0,0 +1,61 @@ +## 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. + +## 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. + +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 + +## 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