mirror of https://github.com/CIRCL/Circlean
				
				
				
			Merge branch 'tests'
						commit
						4560bccbc6
					
				|  | @ -0,0 +1,39 @@ | |||
| Expectations | ||||
| ============ | ||||
| 
 | ||||
| Having a way to run after each commit a test on a list of samples and check if | ||||
| the output and the logs are the ones expected by. | ||||
| Easy way to check it on the rPi itself before releases. | ||||
| 
 | ||||
| 
 | ||||
| What to think about | ||||
| =================== | ||||
| 
 | ||||
| * Exhaustive list of files, edge cases | ||||
| * Check the logfiles | ||||
| 
 | ||||
| Ideas | ||||
| ===== | ||||
| 
 | ||||
| Source keys: | ||||
| - Working documents, one / multiple partitions | ||||
| - Non working documents: one / multiple partitions | ||||
| - different FS on different partitions | ||||
| - Non working FS | ||||
| - Malicious documents (very slow, might break the conversions) | ||||
| 
 | ||||
| Destinations keys | ||||
| - empty, big enough | ||||
| - empty, too small | ||||
| - broken | ||||
| - not empty | ||||
| - unmountable (wrong/broken fs) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| Things to try out | ||||
| ================= | ||||
| 
 | ||||
| 
 | ||||
| Run the image in qemu, process USB keys from there | ||||
| 
 | ||||
|  | @ -0,0 +1,46 @@ | |||
| #!/bin/bash | ||||
| # Doc: http://wiki.osdev.org/Loopback_Device | ||||
| 
 | ||||
| 
 | ||||
| set -e | ||||
| set -x | ||||
| 
 | ||||
| # User | ||||
| #FS_EXT='ext2 ext3 ext4' | ||||
| FS_VFAT='vfat' | ||||
| #FS_NTFS='ntfs' | ||||
| SIZE_MB='128' | ||||
| 
 | ||||
| # System | ||||
| FS="${FS_EXT} ${FS_VFAT} ${FS_NTFS}" | ||||
| 
 | ||||
| 
 | ||||
| for f in $FS; do | ||||
|     # Create files of 128Mb | ||||
|     OUT_NAME_NORM="testcase."${f} | ||||
|     OUT_NAME_PART="testcase.part."${f} | ||||
|     dd if=/dev/zero of=${OUT_NAME_NORM} bs=516096c count=200 | ||||
|     dd if=/dev/zero of=${OUT_NAME_PART} bs=516096c count=200 | ||||
|     parted -s ${OUT_NAME_NORM} mklabel msdos | ||||
|     parted -s ${OUT_NAME_PART} mklabel msdos | ||||
|     if [ $f = ${FS_VFAT} ]; then | ||||
|         parted -s ${OUT_NAME_PART} mkpart primary 8192s 122879s | ||||
|         parted -s ${OUT_NAME_PART} mkpart primary 122880s 201599s | ||||
|         parted -s ${OUT_NAME_NORM} mkpart primary 8192s 201599s | ||||
|         lo=`losetup -f` | ||||
|         losetup -o$((8192 * 512)) ${lo} ${OUT_NAME_PART} | ||||
|         mkfs.${f} ${lo} 57344 | ||||
|         losetup -d ${lo} | ||||
|         losetup -o$((122880 * 512)) ${lo} ${OUT_NAME_PART} | ||||
|         mkfs.${f} ${lo} 39360 | ||||
|         losetup -d ${lo} | ||||
|         losetup -o$((8192 * 512)) ${lo} ${OUT_NAME_NORM} | ||||
|         mkfs.${f} ${lo} | ||||
|         losetup -d ${lo} | ||||
|     elif [ $f = ${FS_NTFS} ]; then | ||||
|         mk${f} -f -F ${OUT_NAME} | ||||
|     else | ||||
|         mkfs.${f} -F ${OUT_NAME} | ||||
|     fi | ||||
| done | ||||
| 
 | ||||
|  | @ -0,0 +1,20 @@ | |||
| #!/usr/bin/expect -f | ||||
| 
 | ||||
| set timeout -1 | ||||
| 
 | ||||
