vbox5: add testing VMs causing load

Issue #3683
This commit is contained in:
Alexander Boettcher 2020-02-28 15:38:28 +01:00 committed by Christian Helmuth
parent 6359445a8e
commit 8be72b0be1
23 changed files with 590 additions and 19 deletions

View File

@ -16,6 +16,8 @@ set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -16,6 +16,8 @@ set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -16,6 +16,8 @@ set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -16,6 +16,8 @@ set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -24,6 +24,8 @@ set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -16,6 +16,8 @@ set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -16,6 +16,8 @@ set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -16,6 +16,8 @@ set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -16,6 +16,8 @@ set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -16,6 +16,8 @@ set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -16,6 +16,8 @@ set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -16,6 +16,8 @@ set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -27,6 +27,8 @@ set use_ram_fs 1
# However read initial overlay from disk
set use_overlay_from_disk 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -15,6 +15,8 @@ set use_rumpfs 0
set use_ram_fs 0
set use_overlay_from_disk 0
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -13,6 +13,8 @@ set use_overlay_from_disk 1
set overlay_image "overlay_${flavor}.vdi"
set use_rumpfs 1
set use_serial 0
set use_usb 1
set use_ps2 [have_spec ps2]

View File

@ -234,6 +234,8 @@ for { set i 1} { $i <= $use_vms } { incr i} {
<dir name="dev">
<log/> <rtc/>}
append_if [expr $use_serial] config_of_app { <terminal/> }
append_if [expr !$use_rumpfs] config_of_app {
<block name="sda3" label="raw" block_buffer_count="128" />}
append config_of_app {
@ -280,6 +282,10 @@ source ${genode_dir}/repos/ports/run/virtualbox_auto.inc
# copy vbox configuration to bin directory
exec cp ${genode_dir}/repos/ports/run/${vbox_file} bin/.
if {[info exists use_vcpus]} {
exec sed -i "s/CPU count=\".*\"/CPU count=\"${use_vcpus}\"/g" bin/${vbox_file}
}
if {!$use_rumpfs} {
exec cp ${genode_dir}/repos/ports/run/${raw_image} bin/.
}
@ -292,27 +298,29 @@ build_boot_image $boot_modules
set wait_timeout 70
if {[have_spec foc]} { set wait_timeout 120 }
run_genode_until {\[init -\> vbox.*].*Guest Additions capability report:.*seamless: no, hostWindowMapping: no, graphics: no} $wait_timeout
if {!$use_serial} {
run_genode_until {\[init -\> vbox.*].*Guest Additions capability report:.*seamless: no, hostWindowMapping: no, graphics: no} $wait_timeout
# run_genode_until forever 0 [output_spawn_id]
# run_genode_until forever 0 [output_spawn_id]
if {$use_rumpfs} {
set wait_timeout 170
for { set i 1 } { $i <= $use_vms } { incr i } {
if { [string match "ubuntu*" $flavor] || [string match "win10*" $flavor] } {
run_genode_until {\[init -\> vbox.*].*Guest Additions capability report:.*seamless: yes, hostWindowMapping: no, graphics: no} $wait_timeout [output_spawn_id]
} else {
run_genode_until {\[init -\> vbox.*].*Guest Additions capability report:.*seamless: yes, hostWindowMapping: no, graphics: yes} $wait_timeout [output_spawn_id]
if {$use_rumpfs} {
set wait_timeout 170
for { set i 1 } { $i <= $use_vms } { incr i } {
if { [string match "ubuntu*" $flavor] || [string match "win10*" $flavor] } {
run_genode_until {\[init -\> vbox.*].*Guest Additions capability report:.*seamless: yes, hostWindowMapping: no, graphics: no} $wait_timeout [output_spawn_id]
} else {
run_genode_until {\[init -\> vbox.*].*Guest Additions capability report:.*seamless: yes, hostWindowMapping: no, graphics: yes} $wait_timeout [output_spawn_id]
}
}
} else {
run_genode_until {\[init\] child "vbox1" exited with exit value 0} 60 [output_spawn_id]
# give block driver bit time to write data to disk
sleep 5
}
} else {
run_genode_until {\[init\] child "vbox1" exited with exit value 0} 60 [output_spawn_id]
# give block driver bit time to write data to disk
sleep 5
}
# cleanup bin directory - remove vbox file
exec rm bin/${vbox_file}
if {!$use_rumpfs} {
exec rm bin/${raw_image}
# cleanup bin directory - remove vbox file
exec rm bin/${vbox_file}
if {!$use_rumpfs} {
exec rm bin/${raw_image}
}
}

View File

@ -36,6 +36,7 @@ append build_components {
drivers/framebuffer
}
lappend_if [expr $use_serial] build_components server/log_terminal
lappend_if [expr $use_rumpfs] build_components lib/vfs/rump
lappend_if [expr $use_rumpfs] build_components server/vfs
lappend_if [expr $use_vbox5] build_components virtualbox5
@ -57,6 +58,12 @@ append_platform_drv_build_components
build $build_components
if {$use_rumpfs && !$use_ram_fs} {
set rump_writable true
} else {
set rump_writable false
}
set config {
<config verbose="yes" prio_levels="4">}
@ -142,7 +149,7 @@ append_if [expr $use_rumpfs] config {
append_if [expr $use_rumpfs && $use_ram_fs && $use_overlay_from_disk] config {
<policy label_prefix="overlay_from_disk" root="/ram" writeable="no"/>}
append_if [expr $use_rumpfs] config {
<default-policy root="/" writeable="no"/>
<default-policy root="/" writeable="} $rump_writable {"/>
</config>
<route>
<any-service><child name="part_block"/> <parent/><any-child/></any-service>
@ -350,6 +357,14 @@ append_if [have_spec x86] config {
</provides>
</start>}
append_if [expr $use_serial] config {
<start name="log_terminal" priority="-1">
<resource name="RAM" quantum="2M"/>
<provides>
<service name="Terminal"/>
</provides>
</start>}
append config $config_of_app
append config {
@ -370,6 +385,7 @@ lappend_if [expr $use_rumpfs] boot_modules rump.lib.so
lappend_if [expr $use_rumpfs] boot_modules rump_fs.lib.so
lappend_if [expr $use_rumpfs] boot_modules vfs_rump.lib.so
lappend_if [expr $use_rumpfs] boot_modules vfs
lappend_if [expr $use_serial] boot_modules log_terminal
lappend_if [expr $use_vbox5] boot_modules $virtualbox5_binary
lappend_if [expr $use_ram_fs || $use_usb] boot_modules ram_fs
lappend_if [expr $use_ram_fs && !$use_overlay_from_disk] boot_modules $overlay_image

View File

@ -0,0 +1,99 @@
<?xml version="1.0"?>
<!--
** DO NOT EDIT THIS FILE.
** If you make changes to this file while any VirtualBox related application
** is running, your changes will be overwritten later, without taking effect.
** Use VBoxManage or the VirtualBox Manager GUI to make changes.
-->
<VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.14-linux">
<Machine uuid="{37ab43a5-38d8-4491-93f5-5b0b077f5c32}" name="ubuntu_14_04_32" OSType="Ubuntu" snapshotFolder="Snapshots" lastStateChange="2014-11-14T11:58:35Z">
<MediaRegistry>
<HardDisks>
<HardDisk uuid="{3e7cd33b-a3b0-4497-a801-e9991efc671b}" location="/stress32.vdi" format="VDI" type="Immutable">
<HardDisk uuid="{3602f4e9-9ae4-4da0-94e8-78e197e32297}" location="/ram/overlay_stress32.vdi" format="VDI" autoReset="true"/>
</HardDisk>
</HardDisks>
<DVDImages/>
<FloppyImages/>
</MediaRegistry>
<ExtraData/>
<Hardware version="2">
<CPU count="2" hotplug="false">
<HardwareVirtEx enabled="true"/>
<HardwareVirtExNestedPaging enabled="true"/>
<HardwareVirtExVPID enabled="true"/>
<HardwareVirtExUX enabled="true"/>
<PAE enabled="true"/>
<LongMode enabled="false"/>
<HardwareVirtExLargePages enabled="false"/>
<HardwareVirtForce enabled="false"/>
</CPU>
<Memory RAMSize="1024" PageFusion="false"/>
<HID Pointing="PS2Mouse" Keyboard="PS2Keyboard"/>
<HPET enabled="false"/>
<Chipset type="PIIX3"/>
<Boot>
<Order position="1" device="Floppy"/>
<Order position="2" device="DVD"/>
<Order position="3" device="HardDisk"/>
<Order position="4" device="None"/>
</Boot>
<Display VRAMSize="20" monitorCount="1" accelerate3D="false" accelerate2DVideo="false"/>
<VideoCapture enabled="false" screens="18446744073709551615" horzRes="1024" vertRes="768" rate="512" fps="25"/>
<RemoteDisplay enabled="false" authType="Null"/>
<BIOS>
<ACPI enabled="true"/>
<IOAPIC enabled="true"/>
<Logo fadeIn="true" fadeOut="true" displayTime="0"/>
<BootMenu mode="MessageAndMenu"/>
<TimeOffset value="0"/>
<PXEDebug enabled="false"/>
</BIOS>
<USB>
<Controllers>
<Controller name="OHCI" type="OHCI"/>
</Controllers>
<DeviceFilters/>
</USB>
<Network>
<Adapter slot="0" enabled="true" MACAddress="0800271D7901" cable="true" speed="0" type="82540EM">
<HostInterface/>
<DisabledModes/>
</Adapter>
</Network>
<UART>
<Port slot="0" enabled="true" IOBase="0x3f8" IRQ="4" path="/dev/terminal" hostMode="HostDevice"/>
<Port slot="1" enabled="false" IOBase="0x2f8" IRQ="3" hostMode="Disconnected"/>
</UART>
<LPT>
<Port slot="0" enabled="false" IOBase="0x378" IRQ="7"/>
<Port slot="1" enabled="false" IOBase="0x378" IRQ="7"/>
</LPT>
<AudioAdapter controller="HDA" driver="Pulse" enabled="false"/>
<RTC localOrUTC="UTC"/>
<SharedFolders/>
<Clipboard mode="Disabled"/>
<DragAndDrop mode="Disabled"/>
<IO>
<IoCache enabled="true" size="5"/>
<BandwidthGroups/>
</IO>
<HostPci>
<Devices/>
</HostPci>
<EmulatedUSB>
<CardReader enabled="false"/>
</EmulatedUSB>
<Guest memoryBalloonSize="0"/>
<GuestProperties/>
</Hardware>
<StorageControllers>
<StorageController name="SATA" type="AHCI" PortCount="2" useHostIOCache="true" Bootable="true">
<AttachedDevice type="HardDisk" port="0" device="0">
<Image uuid="{3602f4e9-9ae4-4da0-94e8-78e197e32297}"/>
</AttachedDevice>
<AttachedDevice passthrough="false" type="DVD" port="1" device="0"/>
</StorageController>
</StorageControllers>
</Machine>
</VirtualBox>

View File

@ -0,0 +1,99 @@
<?xml version="1.0"?>
<!--
** DO NOT EDIT THIS FILE.
** If you make changes to this file while any VirtualBox related application
** is running, your changes will be overwritten later, without taking effect.
** Use VBoxManage or the VirtualBox Manager GUI to make changes.
-->
<VirtualBox xmlns="http://www.innotek.de/VirtualBox-settings" version="1.14-linux">
<Machine uuid="{37ab43a5-38d8-4491-93f5-5b0b077f5c32}" name="ubuntu_14_04_64" OSType="Ubuntu" snapshotFolder="Snapshots" lastStateChange="2014-11-14T11:58:35Z">
<MediaRegistry>
<HardDisks>
<HardDisk uuid="{17a1f640-3b95-4618-8f98-9191ec9a3f06}" location="/stress64.vdi" format="VDI" type="Immutable">
<HardDisk uuid="{a6fbbf79-9e47-4ee1-b171-1f2b7e50444d}" location="/ram/overlay_stress64.vdi" format="VDI" autoReset="true"/>
</HardDisk>
</HardDisks>
<DVDImages/>
<FloppyImages/>
</MediaRegistry>
<ExtraData/>
<Hardware version="2">
<CPU count="2" hotplug="false">
<HardwareVirtEx enabled="true"/>
<HardwareVirtExNestedPaging enabled="true"/>
<HardwareVirtExVPID enabled="true"/>
<HardwareVirtExUX enabled="true"/>
<PAE enabled="true"/>
<LongMode enabled="true"/>
<HardwareVirtExLargePages enabled="false"/>
<HardwareVirtForce enabled="false"/>
</CPU>
<Memory RAMSize="1024" PageFusion="false"/>
<HID Pointing="PS2Mouse" Keyboard="PS2Keyboard"/>
<HPET enabled="false"/>
<Chipset type="PIIX3"/>
<Boot>
<Order position="1" device="Floppy"/>
<Order position="2" device="DVD"/>
<Order position="3" device="HardDisk"/>
<Order position="4" device="None"/>
</Boot>
<Display VRAMSize="20" monitorCount="1" accelerate3D="false" accelerate2DVideo="false"/>
<VideoCapture enabled="false" screens="18446744073709551615" horzRes="1024" vertRes="768" rate="512" fps="25"/>
<RemoteDisplay enabled="false" authType="Null"/>
<BIOS>
<ACPI enabled="true"/>
<IOAPIC enabled="true"/>
<Logo fadeIn="true" fadeOut="true" displayTime="0"/>
<BootMenu mode="MessageAndMenu"/>
<TimeOffset value="0"/>
<PXEDebug enabled="false"/>
</BIOS>
<USB>
<Controllers>
<Controller name="OHCI" type="OHCI"/>
</Controllers>
<DeviceFilters/>
</USB>
<Network>
<Adapter slot="0" enabled="true" MACAddress="0800271D7901" cable="true" speed="0" type="82540EM">
<HostInterface/>
<DisabledModes/>
</Adapter>
</Network>
<UART>
<Port slot="0" enabled="true" IOBase="0x3f8" IRQ="4" path="/dev/terminal" hostMode="HostDevice"/>
<Port slot="1" enabled="false" IOBase="0x2f8" IRQ="3" hostMode="Disconnected"/>
</UART>
<LPT>
<Port slot="0" enabled="false" IOBase="0x378" IRQ="7"/>
<Port slot="1" enabled="false" IOBase="0x378" IRQ="7"/>
</LPT>
<AudioAdapter controller="HDA" driver="Pulse" enabled="false"/>
<RTC localOrUTC="UTC"/>
<SharedFolders/>
<Clipboard mode="Disabled"/>
<DragAndDrop mode="Disabled"/>
<IO>
<IoCache enabled="true" size="5"/>
<BandwidthGroups/>
</IO>
<HostPci>
<Devices/>
</HostPci>
<EmulatedUSB>
<CardReader enabled="false"/>
</EmulatedUSB>
<Guest memoryBalloonSize="0"/>
<GuestProperties/>
</Hardware>
<StorageControllers>
<StorageController name="SATA" type="AHCI" PortCount="2" useHostIOCache="true" Bootable="true">
<AttachedDevice type="HardDisk" port="0" device="0">
<Image uuid="{a6fbbf79-9e47-4ee1-b171-1f2b7e50444d}"/>
</AttachedDevice>
<AttachedDevice passthrough="false" type="DVD" port="1" device="0"/>
</StorageController>
</StorageControllers>
</Machine>
</VirtualBox>

View File

@ -0,0 +1,99 @@
#
# Debian 32bit VM cloning Genode git sources, preparing and building pieces
#
assert_spec x86
assert_spec nova
set flavor "stress_32"
set vm_ram "1280M"
set use_vbox5 1
set use_rumpfs 1
set use_ram_fs 1
set use_overlay_from_disk 1
set use_serial 1
set use_usb 0
set use_ps2 [have_spec ps2]
set use_vms 1
set use_cpu_load 0
set output_host ""
set output_host_extra ""
set results_expected { }
set boottime_expected { }
set match_guest_log "\[init -\> log_terminal\]"
set match_boot_string "\[init -\> vbox.*\].*Using VMX virtualization extension"
#set match_guest_down
# use generic vbox5 VMM version
set use_vbox5_nova 0
set vmm_name "vbox5_gen"
set use_vcpus 1
lappend results_expected 1 13 41 80
lappend boottime_expected 21
source ${genode_dir}/repos/ports/run/vbox_win.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
kill_spawned [output_spawn_id]
# set use_vcpus 2
# lappend results_expected 2 10 42 50
# lappend boottime_expected 21
# source ${genode_dir}/repos/ports/run/vbox_win.inc
# source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
# kill_spawned [output_spawn_id]
if {[have_spec nova]} {
# use non-generic vbox5 VMM version
set use_vbox5_nova 1
set vmm_name "vbox5_nova"
set use_vcpus 1
lappend results_expected 1 13 36 78
lappend boottime_expected 26
source ${genode_dir}/repos/ports/run/vbox_win.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
kill_spawned [output_spawn_id]
set use_vcpus 2
lappend results_expected 2 11 35 48
lappend boottime_expected 25
source ${genode_dir}/repos/ports/run/vbox_win.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
kill_spawned [output_spawn_id]
set use_vcpus 3
lappend results_expected 3 9 39 39
lappend boottime_expected 26
source ${genode_dir}/repos/ports/run/vbox_win.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
kill_spawned [output_spawn_id]
set use_vcpus 4
lappend results_expected 4 10 41 34
lappend boottime_expected 27
source ${genode_dir}/repos/ports/run/vbox_win.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
kill_spawned [output_spawn_id]
}
#
# Dump aggregated output of the several runs above
#
grep_output "$match_guest_log.*cpus="
puts $output
set merge_host_output [split $output_host "\n"]
set merge_host_extra [split $output_host_extra "\n"]
for { set i 0 } { $i < [llength $merge_host_output] } { incr i} {
puts "[lindex $merge_host_output $i] [lindex $merge_host_extra $i]"
}
evaluate_stress

View File

@ -0,0 +1,99 @@
#
# Debian 64bit VM cloning Genode git sources, preparing and building pieces
#
assert_spec x86
assert_spec nova
set flavor "stress_64"
set vm_ram "1280M"
set use_vbox5 1
set use_rumpfs 1
set use_ram_fs 1
set use_overlay_from_disk 1
set use_serial 1
set use_usb 0
set use_ps2 [have_spec ps2]
set use_vms 1
set use_cpu_load 0
set output_host ""
set output_host_extra ""
set results_expected { }
set boottime_expected { }
set match_guest_log "\[init -\> log_terminal\]"
set match_boot_string "\[init -\> vbox.*\].*Using VMX virtualization extension"
#set match_guest_down
# use generic vbox5 VMM version
set use_vbox5_nova 0
set vmm_name "vbox5_gen"
set use_vcpus 1
lappend results_expected 1 12 50 79
lappend boottime_expected 21
source ${genode_dir}/repos/ports/run/vbox_win.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
kill_spawned [output_spawn_id]
# set use_vcpus 2
# lappend results_expected 0 0 0 0
# lappend boottime_expected 35
# source ${genode_dir}/repos/ports/run/vbox_win.inc
# source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
# kill_spawned [output_spawn_id]
if {[have_spec nova]} {
# use non-generic vbox5 VMM version
set use_vbox5_nova 1
set vmm_name "vbox5_nova"
set use_vcpus 1
lappend results_expected 1 13 42 76
lappend boottime_expected 25
source ${genode_dir}/repos/ports/run/vbox_win.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
kill_spawned [output_spawn_id]
set use_vcpus 2
lappend results_expected 2 10 37 47
lappend boottime_expected 25
source ${genode_dir}/repos/ports/run/vbox_win.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
kill_spawned [output_spawn_id]
set use_vcpus 3
lappend results_expected 3 10 36 40
lappend boottime_expected 25
source ${genode_dir}/repos/ports/run/vbox_win.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
kill_spawned [output_spawn_id]
set use_vcpus 4
lappend results_expected 4 10 38 35
lappend boottime_expected 26
source ${genode_dir}/repos/ports/run/vbox_win.inc
source ${genode_dir}/repos/ports/run/vmm_vm_stress.inc
kill_spawned [output_spawn_id]
}
#
# Dump aggregated output of the several runs above
#
grep_output "$match_guest_log.*cpus="
puts $output
set merge_host_output [split $output_host "\n"]
set merge_host_extra [split $output_host_extra "\n"]
for { set i 0 } { $i < [llength $merge_host_output] } { incr i} {
puts "[lindex $merge_host_output $i] [lindex $merge_host_extra $i]"
}
evaluate_stress

View File

@ -0,0 +1,119 @@
#!/usr/bin/expect
set current_date [clock format [clock seconds] -format %a]
if {[get_cmd_switch --autopilot] && $current_date != "Sat" && $current_date != "Sun" } {
puts "\n Run script is not supported today on this platform. \n";
exit 0
}
run_genode_until $match_boot_string 40
set t_vm_boot_start [clock seconds]
run_genode_until "$match_guest_log.*git clone" 70 [output_spawn_id]
set t_vm_git_clone [clock seconds]
run_genode_until "$match_guest_log.*prepare ports" 70 [output_spawn_id]
set t_vm_prepare_ports [clock seconds]
run_genode_until "$match_guest_log.*make -j" 200 [output_spawn_id]
set t_vm_make_j [clock seconds]
run_genode_until "$match_guest_log.*make done" 500 [output_spawn_id]
set t_vm_make_done [clock seconds]
run_genode_until "$match_guest_log.*cpus=" 20 [output_spawn_id]
run_genode_until "$match_guest_log.*Done stress.sh" 10 [output_spawn_id]
set t_clone [expr $t_vm_prepare_ports - $t_vm_git_clone]
set t_prepare_ports [expr $t_vm_make_j - $t_vm_prepare_ports]
set t_make [expr $t_vm_make_done - $t_vm_make_j]
set results_end [llength $results_expected]
set result_make [lindex $results_expected [expr $results_end - 1]]
set result_prepare [lindex $results_expected [expr $results_end - 2]]
set result_clone [lindex $results_expected [expr $results_end - 3]]
set output_result "(host-tcl) cpus=$use_vcpus - clone=$t_clone - prepare_port=$t_prepare_ports - make=$t_make"
set output_result_ci "(host) cpus=$use_vcpus - clone=$t_clone,$result_clone - prepare_port=$t_prepare_ports,$result_prepare - make=$t_make,$result_make"
set output_extra "boottimeVM=[expr $t_vm_git_clone - $t_vm_boot_start]"
puts "\n$output_result_ci - $output_extra - $vmm_name\n"
append output_host "$output_result\n"
append output_host_extra "$output_extra\n"
##
# Evaluate results of stress test
#
proc evaluate_stress { } {
global output_host_extra
global output_host
global output
global results_expected
global boottime_expected
set results_boottime [regexp -all -inline {[0-9]+} $output_host_extra]
set results_host [regexp -all -inline {[0-9]+} $output_host]
set results_guest [regexp -all -inline {[0-9]+} $output]
set results_len [llength $results_host]
puts "host results $results_host"
puts "guest results $results_guest"
puts "expected results $results_expected"
puts "boottime host $results_boottime"
puts "boottime expect $boottime_expected"
#
# Sanity check
#
if {$results_len != [llength $results_expected] ||
$results_len != [llength $results_guest] ||
[llength $boottime_expected] != [llength $results_boottime]} {
puts "Result length not as expected"
exit -1
}
set result_miss 0
for { set i 0 } { $i < $results_len } { incr i} {
set res_h [lindex $results_host $i]
set res_g [lindex $results_guest $i]
set res_e [lindex $results_expected $i]
if {$res_h != $res_e || $res_g != $res_e} {
set diff_abs_h [expr abs($res_h - $res_e)]
set diff_abs_g [expr abs($res_g - $res_e)]
switch [expr $i % 4] {
0 {
# the cpu number count must be identical
incr result_miss
}
1 {
# give clone numbers 5s diff
if { $diff_abs_h > 5 || $diff_abs_g > 5 } { incr result_miss }
}
2 {
# give prepare ports 10s diff
if { $diff_abs_h > 10 || $diff_abs_g > 10 } { incr result_miss }
}
3 {
if { $diff_abs_h > 1 || $diff_abs_g > 1 } { incr result_miss }
}
}
}
}
for { set i 0} { $i < $results_len } { incr i} {
set res_h [lindex $results_boottime $i]
set res_e [lindex $boottime_expected $i]
if {$res_h != $res_e} {
set diff_abs [expr abs($res_h - $res_e)]
if { $diff_abs > 1 } { incr result_miss }
}
}
if {$result_miss} {
puts "$result_miss results deviate too much"
}
}

View File

@ -78,6 +78,8 @@ vbox5_win7_64
vbox5_win7_64_multiple
vbox5_win7_64_raw
vbox5_win7_64_share
vm_stress_vbox5-debian32
vm_stress_vbox5-debian64
verify
vfs_import
vmm_arm