| AUTHOR = "[email protected] (Kelly Lucas)" |
| TIME = "MEDIUM" |
| NAME = "Netpipe Stress" |
| TEST_CATEGORY = "Stress" |
| TEST_CLASS = 'Network' |
| TEST_TYPE = "Server" |
| SYNC_COUNT = 2 |
| DOC = """ |
| netpipe_stress is a test which produces bandwidth and latency values for |
| incrementing buffer sizes. This stress test will run for approximately 1 hour. |
| If you need to adjust the run time, change the value of cycles in the run |
| function. |
| |
| Arguments to run_test: |
| bidirectional - indicates whether the test should run simultaneously in both |
| directions |
| buffer_size - Sets the send and receive TCP buffer sizes (from man NPtcp) |
| upper_bound - Specify the upper boundary to the size of message being tested. |
| By default, NetPIPE will stop when the time to transmit a block |
| exceeds one second. (from man NPtcp) |
| variance - NetPIPE chooses the message sizes at regular intervals, |
| increasing them exponentially from the lower boundary to the |
| upper boundary. At each point, it also tests perturbations of 3 |
| bytes above and 3 bytes below (default) each test point to find |
| idiosyncrasies in the system. This perturbation value can be |
| changed using using this option or turned off by setting |
| perturbation_size to 0. (from man NPtcp) |
| cycles - Number of times to repeat each test. Each cycle takes about 6 |
| minutes to complete. |
| """ |
| |
| from autotest_lib.server import utils |
| |
| # Buffer sizes should not be less than 131072, as this will cause netpipe |
| # to hang. |
| buffer_sizes = {131072: 'small', |
| 262144: 'medium', |
| 524288: 'large', |
| 1048576: 'huge', |
| } |
| cycles = 10 |
| upper_bound = 1048576 |
| variance = 17 |
| |
| def run(pair): |
| for x in xrange(cycles): |
| for b in buffer_sizes: |
| tag = 'netpipe' + buffer_sizes[b] + str(x) |
| job.run_test('netpipe', tag=tag, pair=pair, buffer=b, |
| upper_bound=upper_bound, variance=variance) |
| |
| |
| # grab the pairs (and failures) |
| print "Machines = %s" % machines |
| (pairs, failures) = utils.form_ntuples_from_machines(machines, 2) |
| print "pairs = %s" % pairs |
| |
| # log the failures |
| for failure in failures: |
| job.record("FAIL", failure[0], "netpipe", failure[1]) |
| |
| # now run through each pair and run |
| job.parallel_simple(run, pairs, log=False) |