# # \brief Test for using netperf # \author Alexander Boettcher # \date 2013-04-18 # # # Build # if {![file exists bin/netperf_host]} { puts "\nPlease compile a netperf client of version 2.6.0 for your host system." puts "The sources are available in 'ports/contrib/netperf'." puts "Please copy the 'netperf' binary to '/bin/netperf_host'.\n" exit 1 } spawn bin/netperf_host -V expect { {Netperf version 2.6.0} { } eof { puts "\nError: unsupported netperf version.\n"; exit 1 } } set build_components { core init drivers/pci drivers/timer drivers/nic app/netperf } set use_usb_driver [expr [have_spec omap4] || [have_spec exynos5]] set use_nic_driver [expr !$use_usb_driver] set use_platform_driver [expr $use_usb_driver && [have_spec foc_arndale]] lappend_if $use_usb_driver build_components drivers/usb lappend_if $use_platform_driver build_components drivers/platform lappend_if [have_spec acpi] build_components drivers/acpi lappend_if [have_spec pci] build_components drivers/pci/device_pd build $build_components create_boot_directory # # Generate config # set config { } append_if $use_platform_driver config { } append_if $use_usb_driver config { } append_if $use_nic_driver config { } append_if [have_spec acpi] config { } append_if [expr ![have_spec acpi] && [have_spec pci]] config { } append config { } install_config $config # # Boot modules # # generic modules set boot_modules { core init timer ld.lib.so libc.lib.so libm.lib.so lwip.lib.so libc_log.lib.so netperf } # platform-specific modules lappend_if $use_platform_driver boot_modules platform_drv lappend_if [have_spec acpi] boot_modules acpi_drv lappend_if [have_spec pci] boot_modules pci_drv lappend_if $use_usb_driver boot_modules usb_drv lappend_if $use_nic_driver boot_modules nic_drv lappend_if [have_spec nova] boot_modules pci_device_pd build_boot_image $boot_modules # # Execute test case # # qemu config append qemu_args " -m 128 " append_if [have_spec x86] qemu_args " -net nic,model=e1000 " append_if [have_spec lan9118] qemu_args " -net nic,model=lan9118 " append qemu_args " -net user -redir tcp:12865::12865 -redir tcp:49153::49153 " run_genode_until {.*and family AF_INET.*} 30 set serial_id $spawn_id if [is_qemu_available] { set ip_addr "localhost" } else { set match_string "got IP address (\[0-9\]+\.\[0-9\]+\.\[0-9\]+\.\[0-9\]+)" regexp $match_string $output all ip_addr puts "" } spawn bin/netperf_host -H $ip_addr -P 1 -v 2 -t TCP_STREAM -c -C -- -S 0,65520 -P 49153,49153 set netperf_id $spawn_id run_genode_until "Segment" 60 $netperf_id # format output understandable for post proccessing scripts set throughput [regexp -all -inline {[0-9]+[ ]+[0-9]+[ ]+[0-9]+[ ]+[0-9]+\.[0-9]+[ ]+[0-9]+\.[0-9]+} $output] set throughput [regexp -all -inline {[0-9]+\.[0-9]+} $throughput] puts "! PERF: tcp_stream [lindex $throughput 1] MBit/s ok" puts "Test succeeded" # vi: set ft=tcl :