diff --git a/examples/simpleperf.py b/examples/simpleperf.py
index 1da4b66c1b2c7b990ffec14647bcfd5aa6f52934..7d16968d7066d5a2ba73f313af5843531c82510a 100755
--- a/examples/simpleperf.py
+++ b/examples/simpleperf.py
@@ -31,17 +31,16 @@ def __init__(self, n=2, **opts):
 
 def perfTest():
     "Create network and run simple performance test"
-    topo = SingleSwitchTopo(n=4)
-    net = Mininet(topo=topo,
-                  host=CPULimitedHost, link=TCLink)
+    topo = SingleSwitchTopo( n=4 )
+    net = Mininet( topo=topo,
+                  host=CPULimitedHost, link=TCLink,
+                  autoStaticArp=True )
     net.start()
     print "Dumping host connections"
     dumpNodeConnections(net.hosts)
-    print "Testing network connectivity"
-    net.pingAll()
     print "Testing bandwidth between h1 and h4"
     h1, h4 = net.getNodeByName('h1', 'h4')
-    net.iperf((h1, h4))
+    results = net.iperf( ( h1, h4 ), l4Type='UDP' )
     net.stop()
 
 if __name__ == '__main__':
diff --git a/examples/test/test_simpleperf.py b/examples/test/test_simpleperf.py
index d88da673381f6903883a6c5c895c071e2f3741b6..43fe71116573a818f0859f26e6f1b735dba041bd 100755
--- a/examples/test/test_simpleperf.py
+++ b/examples/test/test_simpleperf.py
@@ -6,12 +6,8 @@
 
 import unittest
 import pexpect
-import re
 import sys
 from mininet.log import setLogLevel
-from mininet.net import Mininet
-from mininet.node import CPULimitedHost
-from mininet.link import TCLink
 
 from mininet.examples.simpleperf import SingleSwitchTopo
 
@@ -19,35 +15,20 @@ class testSimplePerf( unittest.TestCase ):
 
     @unittest.skipIf( '-quick' in sys.argv, 'long test' )
     def testE2E( self ):
-        "Run the example and verify ping and iperf results"
+        "Run the example and verify iperf results"
+        BW = 10
+        TOLERANCE = .8
+        expectedBw = BW * TOLERANCE
         p = pexpect.spawn( 'python -m mininet.examples.simpleperf' )
-        # check ping results
-        p.expect( "Results: (\d+)% dropped", timeout=120 )
-        loss = int( p.match.group( 1 ) )
-        self.assertTrue( 0 < loss < 100 )
         # check iperf results
-        p.expect( "Results: \['([\d\.]+) .bits/sec", timeout=480 )
-        bw = float( p.match.group( 1 ) )
-        self.assertTrue( bw > 0 )
+        p.expect( "Results: \['10M', '([\d\.]+) .bits/sec", timeout=480 )
+        measuredBw = float( p.match.group( 1 ) )
+        lowerBound = expectedBw * TOLERANCE
+        upperBound = expectedBw + expectedBw * ( 1 - TOLERANCE )
+        self.assertGreaterEqual( measuredBw, lowerBound )
+        self.assertLessEqual( measuredBw, upperBound )
         p.wait()
 
-    def testTopo( self ):
-        """Import SingleSwitchTopo from example and test connectivity between two hosts
-           Note: this test may fail very rarely because it is non-deterministic
-           i.e. links are configured with 10% packet loss, but if we get unlucky and 
-           none or all of the packets are dropped, the test will fail"""
-        topo = SingleSwitchTopo( n=4 )
-        net = Mininet( topo=topo, host=CPULimitedHost, link=TCLink )
-        net.start()
-        h1, h4 = net.get( 'h1', 'h4' )
-        # have h1 ping h4 ten times
-        expectStr = '(\d+) packets transmitted, (\d+) received, (\d+)% packet loss'
-        output = h1.cmd( 'ping -c 10 %s' % h4.IP() )
-        m = re.search( expectStr, output )
-        loss = int( m.group( 3 ) )
-        net.stop()
-        self.assertTrue( 0 < loss < 100 )
-
 if __name__ == '__main__':
     setLogLevel( 'warning' )
     unittest.main()