append build_components { core init timer server/nic_router test/nic_stress } append_if [string equal $type "nic_bridge"] build_components { server/nic_bridge } proc exit_support {} { if {[have_spec fiasco]} { return "no" } return "yes" } proc done_string {} { set done_string "" if {[have_spec fiasco]} { append done_string {.*?finished NIC stress test} append done_string {.*?\n} append done_string {.*?finished NIC stress test} append done_string {.*?\n} } else { append done_string {.*?"nic_stress_." exited with exit value 0} append done_string {.*?\n} append done_string {.*?"nic_stress_." exited with exit value 0} append done_string {.*?\n} } return $done_string } proc nr_of_rounds { test_id } { if {[have_spec sel4]} { switch $test_id { 1 { return 9 } 2 { return 7 } } } else { switch $test_id { 1 { return 22 } 2 { return 16 } } } return 0 } proc nr_of_sessions { test_id } { switch $test_id { 1 { return 11 } 2 { return 17 } } return 0 } build $build_components create_boot_directory append config { <config> <parent-provides> <service name="ROM"/> <service name="IRQ"/> <service name="IO_MEM"/> <service name="IO_PORT"/> <service name="PD"/> <service name="RM"/> <service name="CPU"/> <service name="LOG"/> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <default caps="100"/> <start name="timer"> <resource name="RAM" quantum="1M"/> <provides><service name="Timer"/></provides> </start>} append_if [string equal $type "nic_router"] config { <start name="nic_router" caps="1000"> <resource name="RAM" quantum="10M"/> <provides><service name="Nic"/></provides> <config> <policy label_prefix="nic_stress_2" domain="default"/> <policy label_prefix="nic_stress_1" domain="default"/> <domain name="default" interface="10.0.2.55/24"/> </config> </start> <alias name="nic_server" child="nic_router"/>} append_if [string equal $type "nic_bridge"] config { <start name="nic_router" caps="1000"> <resource name="RAM" quantum="10M"/> <provides><service name="Nic"/></provides> <config> <policy label_prefix="nic_bridge" domain="default"/> <domain name="default" interface="10.0.2.55/24"/> </config> </start> <start name="nic_bridge" caps="1000"> <resource name="RAM" quantum="50M"/> <provides><service name="Nic"/></provides> <config mac="02:02:02:02:42:00"> <policy label_prefix="nic_stress_2"/> <policy label_prefix="nic_stress_1"/> </config> <route> <service name="Nic"> <child name="nic_router"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start> <alias name="nic_server" child="nic_bridge"/>} append config { <start name="nic_stress_1" caps="1000"> <binary name="test-nic_stress"/> <resource name="RAM" quantum="50M"/> <config exit_support="} [exit_support] {"> <construct_destruct nr_of_rounds="} [nr_of_rounds 1] {" nr_of_sessions="} [nr_of_sessions 1] {"/> </config> <route> <service name="Nic"> <child name="nic_server"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start> <start name="nic_stress_2" caps="1000"> <binary name="test-nic_stress"/> <resource name="RAM" quantum="100M"/> <config exit_support="} [exit_support] {"> <construct_destruct nr_of_rounds="} [nr_of_rounds 2] {" nr_of_sessions="} [nr_of_rounds 2] {"/> </config> <route> <service name="Nic"> <child name="nic_server"/> </service> <any-service> <parent/> <any-child/> </any-service> </route> </start> </config>} install_config $config append boot_modules { core init timer nic_router test-nic_stress ld.lib.so } append_if [string equal $type "nic_bridge"] boot_modules { nic_bridge } build_boot_image $boot_modules append qemu_args " -nographic " run_genode_until [done_string] 300