From 2891653f8a454c67c10ee743e71b81cb4f9dfc0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Mon, 25 Nov 2013 16:01:49 +0100 Subject: [PATCH] libports: reuse libc_ffat as skeleton for fs tests In addition, file-system tests will use the AHCI driver instead of the ATAPI driver. This change side-steps certain issues with Qemu's IDE emulation. Fixes #942. --- libports/run/libc_ffat.run | 181 +-------------------- libports/run/libc_filesystem_test.inc | 216 ++++++++++++++++++++++++++ 2 files changed, 220 insertions(+), 177 deletions(-) create mode 100644 libports/run/libc_filesystem_test.inc diff --git a/libports/run/libc_ffat.run b/libports/run/libc_ffat.run index 8cfb3f9de6..7cc6c89f6a 100644 --- a/libports/run/libc_ffat.run +++ b/libports/run/libc_ffat.run @@ -1,178 +1,5 @@ -# -# \brief Test for using the libc_ffat plugin -# \author Christian Prochaska -# \date 2011-05-27 -# +set mkfs_cmd mkfs.vfat +set mkfs_opts "-F32" +set filesystem ffat -set use_sd_card_drv [expr [have_spec omap4] || [have_spec exynos5] || [have_spec pl180]] -set use_atapi_drv [have_spec x86] - -if {[catch { exec which mkfs.vfat } ]} { - puts stderr "Error: mkfs.vfat not installed, aborting test"; exit } - -if {[have_spec linux]} { - puts "Run script does not support this platform"; exit } - -if {[expr [have_spec 64bit] && $use_atapi_drv]} { - puts "ATAPI driver does not support 64 bit."; exit 0 } - -if {![is_qemu_available]} { - puts "\nPlease setup your native sd or hard drive. Remove this fail stop"; - puts "check when you have prepared your native environment.\n"; - exit 0 -} - -if {[have_spec x86]} { - set qemu "qemu-system-i386" - if {[have_spec 64bit]} { set qemu "qemu-system-x86_64" } - - set version [exec $qemu --version] - set version [regexp -inline {[0-9]+\.[0-9]+\.[0-9]+} $version] - - if {$version >= 1.5} { - puts "Atapi driver on Qemu $version known to be not working."; - puts "For more details see Genode issue 827 on github"; - - puts stderr "Test requires 'fix for issue 827'" - exit 0; - } -} - -# -# Build -# - -set build_components { - core init - drivers/timer - test/libc_ffat -} - -lappend_if [have_spec pci] build_components drivers/pci -lappend_if [have_spec acpi] build_components drivers/acpi -lappend_if $use_atapi_drv build_components drivers/atapi -lappend_if $use_sd_card_drv build_components drivers/sd_card - -build $build_components -create_boot_directory - -# -# Generate config -# - -set config { - - - - - - - - - - - - - - - - - - - - - - - - - - - -} - -append_if [have_spec acpi] config { - - - - - - - - - - - - } - -append_if [expr ![have_spec acpi] && [have_spec pci]] config { - - - - } - -append_if $use_atapi_drv config { - - - - - -} - -append_if $use_sd_card_drv config { - - - - -} - -append config { - -} - -install_config $config - -# -# Boot modules -# - -# generic modules -set boot_modules { - core init timer - ld.lib.so libc.lib.so libc_log.lib.so libc_ffat.lib.so - test-libc_ffat -} - -lappend_if [have_spec pci] boot_modules pci_drv -lappend_if [have_spec acpi] boot_modules acpi_drv -lappend_if $use_atapi_drv boot_modules atapi_drv -lappend_if $use_sd_card_drv boot_modules sd_card_drv - -build_boot_image $boot_modules - -# -# Execute test case -# - -set disk_image "bin/test.hda" -set cmd "dd if=/dev/zero of=$disk_image bs=1024 count=65536" -puts "creating disk image: $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 -# -append qemu_args " -m 128 -nographic " -append_if $use_atapi_drv qemu_args " -hda $disk_image -boot order=d " -append_if $use_sd_card_drv qemu_args " -drive file=$disk_image,if=sd,cache=writeback " - -run_genode_until {.*child exited with exit value 0.*} 60 - -exec rm -f $disk_image - -puts "\nTest succeeded\n" - -# vi: set ft=tcl : +source ${genode_dir}/libports/run/libc_filesystem_test.inc diff --git a/libports/run/libc_filesystem_test.inc b/libports/run/libc_filesystem_test.inc new file mode 100644 index 0000000000..851d20ab0d --- /dev/null +++ b/libports/run/libc_filesystem_test.inc @@ -0,0 +1,216 @@ +# +# \brief Test for using the libc_ffat plugin +# \author Christian Prochaska +# \date 2011-05-27 +# + +# use SD on ARM +set use_sd_card_drv [expr [have_spec omap4] || [have_spec exynos5] || [have_spec pl180]] + +# use ATAPI on x86 (deprecated) +#set use_atapi_drv [have_spec x86] +#set use_ahci 0 + +# use AHCI on x86 +set use_ahci [have_spec x86] +set use_atapi_drv 0 + + +if {[expr $use_atapi_drv && $use_ahci]} { + puts "Usage of atapi and ahci is exclusive - choose one." + exit 1 +} + +if {[catch { exec which $mkfs_cmd } ]} { + puts stderr "Error: $mkfs_cmd not installed, aborting test"; exit } + +if {[have_spec linux]} { + puts "Run script does not support this platform"; exit } + +if {[expr [have_spec 64bit] && $use_atapi_drv]} { + puts "ATAPI driver does not support 64 bit."; exit 0 } + +if {![is_qemu_available]} { + puts "\nPlease setup your native sd or hard drive. Remove this fail stop"; + puts "check when you have prepared your native environment.\n"; + exit 0 +} + +if {[have_spec x86]} { + set qemu "qemu-system-i386" + if {[have_spec 64bit]} { set qemu "qemu-system-x86_64" } + + set version [exec $qemu --version] + set version [regexp -inline {[0-9]+\.[0-9]+\.[0-9]+} $version] + + if {$version >= 1.5} { + puts "Atapi driver on Qemu $version known to be not working."; + puts "For more details see Genode issue 827 on github"; + + puts stderr "Test requires 'fix for issue 827'" + exit 0; + } +} + +# +# Build +# + +set build_components { + core init + drivers/timer + test/libc_block +} + +lappend build_components test/libc_$filesystem + +lappend_if [have_spec pci] build_components drivers/pci +lappend_if [have_spec acpi] build_components drivers/acpi +lappend_if $use_ahci build_components drivers/ahci +lappend_if $use_atapi_drv build_components drivers/atapi +lappend_if $use_sd_card_drv build_components drivers/sd_card + +build $build_components +create_boot_directory + +# +# Generate config +# + +set config { + + + + + + + + + + + + + + + + + + + + + } +append config " + " +append config { + + + + + +} + +append_if [have_spec acpi] config { + + + + + + + + + + + + } + +append_if [expr ![have_spec acpi] && [have_spec pci]] config { + + + + } + +append_if $use_atapi_drv config { + + + + + +} + +append_if $use_ahci config { + + + + + } + +append_if [expr $use_ahci && [have_spec acpi]] config { + } +append_if $use_ahci config { + + + } + +append_if $use_sd_card_drv config { + + + + +} + +append config { + +} + +install_config $config + +# +# Boot modules +# + +# generic modules +set boot_modules { + core init timer + ld.lib.so libc.lib.so libc_log.lib.so libc_block.lib.so +} + +append boot_modules test-libc_$filesystem +append boot_modules " " +append boot_modules libc_$filesystem.lib.so + +lappend_if [have_spec pci] boot_modules pci_drv +lappend_if [have_spec acpi] boot_modules acpi_drv +lappend_if $use_atapi_drv boot_modules atapi_drv +lappend_if $use_ahci boot_modules ahci +lappend_if $use_sd_card_drv boot_modules sd_card_drv + +build_boot_image $boot_modules + +# +# Execute test case +# + +set disk_image "bin/test.hda" +set cmd "dd if=/dev/zero of=$disk_image bs=1024 count=65536" +puts "creating disk image: $cmd" +catch { exec sh -c $cmd } + +set cmd "$mkfs_cmd $mkfs_opts $disk_image" +puts "formating disk: $cmd" +catch { exec sh -c $cmd } + +# +# Qemu +# +append qemu_args " -m 128 -nographic " +append_if $use_atapi_drv qemu_args " -hda $disk_image -boot order=d " +append_if $use_ahci qemu_args " -drive id=disk,file=$disk_image,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0 -boot d" +append_if $use_sd_card_drv qemu_args " -drive file=$disk_image,if=sd,cache=writeback " + +run_genode_until {.*child exited with exit value 0.*} 60 + +exec rm -f $disk_image + +puts "\nTest succeeded\n" + +# vi: set ft=tcl :