refarctor benchmark
This commit is contained in:
		@@ -1,7 +1,4 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
#Requirements:
 | 
			
		||||
#<function name without dashes>.wrk descriptor file for wrk
 | 
			
		||||
#<function name without dashes>.body (even if you don't need it)
 | 
			
		||||
 | 
			
		||||
#Configuration variables
 | 
			
		||||
functions=(isprime-kubeless-go-sc)
 | 
			
		||||
@@ -11,177 +8,109 @@ kuberhost="node1:31299"
 | 
			
		||||
maxthreads=40
 | 
			
		||||
kubeless=true
 | 
			
		||||
rps=500
 | 
			
		||||
#Wave mode configuration
 | 
			
		||||
wave_connection=40
 | 
			
		||||
wave_max_conn=160
 | 
			
		||||
wave_min_conn=40
 | 
			
		||||
wave_time="30s"
 | 
			
		||||
wave_loop_max=2
 | 
			
		||||
#Climb mode configuration
 | 
			
		||||
climb_max=10
 | 
			
		||||
climb=1
 | 
			
		||||
 | 
			
		||||
HEY_INSTALLED=$(command -v hey)
 | 
			
		||||
if [[ $HEY_INSTALLED = "" ]]
 | 
			
		||||
then
 | 
			
		||||
        apt update
 | 
			
		||||
        apt install -y golang
 | 
			
		||||
        go get -u github.com/rakyll/hey
 | 
			
		||||
        cp "$HOME"/go/bin/hey /usr/local/bin
 | 
			
		||||
if [[ $HEY_INSTALLED == "" ]]; then
 | 
			
		||||
    apt update
 | 
			
		||||
    apt install -y golang
 | 
			
		||||
    go get -u github.com/rakyll/hey
 | 
			
		||||
    cp "$HOME"/go/bin/hey /usr/local/bin
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
LOADTEST_INSTALLED=$(command -v loadtest)
 | 
			
		||||
if [[ LOADTEST_INSTALLED = "" ]]
 | 
			
		||||
then
 | 
			
		||||
        apt update
 | 
			
		||||
        apt install -y nodejs npm
 | 
			
		||||
        npm i -g loadtest
 | 
			
		||||
if [[ LOADTEST_INSTALLED == "" ]]; then
 | 
			
		||||
    apt update
 | 
			
		||||
    apt install -y nodejs npm
 | 
			
		||||
    npm i -g loadtest
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo -e "Benchmarking functions\n"
 | 
			
		||||
for function in "${functions[@]}"
 | 
			
		||||
do
 | 
			
		||||
