summaryrefslogtreecommitdiff
path: root/tests/generic/074
blob: ec63c50f966faed16ccce160a1922c7a2af49a3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2000-2003 Silicon Graphics, Inc.  All Rights Reserved.
#
# FS QA Test No. 074
#
# fstest
#
. ./common/preamble
_begin_fstest rw udf auto

fstest_dir=$TEST_DIR/fstest
status=0	# success is the default!

# Override the default cleanup function.
_cleanup()
{
    rm -rf $fstest_dir.* $tmp.*
}

# Import common functions.
. ./common/filter

_supported_fs generic
_require_test

_do_test()
{
    _n="$1"
    _param="$2"

    out=$fstest_dir.$_n
    rm -rf $out
    if ! mkdir $out
    then
        echo "    failed to mkdir $out"
        status=1
        exit
    fi

    _filter_param=`echo "$_param" | sed\
	-e 's/-n [0-9][0-9]*/-n children/' \
	-e 's/-l [0-9][0-9]*/-l loops/' \
	-e 's/-f [0-9][0-9]*/-f files/'`

    echo ""
    echo "-----------------------------------------------"
    echo "fstest.$_n : $_filter_param"
    echo "-----------------------------------------------"
    if ! $here/src/fstest $_param -p $out >>$seqres.full
    then
        echo "    fstest ($_param) returned $? - see $seqres.full"
        status=1
	exit
    fi

    _check_test_fs
}

_usage()
{
    echo "$0: [-f files] [-l loops] [-n children]"
}

_process_args()
{
    OPTIND=1
    while getopts "f:l:n:?" c $@
    do
        case $c
        in
            f)
                numfiles=$OPTARG
		param_type="$param_type, overidde -f"
                ;;
            l)
                numloops=$OPTARG
		param_type="$param_type, overidde -l"
                ;;
            n)
                numchildren=$OPTARG
		param_type="$param_type, overidde -n"
                ;;
	    ?)
		_usage
		exit	
		;;
	esac
    done
}

#
# set params
# These params can take a while on different CPUs/OSs
# so we set them differently for different machines
#
if uname -a | grep -q SMP; then
	numloops=10
	numfiles=5
	numchildren=3
	param_type="Linux SMP"
else
	numloops=2
	numfiles=3
	numchildren=3
	param_type="Linux UP"
fi

# can override the params here
_process_args "$@"

echo "Params are for $param_type" >>$seqres.full
echo "Params: n = $numchildren l = $numloops f = $numfiles" >>$seqres.full

_check_test_fs

# Options:
# -F                    generate files with holes  (default=no)
# -n num_children       set number of child processes (default=1)
# -f num_files          set number of files (default=1)
# -s file_size          set file sizes (default=1MiB)
# -b block_size         set block (IO) size (default=1024)
# -l loops              set loop count (default=100)
# -m                    use mmap (default=no)
# -S                    use synchronous IO (default=no)
# -P                    preallocate space (default=no)

size10=`expr 10 \* 1024 \* 1024`	# 10 megabytes
size30=`expr 30 \* 1024 \* 1024`	# 30 megabytes

_do_test 0 "-l $numloops"

_do_test 1 "-l $numloops -s $size10 -b 8192 -m"

_do_test 2 "-n $numchildren -F -l $numloops -f $numfiles -s $size30 -b 512"

_do_test 3 "-n $numchildren -F -l $numloops -f $numfiles -s $size30 -b 512 -m"

_do_test 4 "-n $numchildren -F -l $numloops -f $numfiles -s $size10 -b 512 -mS"