#!/bin/bash
set -e

. _common
## file system
normal_fs="ext2 ext3 ext4 vfat exfat"
featured_fs="$normal_fs jfs xfs reiserfs hfsplus"
extra_fs="$featured_fs ufs vmfs reiser4 ntfs btrfs"

manual_fs=$1

test_fs=$featured_fs
dd_count=$normal_size
[ -z $manual_fs ] || test_fs=$manual_fs

#main
for fs in $test_fs; do
    
    ptlfs=$(_ptlname $fs)
    mkfs=$(_findmkfs $fs)
    echo "create raw file $raw"
    _ptlbreak
    [ -f $raw ] && rm $raw
    echo "dd if=/dev/zero of=$raw bs=$dd_bs count=$dd_count"
    dd if=/dev/zero of=$raw bs=$dd_bs count=$dd_count

    echo "format $raw as $fs raw partition"
    echo "mkfs.$fs `eval echo "$"mkfs_option_for_$fs""` $raw"
    _ptlbreak
    $mkfs `eval echo "$"mkfs_option_for_$fs""` $raw

    echo "clone $raw to $img"
    [ -f $img ] && rm $img
    echo "$ptlfs -d -c -s $raw -O $img -F -L $logfile"
    _ptlbreak
    $ptlfs -d -c -s $raw -O $img -F -L $logfile
    _check_return_code

    echo "do image checking"
    echo "$ptlchkimg -s $img -L $logfile"
    _ptlbreak
    $ptlchkimg -s $img -L $logfile
    _check_return_code

    echo "create raw file $raw for restore"
    _ptlbreak
    [ -f $raw ] && rm $raw
    echo "dd if=/dev/zero of=$raw bs=$dd_bs count=$dd_count"
    dd if=/dev/zero of=$raw bs=$dd_bs count=$dd_count

    echo "restore $img to $raw"
    echo "$ptlrestore -s $img -O $raw -C -F -L $logfile"
    _ptlbreak
    $ptlrestore -s $img -O $raw -C -F -L $logfile
    _check_return_code

    echo "$fs test ok"
    echo "clear tmp files $img $raw $logfile $md5"
    _ptlbreak
    rm -f $img $raw $logfile $md5

done