for function in "${functions[@]}"; do
 | 
			
		||||
    function_friendly=$(echo $function | cut - -d'-' -f1)
 | 
			
		||||
    echo -e "Benchmarking $function\n"
 | 
			
		||||
    echo -e "Output of $function is:\n"
 | 
			
		||||
    perl -pi -e 'chomp if eof' "$function_friendly".body
 | 
			
		||||
    if $kubeless;
 | 
			
		||||
    then
 | 
			
		||||
    if $kubeless; then
 | 
			
		||||
        curl --data-binary @"$function_friendly".body --header "Host: $function.kubeless" --header "Content-Type:application/json" http://$kuberhost/"$function"
 | 
			
		||||
    else
 | 
			
		||||
        curl --header "Host: $function.default.example.com" http://$kuberhost/
 | 
			
		||||
    fi
 | 
			
		||||
    echo -e "\n"
 | 
			
		||||
    if [[ $* = *"--wave"* ]]
 | 
			
		||||
    then
 | 
			
		||||
        wave_loop=1
 | 
			
		||||
        wave_dir_up=true
 | 
			
		||||
        wave_num=1
 | 
			
		||||
        while [[ $wave_loop -lt $wave_loop_max ]]; do
 | 
			
		||||
                now=$(date '+%Y-%m-%d-%H-%M')
 | 
			
		||||
                echo -e "Connections: $wave_connection"
 | 
			
		||||
                echo -e "Running"
 | 
			
		||||
                if $kubeless;
 | 
			
		||||
                then
 | 
			
		||||
                    hey -c $wave_connection -q $rps -z $wave_time -m POST -o csv -host "$function.kubeless" -D "$function_friendly".body  -T "application/json" http://$kuberhost/"$function" > ./data/"$function"."$wave_num".wave.csv
 | 
			
		||||
                else
 | 
			
		||||
                    hey -c $wave_connection -q $rps -z $wave_time -m POST -o csv -host "$function.default.example.com" http://$kuberhost/ > ./data/"$function"."$wave_num".wave.csv
 | 
			
		||||
                fi
 | 
			
		||||
                wave_num=$((wave_num + 1))
 | 
			
		||||
                if $wave_dir_up
 | 
			
		||||
                then
 | 
			
		||||
                        if [[ $wave_connection -lt $wave_max_conn ]]
 | 
			
		||||
                        then
 | 
			
		||||
                            echo -e "Stepping up"
 | 
			
		||||
                            wave_connection=$((wave_connection * 5))
 | 
			
		||||
                        else
 | 
			
		||||
                            echo -e "Not stepping"
 | 
			
		||||
                            wave_dir_up=false
 | 
			
		||||
                        fi
 | 
			
		||||
                else
 | 
			
		||||
                    if [[ $wave_connection -gt $wave_min_conn ]]
 | 
			
		||||
                    then
 | 
			
		||||
                        echo -e "Stepping down"
 | 
			
		||||
                        wave_connection=$((wave_connection / 5))
 | 
			
		||||
    for connection in "${connections[@]}"; do
 | 
			
		||||
        if [[ $connection -lt $((maxthreads + 1)) ]]; then
 | 
			
		||||
            threads=$((connection - 1))
 | 
			
		||||
        else
 | 
			
		||||
            threads=$maxthreads
 | 
			
		||||
        fi
 | 
			
		||||
        echo -e "Threads: $threads Connections $connection\n"
 | 
			
		||||
        for time in "${times[@]}"; do
 | 
			
		||||
            datetime=$(date '+%Y-%m-%d-%H-%M-%S')
 | 
			
		||||
            echo -e "Time: $time\n"
 | 
			
		||||
            if [[ $* == *"--fire"* ]]; then
 | 
			
		||||
                echo -e "hey-summary $datetime\n"
 | 
			
		||||
                if $kubeless; then
 | 
			
		||||
                    if [[ $* == *"--loadtest"* ]]; then
 | 
			
		||||
                        loadtest -H "Host: $function.kubeless" --rps $rps -c $connection -t $time -p "$function_firendly".body http://$kuberhost/"$function" >./data/"$function"."$connection"."$time"."$datetime".txt
 | 
			
		||||
                    else
 | 
			
		||||
                        echo -e "Not stepping"
 | 
			
		||||
                        wave_dir_up=true
 | 
			
		||||
                        wave_loop=$((wave_loop + 1))
 | 
			
		||||
                        hey -c "$connection" -q $rps -z "$time" -m POST -host "$function.kubeless" -D "$function_firendly".body -T "application/json" http://$kuberhost/"$function" >./data/"$function"."$connection"."$time"."$datetime".txt
 | 
			
		||||
                    fi
 | 
			
		||||
                else
 | 
			
		||||
                    if [[ $* == *"--loadtest"* ]]; then
 | 
			
		||||
                        loadtest -H "Host: $function.default.example.com" --rps $rps -c $connection -t $time http://$kuberhost/ >./data/"$function"."$connection"."$time"."$datetime".txt
 | 
			
		||||
                    else
 | 
			
		||||
                        hey -c "$connection" -q $rps -z "$time" -m POST -host "$function.default.example.com" http://$kuberhost/ >./data/"$function"."$connection"."$time"."$datetime".txt
 | 
			
		||||
                    fi
 | 
			
		||||
                fi
 | 
			
		||||
        done
 | 
			
		||||
    else
 | 
			
		||||
        for connection in "${connections[@]}"
 | 
			
		||||
        do
 | 
			
		||||
            if [[ $connection -lt $((maxthreads + 1)) ]]
 | 
			
		||||
            then
 | 
			
		||||
                threads=$((connection-1))
 | 
			
		||||
            else
 | 
			
		||||
                threads=$maxthreads
 | 
			
		||||
            fi
 | 
			
		||||
            echo -e "Threads: $threads Connections $connection\n"
 | 
			
		||||
                for time in "${times[@]}"
 | 
			
		||||
                do
 | 
			
		||||
                    datetime=$(date '+%Y-%m-%d-%H-%M-%S')
 | 
			
		||||
                    echo -e "Time: $time\n"
 | 
			
		||||
                    if [[ $* = *"--fire"* ]]
 | 
			
		||||
                    then
 | 
			
		||||
                        echo -e "hey-summary $datetime\n"
 | 
			
		||||
                        if $kubeless;
 | 
			
		||||
                        then
 | 
			
		||||
                            if [[ $* = *"--loadtest"* ]]
 | 
			
		||||
                            then
 | 
			
		||||
                                loadtest -H "Host: $function.kubeless" --rps $rps -c $connection -t $time -p "$function_firendly".body http://$kuberhost/"$function" > ./data/"$function"."$connection"."$time"."$datetime".txt
 | 
			
		||||
                            else
 | 
			
		||||
                                hey -c "$connection" -q $rps -z "$time" -m POST -host "$function.kubeless" -D "$function_firendly".body  -T "application/json" http://$kuberhost/"$function" > ./data/"$function"."$connection"."$time"."$datetime".txt
 | 
			
		||||
                            fi
 | 
			
		||||
            if [[ $* == *"--csv"* ]]; then
 | 
			
		||||
                echo -e "hey-csv $datetime\n"
 | 
			
		||||
                if $kubeless; then
 | 
			
		||||
                    hey -c "$connection" -z "$time" -m POST -host "$function.kubeless" -D "$function_firendly".body -T "application/json" http://$kuberhost/"$function" >./data/"$function"."$connection"."$time"."$datetime".csv
 | 
			
		||||
                else
 | 
			
		||||
                    hey -c "$connection" -z "$time" -m POST -host "$function.default.example.com" http://$kuberhost/ >./data/"$function"."$connection"."$time"."$datetime".csv
 | 
			
		||||
                fi
 | 
			
		||||
            fi
 | 
			
		||||
            if [[ $* == *"--for"* ]]; then
 | 
			
		||||
                for num in 1 2 3 4 5 6 7 8 9 10; do
 | 
			
		||||
                    echo -e "hey-for $num\n"
 | 
			
		||||
                    if $kubeless; then
 | 
			
		||||
                        if [[ $* == *"--loadtest"* ]]; then
 | 
			
		||||
                            loadtest -H "Host: $function.kubeless" --rps $rps -c $connection -t $time -p "$function_firendly".body http://$kuberhost/"$function" >./data/"$function"."$num".txt
 | 
			
		||||
                        else
 | 
			
		||||
                        if [[ $* = *"--loadtest"* ]]
 | 
			
		||||
                            then
 | 
			
		||||
                                loadtest -H "Host: $function.default.example.com" --rps $rps -c $connection -t $time http://$kuberhost/ > ./data/"$function"."$connection"."$time"."$datetime".txt
 | 
			
		||||
                            else
 | 
			
		||||
                                hey -c "$connection" -q $rps -z "$time" -m POST -host "$function.default.example.com" http://$kuberhost/ > ./data/"$function"."$connection"."$time"."$datetime".txt
 | 
			
		||||
                            fi
 | 
			
		||||
                            hey -c "$connection" -q $rps -z "$time" -m POST -o csv -host "$function.kubeless" -D "$function_friendly".body -T "application/json" http://$kuberhost/"$function" >./data/"$function"."$num".csv
 | 
			
		||||
                        fi
 | 
			
		||||
                    else
 | 
			
		||||
                        if [[ $* == *"--loadtest"* ]]; then
 | 
			
		||||
                            loadtest -H "Host: $function.default.example.com" --rps $rps -c $connection -t $time http://$kuberhost/ >./data/"$function"."$num".for.csv
 | 
			
		||||
                        else
 | 
			
		||||
                            hey -c "$connection" -q $rps -z "$time" -m POST -o csv -host "$function.default.example.com" http://$kuberhost/ >./data/"$function"."$num".for.csv
 | 
			
		||||
                        fi
 | 
			
		||||
                    fi
 | 
			
		||||
                    if [[ $* = *"--csv"* ]]
 | 
			
		||||
                    then
 | 
			
		||||
                        echo -e "hey-csv $datetime\n"
 | 
			
		||||
                        if $kubeless;
 | 
			
		||||
                        then
 | 
			
		||||
                            hey -c "$connection" -z "$time" -m POST -host "$function.kubeless" -D "$function_firendly".body  -T "application/json" http://$kuberhost/"$function" > ./data/"$function"."$connection"."$time"."$datetime".csv
 | 
			
		||||
                        else
 | 
			
		||||
                            hey -c "$connection" -z "$time" -m POST -host "$function.default.example.com" http://$kuberhost/ > ./data/"$function"."$connection"."$time"."$datetime".csv
 | 
			
		||||
                        fi
 | 
			
		||||
                    fi
 | 
			
		||||
                    if [[ $* = *"--for"* ]]
 | 
			
		||||
                    then
 | 
			
		||||
                        for num in 1 2 3 4 5 6 7 8 9 10
 | 
			
		||||
                        do
 | 
			
		||||
                            echo -e "hey-for $num\n"
 | 
			
		||||
                            if $kubeless;
 | 
			
		||||
                            then
 | 
			
		||||
                            if [[ $* = *"--loadtest"* ]]
 | 
			
		||||
                            then
 | 
			
		||||
                                loadtest -H "Host: $function.kubeless" --rps $rps -c $connection -t $time -p "$function_firendly".body http://$kuberhost/"$function" > ./data/"$function"."$num".txt
 | 
			
		||||
                            else
 | 
			
		||||
                                hey -c "$connection" -q $rps -z "$time" -m POST -o csv -host "$function.kubeless" -D "$function_friendly".body  -T "application/json" http://$kuberhost/"$function" > ./data/"$function"."$num".csv
 | 
			
		||||
                            fi
 | 
			
		||||
                            else
 | 
			
		||||
                            if [[ $* = *"--loadtest"* ]]
 | 
			
		||||
                            then
 | 
			
		||||
                                loadtest -H "Host: $function.default.example.com" --rps $rps -c $connection -t $time http://$kuberhost/ > ./data/"$function"."$num".for.csv
 | 
			
		||||
                            else
 | 
			
		||||
                                hey -c "$connection" -q $rps -z "$time" -m POST -o csv -host "$function.default.example.com" http://$kuberhost/ > ./data/"$function"."$num".for.csv
 | 
			
		||||
                            fi
 | 
			
		||||
                            fi
 | 
			
		||||
                        done
 | 
			
		||||
                    fi
 | 
			
		||||
            done
 | 
			
		||||
                done
 | 
			
		||||
            fi
 | 
			
		||||
        done
 | 
			
		||||
    fi
 | 
			
		||||
    if [[ $* = *"--climb"* ]]
 | 
			
		||||
    then
 | 
			
		||||
    done
 | 
			
		||||
    if [[ $* == *"--climb"* ]]; then
 | 
			
		||||
        while [[ $climb -lt $climb_max ]]; do
 | 
			
		||||
                climb_rps=$((rps * climb))
 | 
			
		||||
                echo -e "Connections: $climb_connection"
 | 
			
		||||
                if $kubeless;
 | 
			
		||||
                then
 | 
			
		||||
                if [[ $* = *"--loadtest"* ]]
 | 
			
		||||
                then
 | 
			
		||||
                    loadtest -H "Host: $function.kubeless" --rps $climb_rps -c 1 -t $time -p "$function_firendly".body http://$kuberhost/"$function" > ./data/"$function"."$climb_connection".climb.txt
 | 
			
		||||
            climb_rps=$((rps * climb))
 | 
			
		||||
            echo -e "Connections: $climb_connection"
 | 
			
		||||
            if $kubeless; then
 | 
			
		||||
                if [[ $* == *"--loadtest"* ]]; then
 | 
			
		||||
                    loadtest -H "Host: $function.kubeless" --rps $climb_rps -c 1 -t $time -p "$function_firendly".body http://$kuberhost/"$function" >./data/"$function"."$climb_connection".climb.txt
 | 
			
		||||
                else
 | 
			
		||||
                    hey -c 1 -q $climb_rps -z $time -m POST -o csv -host "$function.kubeless" -D "$function_friendly".body  -T "application/json" http://$kuberhost/"$function" > ./data/"$function"."$climb_connection".climb.csv
 | 
			
		||||
                    hey -c 1 -q $climb_rps -z $time -m POST -o csv -host "$function.kubeless" -D "$function_friendly".body -T "application/json" http://$kuberhost/"$function" >./data/"$function"."$climb_connection".climb.csv
 | 
			
		||||
                fi
 | 
			
		||||
            else
 | 
			
		||||
                if [[ $* == *"--loadtest"* ]]; then
 | 
			
		||||
                    loadtest -H "Host: $function.default.example.com" --rps $climb_rps -c 1 -t $time http://$kuberhost/ >./data/"$function"."$climb_connection".climb.txt
 | 
			
		||||
                else
 | 
			
		||||
                if [[ $* = *"--loadtest"* ]]
 | 
			
		||||
                then
 | 
			
		||||
                    loadtest -H "Host: $function.default.example.com" --rps $climb_rps -c 1 -t $time http://$kuberhost/ > ./data/"$function"."$climb_connection".climb.txt
 | 
			
		||||
                else
 | 
			
		||||
                    hey -c 1 -q $climb_rps -z $time -m POST -o csv -host "$function.default.example.com" http://$kuberhost/ > ./data/"$function"."$climb_connection".climb.csv
 | 
			
		||||
                    hey -c 1 -q $climb_rps -z $time -m POST -o csv -host "$function.default.example.com" http://$kuberhost/ >./data/"$function"."$climb_connection".climb.csv
 | 
			
		||||
                fi
 | 
			
		||||
                fi
 | 
			
		||||
                climb=$((climb + 1))
 | 
			
		||||
            fi
 | 
			
		||||
            climb=$((climb + 1))
 | 
			
		||||
        done
 | 
			
		||||
    fi
 | 
			
		||||
    echo -e "Finished at $datetime"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user