Created
July 11, 2017 22:38
-
-
Save tompurl/dc8ca0821ec52cf1ca65d2509a8e1234 to your computer and use it in GitHub Desktop.
Revisions
-
tompurl created this gist
Jul 11, 2017 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,103 @@ #!/bin/bash set -e USAGE="$0 [-n iteration_number] [-v] [-h] testfile destination_server" die() { echo "$@" 1>&2 echo $USAGE 1>&2 exit 1; } ### Process options and arguments number_of_iterations=5 verbose=0 while getopts ":n:vh" opt; do case $opt in h) echo $USAGE exit 0 ;; n) number_of_iterations=$OPTARG ;; v) verbose=1 # Currently this does not do anything :-) ;; \?) die "Invalid option: -$OPTARG" >&2 ;; :) die "Option -$OPTARG requires an argument." >&2 ;; esac done shift $((OPTIND-1)) if [ -z "$1" ]; then die "No testfile argument supplied" fi if [ ! -e "$1" ]; then die "The testfile file doesn't seem to exist" fi if [ -z "$2" ]; then die "No destination_server argument supplied" fi # Calculate net speed stats based on a file name function calculate_statistics { awk \ ' # First find every line with a KB value and convert it to MB /.*KB\/s/ { throughput_denormalized = gensub(/(.*)KB\/s/, "\\1", "g", $4) throughput_normalized = throughput_denormalized / 1024 } # Next, if its a MB line just pull out the throughput /.*MB\/s/ { throughput_normalized = gensub(/(.*)MB\/s/, "\\1", "g", $4) } # Add it to the sum with each line read { sum += throughput_normalized } # After evaluating each line, print your average END { print "Average throughput in MB/s: " sum / NR }' $1 } # Run a throughput test using scp N amount of times and then # calculate stats. # # $1 => Test name. ie "download" or "upload" # $2 => "From" path # $3 => "To" path # $4 => Temp dir path # $5 => Iterations function run_test { echo echo "Starting $1 test" echo "=============================" echo data_file="${4}/${1}.dat" rm -f "$data_file" # Delete if it already exists for i in $(seq 1 "$5"); do echo "Starting run $i" script -q -c "scp $2 $3" | strings| tail -1 | tee -a $data_file done # Noamalize data and calculate stats echo calculate_statistics $data_file echo --- echo } my_temp_dir=$(mktemp -d "${TMPDIR:-/tmp/}$(basename $0).XXXXXXXXXXXX") run_test upload "$1" "$2":/tmp $my_temp_dir $number_of_iterations run_test download "$2":/tmp/$(basename $1) . $my_temp_dir $number_of_iterations rm -rf $my_temp_dir