229a2e8a9e0077a0001eeb07528388aa589498a6
[util-vserver.git] / lib_internal / testsuite / copy-check
1 #! /bin/bash
2 ## $Id: copy-check,v 1.4 2005/03/25 02:38:13 ensc Exp $
3
4 # Copyright (C) 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
5 #  
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; version 2 of the License.
9 #  
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14 #  
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 set -e
20
21 dir=$(mktemp -d ${TMP:-/var/tmp}/copy-check.XXXXXX)
22 trap "rm -rf $dir" EXIT
23
24 COPY=${libinternaltestsuitedir:-$(dirname "$0")}/copy
25
26 test -x "$COPY"
27
28 function execWrap()
29 {
30     nr=$1
31     msg=$2
32     shift 2
33
34     "$@" || {
35         rc=$?
36         echo $"Test $nr '$msg' failed with code $rc"
37         return $rc
38     }
39
40     return 0
41 }
42
43 function doit()
44 {
45     execWrap "$nr" "copying"   $COPY $dir/$nr-in $dir/$nr-out
46     execWrap "$nr" "comparing" cmp   $dir/$nr-in $dir/$nr-out
47 }
48
49 ## Usage: execCheck <nr> [<dd-args>*]
50 function execCheck()
51 {
52     local nr=$1
53     shift
54
55     dd if=/dev/urandom of=$dir/$nr-in "$@" &>/dev/null
56
57     doit $nr
58 }
59
60 LANG=C
61
62 ### Check 1: small file copy
63 execCheck 01 bs=10 count=1
64
65 ### Check 2: PAGESIZEd file copy
66 execCheck 02 bs=4096 count=1
67
68 ### Check 3: PAGESIZE+1 file copy
69 execCheck 03 bs=4097 count=1
70
71 ### Check 3a: really large file copy
72 test x"$ensc_use_expensive_tests" != xyes ||
73     execCheck 03a bs=$[ 64 * 1024*1024 + 23 ] count=1
74
75 ### Check 4: small sparse file copy
76 execCheck 04 bs=10   count=1 seek=1
77
78 ### Check 5: large sparse file copy
79 execCheck 05 bs=4097 count=1 seek=1
80
81 ### Check 6: large sparse file copy
82 execCheck 06 bs=4098 count=1 seek=1
83
84 ### Check 7: large sparse file copy
85 execCheck 07 bs=4099 count=1 seek=1
86
87 ### Check 8: large sparse file copy
88 execCheck 08 bs=4100 count=1 seek=1
89
90 ### Check 8a: really large sparse file copy
91 test x"$ensc_use_expensive_tests" != xyes ||
92     execCheck 08a bs=$[ 64 * 1024*1024 + 23 ] count=1 seek=1
93
94 ### Check 9: huge sparse file copy
95 test x"$ensc_use_expensive_tests" != xyes ||
96     execCheck 09 bs=1024 count=1 seek=$[ 1024*1024 * 5 ]
97
98 test x"$ensc_test_debug" != xyes || {
99     ls -l $dir/* 
100     du    $dir/*
101 }