#!/bin/bash . driglibash-base #prerequisite: creation_repo.sh has been run 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 } 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 } 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 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;; esac else Help fi