qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

run_test.sh (2742B)


      1 #!/usr/bin/env bash
      2 
      3 # Copyright (c) 2013 Kevin Wolf <kwolf@redhat.com>
      4 #
      5 # Permission is hereby granted, free of charge, to any person obtaining a copy
      6 # of this software and associated documentation files (the "Software"), to deal
      7 # in the Software without restriction, including without limitation the rights
      8 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      9 # copies of the Software, and to permit persons to whom the Software is
     10 # furnished to do so, subject to the following conditions:
     11 #
     12 # The above copyright notice and this permission notice shall be included in
     13 # all copies or substantial portions of the Software.
     14 #
     15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     16 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     17 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
     18 # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     19 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     20 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     21 # THE SOFTWARE.
     22 
     23 QEMU=${QEMU:-"../../qemu-system-x86_64"}
     24 
     25 run_qemu() {
     26     local kernel=$1
     27     shift
     28 
     29     printf %b "\n\n=== Running test case: $kernel $* ===\n\n" >> test.log
     30 
     31     $QEMU \
     32         -kernel $kernel \
     33         -display none \
     34         -device isa-debugcon,chardev=stdio \
     35         -chardev file,path=test.out,id=stdio \
     36         -device isa-debug-exit,iobase=0xf4,iosize=0x4 \
     37         "$@" >> test.log 2>&1
     38     ret=$?
     39 
     40     cat test.out >> test.log
     41 
     42     debugexit=$((ret & 0x1))
     43     ret=$((ret >> 1))
     44 
     45     if [ $debugexit != 1 ]; then
     46         printf %b "\e[31m ?? \e[0m $kernel $* (no debugexit used, exit code $ret)\n"
     47         pass=0
     48     elif [ $ret != 0 ]; then
     49         printf %b "\e[31mFAIL\e[0m $kernel $* (exit code $ret)\n"
     50         pass=0
     51     fi
     52 }
     53 
     54 mmap() {
     55     run_qemu mmap.elf
     56     run_qemu mmap.elf -m 1.1M
     57     run_qemu mmap.elf -m 2G
     58     run_qemu mmap.elf -m 4G
     59     run_qemu mmap.elf -m 8G
     60 }
     61 
     62 modules() {
     63     run_qemu modules.elf
     64     run_qemu modules.elf -initrd module.txt
     65     run_qemu modules.elf -initrd "module.txt argument"
     66     run_qemu modules.elf -initrd "module.txt argument,,with,,commas"
     67     run_qemu modules.elf -initrd "module.txt,module.txt argument,module.txt"
     68 }
     69 
     70 aout_kludge() {
     71     for i in $(seq 1 9); do
     72         run_qemu aout_kludge_$i.bin
     73     done
     74 }
     75 
     76 make all
     77 
     78 for t in mmap modules aout_kludge; do
     79 
     80     echo > test.log
     81     pass=1
     82     $t
     83 
     84     if ! diff $t.out test.log > /dev/null 2>&1; then
     85         printf %b "\e[31mFAIL\e[0m $t (output difference)\n"
     86         diff -u $t.out test.log
     87         pass=0
     88     fi
     89 
     90     if [ $pass == 1 ]; then
     91         printf %b "\e[32mPASS\e[0m $t\n"
     92     fi
     93 
     94 done