| spawn qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb \ | ||||
|     -watchdog i6300esb -watchdog-action poweroff \ | ||||
|     -serial stdio -append "root=/dev/sdc2 panic=1 rootfstype=ext4 ro console=ttyAMA0 console=ttyS0" \ | ||||
|     -drive file=[lindex $argv 1],index=0,media=disk \ | ||||
|     -drive file=[lindex $argv 2],index=1,media=disk \ | ||||
|     -drive file=[lindex $argv 0],index=2,media=disk \ | ||||
|     -vnc 0.0.0.0:1 \ | ||||
|     -serial stdio \ | ||||
|     -soundhw all \ | ||||
|     -chardev stdio,id=mon0 -mon chardev=mon0,mode=readline \ | ||||
|     -chardev socket,id=mon1,host=localhost,port=4444,server,nowait \ | ||||
|     -mon chardev=mon1,mode=control,pretty=on | ||||
| 
 | ||||
| expect "System halted." | ||||
| 
 | ||||
| send "quit\n" | ||||
|  | @ -0,0 +1,57 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| # http://xecdesign.com/qemu-emulating-raspberry-pi-the-easy-way/ | ||||
| 
 | ||||
| IMAGE='../2014-01-07-wheezy-raspbian.img' | ||||
| OFFSET_ROOTFS=$((122880 * 512)) | ||||
| 
 | ||||
| IMAGE_VFAT_NORM="testcase.vfat" | ||||
| OFFSET_VFAT_NORM=$((8192 * 512)) | ||||
| 
 | ||||
| IMAGE_VFAT_PART="testcase.part.vfat" | ||||
| OFFSET_VFAT_PART1=$((8192 * 512)) | ||||
| OFFSET_VFAT_PART2=$((122880 * 512)) | ||||
| 
 | ||||
| IMAGE_DEST="testcase_dest.vfat" | ||||
| 
 | ||||
| if [ "$(id -u)" != "0" ]; then | ||||
|    echo "This script must be run as root" 1>&2 | ||||
|    exit 1 | ||||
| fi | ||||
| 
 | ||||
| set -e | ||||
| set -x | ||||
| 
 | ||||
| SETUP_DIR="setup" | ||||
| 
 | ||||
| clean(){ | ||||
|     mount -o loop,offset=${OFFSET_ROOTFS} ${IMAGE} ${SETUP_DIR} | ||||
|     mv ${SETUP_DIR}/etc/ld.so.preload_bkp ${SETUP_DIR}/etc/ld.so.preload | ||||
|     umount ${SETUP_DIR} | ||||
|     rm -rf ${SETUP_DIR} | ||||
| } | ||||
| 
 | ||||
| trap clean EXIT TERM INT | ||||
| 
 | ||||
| mkdir -p ${SETUP_DIR} | ||||
| 
 | ||||
| # make the CIRCLean image compatible with qemu | ||||
| mount -o loop,offset=${OFFSET_ROOTFS} ${IMAGE} ${SETUP_DIR} | ||||
| mv ${SETUP_DIR}/etc/ld.so.preload ${SETUP_DIR}/etc/ld.so.preload_bkp | ||||
| umount ${SETUP_DIR} | ||||
| 
 | ||||
| # Prepare the test source key | ||||
| mount -o loop,offset=${OFFSET_VFAT_NORM} ${IMAGE_VFAT_NORM} ${SETUP_DIR} | ||||
| cp content_img_vfat_norm/* ${SETUP_DIR} | ||||
| umount ${SETUP_DIR} | ||||
| # Prepare the test source key (with partitions) | ||||
| mount -o loop,offset=${OFFSET_VFAT_PART1} ${IMAGE_VFAT_PART} ${SETUP_DIR} | ||||
| cp content_img_vfat_part1/* ${SETUP_DIR} | ||||
| umount ${SETUP_DIR} | ||||
| mount -o loop,offset=${OFFSET_VFAT_PART2} ${IMAGE_VFAT_PART} ${SETUP_DIR} | ||||
| cp content_img_vfat_part2/* ${SETUP_DIR} | ||||
| umount ${SETUP_DIR} | ||||
| 
 | ||||
| ./run.exp ${IMAGE} ${IMAGE_VFAT_NORM} ${IMAGE_DEST} | ||||
| #./run.exp ${IMAGE} ${IMAGE_VFAT_PART} ${IMAGE_DEST} | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue
	
	 Raphaël Vinot
						Raphaël Vinot