#!/bin/sh # # reiserfs testing functions # Copyright (C) 2001, 2002 Yury Umanets , see COPYING for # licensing and copyright details. . $(dirname $0)/functions pdf() { gnudf="`df --version 2>/dev/null`" [ ! -z "$gnudf" ] && df -P $* && return 0 [ $(uname) = "SunOS" ] && df -k $* && return 0 } do_loop() { loop=$1 if [ ! -x /bin/dd ]; then echo "Couldn't find /bin/dd program" return 1 fi /bin/dd if=/dev/zero of=$loop bs=1024 count=102400 return $? } do_examine() { size=$1 available=$(pdf /tmp | awk '{print $4}' | tail -1) if [ $available -ge $size ]; then return 0 else return 1 fi } do_init() { local loop1=$1 local loop2=$2 do_loop $loop1 || return 1 do_loop $loop2 || return 1 return $? } do_cleanup() { local loop1=$1 local loop2=$2 rm -f $loop1 > /dev/null 2>&1 rm -f $loop2 > /dev/null 2>&1 return $? } do_test() { local format=$1 local loop1=$2 local loop2=$3 for bs in 1024 2048 4096 8192; do test_mkfs -f$format -b$bs $loop1 || { failure "mkfs -f$format -b$bs $loop1 for blocksize $bs and version $format" echo "Couldn't create reiserfs $format. All subtests will be skipped." continue } check $loop1 || { failure "mkfs -f$format -b$bs $loop1 for blocksize $bs and version $format" echo "Filesystem isn't correct. All tests will be skipped." continue } test_dir $loop1 || { failure "ls $loop1 / for blocksize $bs and version $format" echo "Dir tests on empty filesystem failed." } test_lookup $loop1 1 2 || { failure "lookup $loop1 1 2 for blocksize $bs and version $format" echo "Looking up for root leaf failed." } test_resizefs $loop1 0M 70M || { failure "resizefs $loop1 70M for blocksize $bs and version $format" echo "Couldn't shrink reiserfs $format to 70M. Tests will be skipped." continue } check $loop1 || { failure "resizefs $loop1 70M for blocksize $bs and version $format" echo "Filesystem isn't correct. All tests will be skipped." continue } test_resizefs -f $loop1 0M 5M || { failure "resizefs -f $loop1 5M for blocksize $bs and version $format" echo "Couldn't shrink reiserfs $format to minimum size. Tests will be skipped." continue } check $loop1 || { failure "resizefs -f $loop1 5M for blocksize $bs and version $format" echo "Filesystem isn't correct. All tests will be skipped." continue } test_resizefs $loop1 0M 100M || { failure "resizefs $loop1 100M for blocksize $bs and version $format" echo "Couldn't resize reiserfs $format to 100M. Tests will be skipped." continue } check $loop1 || { failure "resizefs $loop1 100M for blocksize $bs and version $format" echo "Filesystem isn't correct. All tests will be skipped." continue } test_tunefs -s8195 $loop1 || { failure "tunefs -s8195 $loop1 for blocksize $bs and version $format" echo "Couldn't resize standard journal" continue } check $loop1 || { failure "tunefs -s8195 $loop1 for blocksize $bs and version $format" echo "Filesystem isn't correct. All tests will be skipped." continue } test_tunefs -s8192 $loop1 || { failure "tunefs -s8192 $loop1 for blocksize $bs and version $format" echo "Couldn't resize standard journal" continue } check $loop1 || { failure "tunefs -s8192 $loop1 for blocksize $bs and version $format" echo "Filesystem isn't correct. All tests will be skipped." continue } test_cpfs $loop1 $loop2 || { failure "cpfs $loop1 $loop2 for blocksize $bs and version $format" echo "Couldn't copy reiserfs $format. Tests will be skipped." continue } check $loop2 || { failure "cpfs $loop1 $loop2 for blocksize $bs and version $format" echo "Filesystem isn't correct. All tests will be skipped." continue } [ "$format" = "3.6" ] && { test_label -lprogsreiserfs $loop1 || { failure "tunefs -lprogsreiserfs $loop1 for blocksize $bs and version $format" echo "Tune tests for reiserfs $format are failed." continue } action "Checking tunning results" check_label $loop1 "progsreiserfs" check $loop2 || { failure "tunefs -lprogsreiserfs $loop1 for blocksize $bs and version $format" echo "Filesystem isn't correct. All tests will be skipped." continue } } test_mkfs -f$format -b$bs -j$loop2 $loop1 || { failure "mkfs -f$format -b$bs -j$loop2 $loop1 for blocksize $bs and version $format" echo "Couldn't create reiserfs $format with relocated journal. All subtests will be skipped." continue } check -j$loop2 $loop1 || { failure "mkfs -f$format -b$bs -j$loop2 $loop1 for blocksize $bs and version $format" echo "Filesystem isn't correct. All tests will be skipped." continue } test_tunefs -j$loop2 -d$loop1 $loop1 || { failure "tunefs -j$loop2 -d$loop1 $loop1 for blocksize $bs and version $format" echo "Couldn't switch reiserfs $format into standard journal mode. All subtests will be skipped." continue } check $loop1 || { failure "tunefs -j$loop2 -d$loop1 $loop1 for blocksize $bs and version $format" echo "Filesystem isn't correct. All tests will be skipped." continue } test_tunefs -d$loop2 $loop1 || { failure "tunefs -d$loop2 $loop1 for blocksize $bs and version $format" echo "Couldn't switch reiserfs $format into relocated journal mode. All subtests will be skipped." continue } check -j$loop2 $loop1 || { failure "tunefs -d$loop2 $loop1 for blocksize $bs and version $format" echo "Filesystem isn't correct. All tests will be skipped." continue } done return $? } # Initialization dev1="/tmp/loop-dev1" dev2="/tmp/loop-dev2" case $(uname) in "Linux");; "SunOS");; "FreeBSD");; *) echo "$(uname) not supported" exit 1 ;; esac [ ! -x $tests_home/../progsreiserfs/mkfs/mkfs.reiserfs ] && { echo "Couldn't find built utilities. Possible you forgot to build progsreiserfs." exit 1 } do_cleanup $dev1 $dev2 action "Checking for free space" do_examine 409600 [ ! $? -eq 0 ] && { echo "Not enought free space. All tests are skipped." exit 1 } action "Initializing tests factory" do_init $dev1 $dev2 [ ! $? -eq 0 ] && { echo "Couldn't initialize tests factory. All tests are skipped." exit 1 } # Tests for format in 3.5 3.6; do echo echo "Testing reiserfs $format" echo "--------------------" do_test $format $dev1 $dev2 done # Cleanups echo action "Finalizing tests factory" do_cleanup $dev1 $dev2 echo if [ -z "$failures" ]; then echo "The all tests are successfull." else echo "Test failures detected:" echo -e $failures fi exit 0