@@ -16,31 +16,62 @@ function ASSERT {
1616
1717cleanup
1818
19+ ENABLE_VBLK=1
20+ type dd > /dev/null 2>&1 || ENABLE_VBLK=0
21+ (type mkfs.ext4 > /dev/null 2>&1 || type $( brew --prefix e2fsprogs) /sbin/mkfs.ext4) > /dev/null 2>&1 || ENABLE_VBLK=0
22+ type 7z > /dev/null 2>&1 || ENABLE_VBLK=0
23+
1924TIMEOUT=50
2025OPTS=" -k build/linux-image/Image "
2126OPTS+=" -i build/linux-image/rootfs.cpio "
2227OPTS+=" -b build/minimal.dtb "
28+ if [ " $ENABLE_VBLK " -eq " 1" ]; then
29+ dd if=/dev/zero of=build/disk.img bs=4M count=32
30+ mkfs.ext4 build/disk.img || $( brew --prefix e2fsprogs) /sbin/mkfs.ext4 build/disk.img
31+ OPTS+=" -x vblk:build/disk.img "
32+ else
33+ printf " Virtio-blk Test...Passed\n"
34+ fi
2335RUN_LINUX=" build/rv32emu ${OPTS} "
2436
37+ if [ " $ENABLE_VBLK " -eq " 1" ]; then
38+ ASSERT expect << DONE
39+ set timeout ${TIMEOUT}
40+ spawn ${RUN_LINUX}
41+ expect "buildroot login:" { send "root\n" } timeout { exit 1 }
42+ expect "# " { send "uname -a\n" } timeout { exit 2 }
43+ expect "riscv32 GNU/Linux" { send "mkdir mnt && mount /dev/vda mnt\n" } timeout { exit 3 }
44+ expect "# " { send "echo rv32emu > mnt/emu.txt\n" } timeout { exit 3 }
45+ expect "# " { send "sync\n" } timeout { exit 3 }
46+ expect "# " { send "umount mnt\n" } timeout { exit 3 }
47+ expect "# " { send "\x01"; send "x" } timeout { exit 3 }
48+ DONE
49+ else
2550ASSERT expect << DONE
2651set timeout ${TIMEOUT}
2752spawn ${RUN_LINUX}
2853expect "buildroot login:" { send "root\n" } timeout { exit 1 }
2954expect "# " { send "uname -a\n" } timeout { exit 2 }
3055expect "riscv32 GNU/Linux" { send "\x01"; send "x" } timeout { exit 3 }
3156DONE
32-
57+ fi
3358ret=$?
3459cleanup
3560
3661MESSAGES=(" OK!" \
3762 " Fail to boot" \
3863 " Fail to login" \
3964 " Fail to run commands" \
65+ " Fail to found emu.txt in disk.img" \
4066)
4167
4268COLOR_G=' \e[32;01m' # Green
4369COLOR_N=' \e[0m' # No color
44- printf " \n[ ${COLOR_G}${MESSAGES[$ret]}${COLOR_N} ]\n"
70+ printf " \nBoot Linux Test: [ ${COLOR_G}${MESSAGES[$ret]}${COLOR_N} ]\n"
71+ if [ " $ENABLE_VBLK " -eq " 1" ]; then
72+ file_list=` 7z l build/disk.img`
73+ (echo $file_list | grep emu.txt) || ret=4
74+ printf " Virtio-blk Test: [ ${COLOR_G}${MESSAGES[$ret]}${COLOR_N} ]\n"
75+ fi
4576
4677exit ${ret}
0 commit comments