mirror of
https://github.com/mmueller41/genode.git
synced 2026-01-21 20:42:56 +01:00
The pattern "Test succeeded" is relied on by the automated testing framework. We need to use it consistently to avoid false negatives.
150 lines
3.5 KiB
Tcl
150 lines
3.5 KiB
Tcl
#
|
|
# \brief Test for using the Block (Storage) service of usb_drv
|
|
# \author Christian Prochaska
|
|
# \date 2011-06-24
|
|
#
|
|
|
|
#
|
|
# Build
|
|
#
|
|
|
|
set build_components {
|
|
core init
|
|
drivers/timer
|
|
drivers/usb
|
|
test/blk/cli
|
|
}
|
|
|
|
lappend_if [have_spec acpi] build_components drivers/acpi
|
|
lappend_if [have_spec pci] build_components drivers/pci
|
|
lappend_if [have_spec pci] build_components drivers/pci/device_pd
|
|
lappend_if [have_spec platform_arndale] build_components drivers/platform
|
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
|
|
|
build $build_components
|
|
|
|
create_boot_directory
|
|
|
|
#
|
|
# Generate config
|
|
#
|
|
|
|
set config {
|
|
<config verbose="yes">
|
|
<parent-provides>
|
|
<service name="ROM"/>
|
|
<service name="RAM"/>
|
|
<service name="IRQ"/>
|
|
<service name="IO_MEM"/>
|
|
<service name="IO_PORT"/>
|
|
<service name="CAP"/>
|
|
<service name="PD"/>
|
|
<service name="RM"/>
|
|
<service name="CPU"/>
|
|
<service name="LOG"/>
|
|
<service name="SIGNAL"/>
|
|
</parent-provides>
|
|
<default-route>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</default-route>}
|
|
|
|
append_if [have_spec acpi] config {
|
|
<start name="acpi">
|
|
<resource name="RAM" quantum="8M"/>
|
|
<binary name="acpi_drv"/>
|
|
<provides>
|
|
<service name="PCI"/>
|
|
<service name="IRQ" />
|
|
</provides>
|
|
<route>
|
|
<service name="PCI"> <any-child /> </service>
|
|
<any-service> <parent/> <any-child /> </any-service>
|
|
</route>
|
|
</start>}
|
|
|
|
append_if [expr ![have_spec acpi] && [have_spec pci]] config {
|
|
<start name="pci_drv">
|
|
<resource name="RAM" quantum="5M"/>
|
|
<provides><service name="PCI"/></provides>
|
|
</start>}
|
|
|
|
append_if [have_spec platform_arndale] config {
|
|
<start name="platform_drv">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Regulator"/></provides>
|
|
</start>}
|
|
|
|
append_if [have_spec gpio] config {
|
|
<start name="gpio_drv">
|
|
<resource name="RAM" quantum="4M"/>
|
|
<provides><service name="Gpio"/></provides>
|
|
<config/>
|
|
</start>}
|
|
|
|
append config {
|
|
<start name="timer">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides> <service name="Timer"/> </provides>
|
|
</start>
|
|
<start name="usb_drv">
|
|
<resource name="RAM" quantum="12M"/>
|
|
<provides> <service name="Block"/> </provides>
|
|
<config uhci="yes" ehci="yes" xhci="yes"><storage /></config>
|
|
</start>
|
|
<start name="test-usb">
|
|
<resource name="RAM" quantum="2M" />
|
|
<binary name="test-blk-cli" />
|
|
</start>
|
|
</config>
|
|
}
|
|
install_config $config
|
|
|
|
#
|
|
# Boot modules
|
|
#
|
|
|
|
# generic modules
|
|
set boot_modules {
|
|
core init timer usb_drv test-blk-cli
|
|
}
|
|
|
|
lappend_if [have_spec acpi] boot_modules acpi_drv
|
|
lappend_if [have_spec pci] boot_modules pci_drv
|
|
lappend_if [have_spec nova] boot_modules pci_device_pd
|
|
lappend_if [have_spec platform_arndale] boot_modules platform_drv
|
|
|
|
build_boot_image $boot_modules
|
|
|
|
#
|
|
# Execute test case
|
|
#
|
|
set disk_image "bin/test.img"
|
|
set cmd "dd if=/dev/zero of=$disk_image bs=1024 count=65536"
|
|
puts "creating disk image:\n$cmd"
|
|
catch { exec sh -c $cmd }
|
|
|
|
set cmd "mkfs.vfat -F32 $disk_image"
|
|
puts "formating disk image with vfat file system:\$cmd"
|
|
catch { exec sh -c $cmd }
|
|
|
|
#
|
|
# Qemu opts for UHCI
|
|
#
|
|
#append qemu_args " -m 64 -nographic -usbdevice disk::$disk_image -boot order=d"
|
|
|
|
#
|
|
# Qemu opts for EHCI
|
|
#
|
|
append qemu_args "-drive if=none,id=disk,file=$disk_image"
|
|
append qemu_args { \
|
|
-m 64 -nographic -M pc \
|
|
-device usb-ehci,id=ehci \
|
|
-device usb-storage,bus=ehci.0,drive=disk \
|
|
-boot order=d }
|
|
|
|
run_genode_until {.*child exited with exit value 0.*} 100
|
|
|
|
puts "\nTest succeeded\n"
|
|
|
|
# vi: set ft=tcl :
|