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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
#! /bin/sh
# Copyright (C) 2001, 2006 MySQL AB
# Use is subject to license terms
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
# This is slapped together as a quick way to run the tests and
# is not meant for prime time. Please hack at it and submit
# changes, though, so we can gradually turn it into something
# that will run on all platforms (or incorporate it into the
# standard mysql-test-run).
# All paths below must be relative to $test_data_dir
top_builddir=../..
mysql_test_dir=$top_builddir/mysql-test
examples=$top_builddir/libmysqld/examples
mysqltest=$examples/mysqltest_embedded
datadir=$mysql_test_dir/var/master-data
test_data_dir=test
gdb=0
list=0
run=
tests=
start=
clean=1
cr="
"
er="\b\b\b\b\b\b\b\b"
usage () {
cat <<EOF
usage: $0 [-g|-h|-r] [test-name ...]
-C | --noclean Do not remove old innodb and bdb files at start.
-g | --gdb run $mysqltest in gdb
-h | --help show this help
-l | --list ) list all available tests
-r | --run automatically 'run' program in gdb
-s t | --start=t start with test t (skip all tests before t)
EOF
}
init_args="--server-arg=--language=$top_builddir/sql/share/english"
while test $# -gt 0
do
arg=
argset=0
case "$1" in
--?*=* ) arg=`echo "$1" | sed -e 's,^[^=][^=]*=,,'`; argset=1 ;;
esac
case "$1" in
-g | --gdb ) gdb=1; shift;;
-h | --help | -\? ) usage; exit 0;;
-l | --list ) list=1 ; shift ;;
-r | --run ) run="${cr}run"; shift;;
--debug) init_args="$init_args --debug" ; shift ;;
-C | --noclean) clean=0 ; shift ;;
-s | --start=* )
test $argset -eq 0 && { shift; arg="$1"; }
start="$arg"
shift
;;
-* ) usage; exit 1;;
* ) tests="$tests $1"; shift;;
esac
done
if test ! -d "$datadir/$test_data_dir"
then
echo "bad setup (is '$datadir/$test_data_dir'', missing ?)" >&2
exit 1
fi
test -n "$tests" ||
tests=`/bin/ls -1 "$mysql_test_dir"/t/*.test | grep -v '^.*/rpl[^/]*$' | \
sed -e 's,^.*/,,' -e 's,.test$,,'`
echo "cleaning data directory '$datadir/$test_data_dir'"
if test $clean = 1
then
rm -f $datadir/ib_* $datadir/ibdata*
rm -f $datadir/log.00*
rm -f $datadir/test/*.db
fi
rm -f $datadir/../tmp/*
rm -f test-gdbinit
TZ=GMT-3; export TZ
# At least one of the tests needs the following environment variable
MYSQL_TEST_DIR=`( cd $mysql_test_dir ; pwd )` ; export MYSQL_TEST_DIR
skip=1
test -z "$start" && skip=0
for b in $tests
do
test $list -eq 1 && { echo " $b"; continue; }
test $skip -eq 1 && test -n "$start" && test "$start" = "$b" && skip=0
test $skip -eq 1 && { echo "skipping '$b'"; continue; }
t="t/$b.test"
r="r/$b.result"
# Only test if $t exists; there is no $r for some tests
test -f $mysql_test_dir/$t || {
echo "test '$mysql_test_dir/$t' doesn't exist" >&2
continue
}
args="$init_args -v --basedir=$mysql_test_dir/ -R $r -x $t --server-arg=--datadir=$datadir"
if test -f "$mysql_test_dir/t/$b-master.opt" ; then
args="$args --server-file=t/$b-master.opt"
fi
args="$args $test_data_dir" # Add database last
echo "set args $args$run" > test-gdbinit
#if false && test -n "$run"
if test -n "$run" -o $gdb -eq 1
then
echo -e "$er>>> $b"
else
echo -e "$er>>> $b> \c"
read junk
fi
if test $gdb -eq 1
then
if [ -x "$top_builddir/libtool" ]; then
$top_builddir/libtool gdb -x test-gdbinit -q $mysqltest
else
gdb -x test-gdbinit -q $mysqltest
fi
res=$?
rm -f test-gdbinit
else
$mysqltest $args
res=$?
fi
test $res -eq 0 -o $res -eq 2 || echo "!!! error: $res"
done
|