Files
yttrium-virtio-gpu/NetKVM/Tests/iperf_wrapper.rb
T
Bishara AbuHattoum a6f0162a23 NetKVM: iperf_wrapper performance testing script additions and beautifications:
1. Added the " -p " prefix as well as the optionality
   to define an array of multi stream numbers for the
   tests to run for.
2. Added the optionality of defining the udp send bandwidth
   as a fourth parameter to the script in case of a UDP test
   mode.
3. Beautification and added more logged and printed details
   regarding every test parameters and variables.

Signed-off-by: Bishara AbuHattoum <[email protected]>
2016-08-31 21:39:11 +10:00

90 lines
2.9 KiB
Ruby

#!/usr/bin/ruby
#Test constants
IPERF_CLIENT = "iperf" # Name of the test app executable
HOST_PREFIX = " -c " # Server address prefix
TEST_TIME_PREFIX = " -t " # Test time prefix
PARALLEL_THREADS_PREFIX = " -P " # Number of parallel client threads to run
PACKET_SIZE_PREFIX = " -l " # Packet size prefix
PACKET_SIZES = [32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536] # packet sizes
PARALLEL_THREADS = [1, 2, 4] # thread numbers
#TEST_CASES = [" "] # Test cases (TCP)
TEST_CASES = [" -u"] # Test cases (UDP)
def Log(log_file)
print yield # print to screen
log_file.print yield # print to log file
end
#Default values for command line parameters
test_loops = 3 # How many time to execute each test case
test_time = 10 # Time to run each test
test_server = "10.0.0.157" # Server address
test_udp_bandwidth = 1000000 # Udp bandwidth to send
# First parameter to the script is a server host
if (ARGV[0].to_s.strip() != "")
test_server = ARGV[0]
end
# Second parameter to the script is a time to run each test
if (ARGV[1].to_s.strip() != "")
test_time = ARGV[1].to_i
end
#Third parameter how much times to run each test
if (ARGV[2].to_s.strip() != "")
test_loops = ARGV[2].to_i
end
#Fourth parameter the UDP bandwidth to send
if (ARGV[3].to_s.strip() != "")
test_udp_bandwidth = ARGV[3].to_i
end
if(ENV['OS'].to_s.include? "Windows")
iperf_client = IPERF_CLIENT + ".exe"
else
iperf_client = IPERF_CLIENT
end
start_time = Time.now
# Format log file name - add date and time
File.open("test_log__#{start_time.strftime("%d_%m_%Y-%H_%M_%S")}.log", "w") { |logFile|
Log(logFile) { "Test started: " + start_time.strftime("%d/%m/%Y %H:%M:%S\n") }
TEST_CASES.each { |test|
if test.include?("u") then
test = test + " -b " + test_udp_bandwidth.to_s
Log(logFile) { "\nUDP TEST MODE\nSend bandwidth is set to " + test_udp_bandwidth.to_s + ".\n" }
else
Log(logFile) { "\nTCP TEST MODE\n" }
end
PARALLEL_THREADS.each { |parallel_treads|
Log(logFile) { "\nParallel threads num is set to " + parallel_treads.to_s + "." }
PACKET_SIZES.each { |size|
Log(logFile) { "\nPacket size is set to " + size.to_s + "b" + "." }
test_loops.times { |run|
Log(logFile) { "\nTest run num " + (run + 1).to_s + ".\n" }
# construct test command line
iperf_command_line = iperf_client + HOST_PREFIX + test_server + TEST_TIME_PREFIX +
test_time.to_s + PACKET_SIZE_PREFIX + size.to_s + "b" +
PARALLEL_THREADS_PREFIX + parallel_treads.to_s + test
# log test command line
Log(logFile) { "\nExecuting: " + iperf_command_line + "\n" }
# run the test
result = `#{iperf_command_line}`
# log result
Log(logFile) { result }
} # TEST_LOOPS
} # packet_size
} # parallel_threads
} # TEST_CASE
} # log file