From: Amos Kong <akong@xxxxxxxxxx> Add network load by netperf, server is launched on guest, execute netperf client with different protocols on host. if all clients execute successfully, case will be pass. Test result will be record into result.txt. Now this case only tests with "TCP_RR TCP_CRR UDP_RR TCP_STREAM TCP_MAERTS TCP_SENDFILE UDP_STREAM". DLPI only supported by Unix, unix domain test is not necessary, so drop test of DLPI and unix domain. Signed-off-by: Amos Kong <akong@xxxxxxxxxx> --- client/tests/kvm/tests/netperf.py | 56 ++++++++++++++++++++++++++++++++ client/tests/kvm/tests_base.cfg.sample | 10 ++++++ 2 files changed, 66 insertions(+), 0 deletions(-) create mode 100644 client/tests/kvm/tests/netperf.py diff --git a/client/tests/kvm/tests/netperf.py b/client/tests/kvm/tests/netperf.py new file mode 100644 index 0000000..acdd2f8 --- /dev/null +++ b/client/tests/kvm/tests/netperf.py @@ -0,0 +1,56 @@ +import logging, commands, os +from autotest_lib.client.common_lib import error +from autotest_lib.client.bin import utils +import kvm_test_utils + +def run_netperf(test, params, env): + """ + Network stress test with netperf. + + 1) Boot up a VM. + 2) Launch netserver on guest. + 3) Execute netperf client on host with different protocols. + 4) Output the test result. + + @param test: KVM test object. + @param params: Dictionary with the test parameters. + @param env: Dictionary with test environment. + """ + vm = kvm_test_utils.get_living_vm(env, params.get("main_vm")) + session = kvm_test_utils.wait_for_login(vm, + timeout=int(params.get("login_timeout", 360))) + netperf_dir = os.path.join(os.environ['AUTODIR'], "tests/netperf2") + setup_cmd = params.get("setup_cmd") + guest_ip = vm.get_address() + result_file = os.path.join(test.resultsdir, "output_%s" % test.iteration) + + session.get_command_output("iptables -F") + for i in params.get("netperf_files").split(): + if not vm.copy_files_to(os.path.join(netperf_dir, i), "/tmp"): + raise error.TestError("Could not copy files to guest") + if session.get_command_status(setup_cmd % "/tmp", timeout=200) != 0: + raise error.TestFail("Fail to setup netperf on guest") + if session.get_command_status(params.get("netserver_cmd") % "/tmp") != 0: + raise error.TestFail("Fail to start netperf server on guest") + + try: + logging.info("Setup and run netperf client on host") + utils.run(setup_cmd % netperf_dir) + success = True + file(result_file, "w").write("Netperf Test Result\n") + for i in params.get("protocols").split(): + cmd = params.get("netperf_cmd") % (netperf_dir, i, guest_ip) + logging.debug("Execute netperf client test: %s", cmd) + s, o = commands.getstatusoutput(cmd) + if s != 0: + logging.error("Fail to execute netperf test, protocol:%s", i) + success = False + else: + logging.info(o) + file(result_file, "a+").write("%s\n" % o) + if not success: + raise error.TestFail("Some of the netperf tests failed") + + finally: + session.get_command_output("killall netserver") + session.close() diff --git a/client/tests/kvm/tests_base.cfg.sample b/client/tests/kvm/tests_base.cfg.sample index c55396d..25f59e6 100644 --- a/client/tests/kvm/tests_base.cfg.sample +++ b/client/tests/kvm/tests_base.cfg.sample @@ -517,6 +517,16 @@ variants: type = mac_change kill_vm = yes + - netperf: install setup unattended_install.cdrom + type = netperf + nic_mode = tap + netperf_files = netperf-2.4.5.tar.bz2 wait_before_data.patch + setup_cmd = "cd %s && tar xvfj netperf-2.4.5.tar.bz2 && cd netperf-2.4.5 && patch -p0 < ../wait_before_data.patch && ./configure && make" + netserver_cmd = %s/netperf-2.4.5/src/netserver + # test time is 60 seconds, set the buffer size to 1 for more hardware interrupt + netperf_cmd = %s/netperf-2.4.5/src/netperf -t %s -H %s -l 60 -- -m 1 + protocols = "TCP_STREAM TCP_MAERTS TCP_RR TCP_CRR UDP_RR TCP_SENDFILE UDP_STREAM" + - physical_resources_check: install setup unattended_install.cdrom type = physical_resources_check catch_uuid_cmd = dmidecode | awk -F: '/UUID/ {print $2}' -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html