Use server receive rate rather than client send()/buffering rate
Fixes #412
This commit is contained in:
+4
-1
@@ -689,7 +689,10 @@ class Mininet( object ):
|
|||||||
"""Run iperf between two hosts.
|
"""Run iperf between two hosts.
|
||||||
hosts: list of hosts; if None, uses opposite hosts
|
hosts: list of hosts; if None, uses opposite hosts
|
||||||
l4Type: string, one of [ TCP, UDP ]
|
l4Type: string, one of [ TCP, UDP ]
|
||||||
returns: results two-element array of server and client speeds"""
|
returns: results two-element array of [ server, client ] speeds
|
||||||
|
note: send() is buffered, so client rate can be much higher than
|
||||||
|
the actual transmission rate; on an unloaded system, server
|
||||||
|
rate should be much closer to the actual receive rate"""
|
||||||
if not quietRun( 'which telnet' ):
|
if not quietRun( 'which telnet' ):
|
||||||
error( 'Cannot find telnet in $PATH - required for iperf test' )
|
error( 'Cannot find telnet in $PATH - required for iperf test' )
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -136,9 +136,14 @@ class testOptionsTopoCommon( object ):
|
|||||||
'switch = %s\n'
|
'switch = %s\n'
|
||||||
% ( BW, bw_strs, N, loptsStr, self.switchClass ) )
|
% ( BW, bw_strs, N, loptsStr, self.switchClass ) )
|
||||||
|
|
||||||
for bw_str in bw_strs:
|
# On the client side, iperf doesn't wait for ACKs - it simply
|
||||||
bw = float( bw_str.split(' ')[0] )
|
# reports how long it took to fill up the TCP send buffer.
|
||||||
self.assertWithinTolerance( bw, BW, BW_TOLERANCE, msg )
|
# As long as the kernel doesn't wait a long time before
|
||||||
|
# delivering bytes to the iperf server, its reported data rate
|
||||||
|
# should be close to the actual receive rate.
|
||||||
|
serverRate, clientRate = bw_strs
|
||||||
|
bw = float( serverRate.split(' ')[0] )
|
||||||
|
self.assertWithinTolerance( bw, BW, BW_TOLERANCE, msg )
|
||||||
|
|
||||||
def testLinkDelay( self ):
|
def testLinkDelay( self ):
|
||||||
"Verify that link delays are accurate within a bound."
|
"Verify that link delays are accurate within a bound."
|
||||||
|
|||||||
Reference in New Issue
Block a user