Docs/manual.texi
updates for the test suite Docs/Support/test-make-manual abort with a message if a utility fails open the manual in a browser on success
This commit is contained in:
parent
72fc1259a1
commit
b36c387f4f
@ -1,13 +1,31 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
function die
|
||||||
|
{
|
||||||
|
echo $1
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "|---- Running makeinfo ----|"
|
echo "|---- Running makeinfo ----|"
|
||||||
makeinfo --no-split -I . manual.texi
|
makeinfo --no-split -I . manual.texi
|
||||||
|
|
||||||
|
[ $? != 0 ] && die "Manual has errors - fix before you commit"
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "|---- Running texi2html ----|"
|
echo "|---- Running texi2html ----|"
|
||||||
/usr/bin/perl ./Support/texi2html -iso -number manual.texi
|
/usr/bin/perl ./Support/texi2html -iso -number manual.texi
|
||||||
|
|
||||||
|
[ $? != 0 ] && die "Manual has errors - fix before you commit"
|
||||||
|
|
||||||
|
[ -z $BROWSER ] && BROWSER=netscape
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "Please examine your modifications in \`manual.html'."
|
echo "Please examine your modifications in \`manual.html'."
|
||||||
echo
|
echo "For your convenience, I will show you the manual in $BROWSER"
|
||||||
|
echo "If you would like to use a different browser, set BROWSER enviroment\
|
||||||
|
variable"
|
||||||
|
echo "If this is a GUI browser, to get your shell prompt back, close the
|
||||||
|
window"
|
||||||
|
|
||||||
|
$BROWSER file://`pwd`/manual_toc.html
|
||||||
|
130
Docs/manual.texi
130
Docs/manual.texi
@ -817,6 +817,7 @@ MySQL Internals
|
|||||||
|
|
||||||
* MySQL threads:: MySQL threads
|
* MySQL threads:: MySQL threads
|
||||||
* MySQL full-text search:: MySQL full-text search
|
* MySQL full-text search:: MySQL full-text search
|
||||||
|
* MySQL test suite:: MySQL test suite
|
||||||
|
|
||||||
MySQL Full-text Search
|
MySQL Full-text Search
|
||||||
|
|
||||||
@ -37823,11 +37824,17 @@ safe, you should take a look at @code{PostgreSQL}.
|
|||||||
@chapter MySQL Internals
|
@chapter MySQL Internals
|
||||||
|
|
||||||
This chapter describes a lot of things that you need to know when
|
This chapter describes a lot of things that you need to know when
|
||||||
working on the @strong{MySQL} code.
|
working on the @strong{MySQL} code. If you plan to contribute to MySQL
|
||||||
|
development, want to have access to the bleeding-edge in-between
|
||||||
|
versions code, or just want to keep track of development, follow the
|
||||||
|
instructions in @xref{Installing source tree}. . If you are intersted in MySQL
|
||||||
|
internals you should also subscribe to internals@@lists.mysql.com - this is
|
||||||
|
a relatively low traffic list, in comparison with mysql@@lists.mysql.com .
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
* MySQL threads:: MySQL threads
|
* MySQL threads:: MySQL threads
|
||||||
* MySQL full-text search:: MySQL full-text search
|
* MySQL full-text search:: MySQL full-text search
|
||||||
|
* MySQL test suite:: MySQL test suite
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node MySQL threads, MySQL full-text search, MySQL internals, MySQL internals
|
@node MySQL threads, MySQL full-text search, MySQL internals, MySQL internals
|
||||||
@ -37872,7 +37879,7 @@ DELAYED} threads.
|
|||||||
@cindex searching, full-text
|
@cindex searching, full-text
|
||||||
@cindex full-text search
|
@cindex full-text search
|
||||||
@cindex FULLTEXT
|
@cindex FULLTEXT
|
||||||
@node MySQL full-text search, , MySQL threads, MySQL internals
|
@node MySQL full-text search,MySQL test suite, MySQL threads, MySQL internals
|
||||||
@section MySQL Full-text Search
|
@section MySQL Full-text Search
|
||||||
|
|
||||||
Since Version 3.23.23, @strong{MySQL} has support for full-text indexing
|
Since Version 3.23.23, @strong{MySQL} has support for full-text indexing
|
||||||
@ -38007,6 +38014,125 @@ There is no need to rebuild the indexes though.
|
|||||||
|
|
||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
@node MySQL test suite, ,MySQL full-text search, MySQL internals
|
||||||
|
@section MySQL Test Suite
|
||||||
|
|
||||||
|
Until recently, our main full-coverage test suite was based on
|
||||||
|
proprietary customer data and for that reason was not publically available. The
|
||||||
|
only publically available part of our testing process consisted of
|
||||||
|
@code{crash-me} test, the Perl DBI/DBD benchmark found in @code{sql-bench}
|
||||||
|
directory, and miscalaneous tests combined in @code{tests} directory. The lack
|
||||||
|
of a standardazied publically available test suite made it hard for our users
|
||||||
|
as well as developers to do regression tests on MySQL code. To address this
|
||||||
|
problem, we have created a new test system that is included in the source
|
||||||
|
and binary distributions starting in version 3.23.29.
|
||||||
|
|
||||||
|
The test system consist of a test language interpreter @code{mysqltest},
|
||||||
|
@code{mysql-test-run} - a shell script to run all tests, the actual test cases
|
||||||
|
written in a special test language, and their expected results. To run the
|
||||||
|
test suite on your system after a build, type @code{mysql-test/mysql-test-run}
|
||||||
|
from the source root. If you have installed a binary distribution, @code{cd}
|
||||||
|
to the install root ( eg. @code{/usr/local/mysql} ), and do
|
||||||
|
@code{scripts/mysql-test-run}. All tests should succeed. If they do not,
|
||||||
|
use @code{mysqlbug} and send a bug report to @email{bugs@@lists.mysql.com}.
|
||||||
|
Make sure to include the output of @code{mysql-test-run}, contents of all
|
||||||
|
@code{.reject} files in @code{mysql-test/r} directory.
|
||||||
|
|
||||||
|
If you have a copy of @code{mysqld} running on the machine where you want to
|
||||||
|
run the test suite you do not have to stop it, as long as it is not using
|
||||||
|
ports @code{9306} and @code{9307}. If one of those ports is taken, you should
|
||||||
|
edit @code{mysql-test-run} and change the values of the master and/or slave
|
||||||
|
port to something not used.
|
||||||
|
|
||||||
|
The current set of test cases is far from comprehensive, as we have not yet
|
||||||
|
converted all of our private suite tests to the new format. However,
|
||||||
|
it should already catch most obvious bugs in the SQL processing code,
|
||||||
|
OS/library issues, and is quite thorough in testing replication. Our eventual
|
||||||
|
goal is to have the tests cover 100% of the code. We welcome contributions to
|
||||||
|
our test suite. You may especially want to contribute tests that examine the
|
||||||
|
functionality critical to your system - this will ensure that all
|
||||||
|
@strong{MySQL} releases will work well with your applications.
|
||||||
|
|
||||||
|
You can use @code{mysqltest} language to write your own test cases.
|
||||||
|
Unfortunately, we have not yet written full documentation for it - we plan to
|
||||||
|
do this shortly. However, you can look at our current test cases and
|
||||||
|
use them as an example. Also the following points should help you get started:
|
||||||
|
|
||||||
|
@itemize
|
||||||
|
@item
|
||||||
|
The tests are located in @code{mysql-test/t/*.test}
|
||||||
|
@item
|
||||||
|
You can run one individual test case with
|
||||||
|
@code{mysql-test/mysql-test-run test_name}
|
||||||
|
removing @code{.test} extension from the file name
|
||||||
|
@item
|
||||||
|
A test case consists of @code{;} terminated statements and is similar to the
|
||||||
|
input of @code{mysql} command line client. A statement by default is a query
|
||||||
|
to be sent to @strong{MySQL} server, unless it is recognized as internal
|
||||||
|
command ( eg. @code{sleep} ).
|
||||||
|
@item
|
||||||
|
All queries that produce results, eg @code{SELECT}, @code{SHOW},
|
||||||
|
@code{EXPLAIN}, etc, must be preceded with @code{@@/path/to/result/file}. The
|
||||||
|
file must contain expected results. An easy way to generate the result file
|
||||||
|
is to run @code{mysqltest -r < t/test-case-name.test} from @code{mysql-test}
|
||||||
|
directory, and then edit the generated result files, if needed, to adjust
|
||||||
|
them to the expected output. In that case, be very careful about not adding or
|
||||||
|
deleting any invisible characters - make sure to only change the text and/or
|
||||||
|
delete lines. If you have to insert a line, make sure the fields are separated
|
||||||
|
with a hard tab, and there is a hard tab at the end. You may want to use
|
||||||
|
@code{od -c} to make sure your text editor has not messed anything up during
|
||||||
|
edit. We, of course, hope that you will never have to edit the output of
|
||||||
|
@code{mysqltest -r} as you only have to do it when you find a bug.
|
||||||
|
@item
|
||||||
|
To be consistent with our setup, you should put your result files in
|
||||||
|
@code{mysql-test/r} directory and name them @code{test_name.result}. If the
|
||||||
|
test produces more than one result, you should use @code{test_name.a.result},
|
||||||
|
@code{test_name.b.result}, etc
|
||||||
|
@item
|
||||||
|
Failed test results are put in a file with the same name as the result file
|
||||||
|
followed by @code{.reject} extenstion. If your test case is failing, you
|
||||||
|
should do a diff on the two files. If you cannot see how they are different,
|
||||||
|
examine both with @code{od -c} and also check their lengths.
|
||||||
|
@item
|
||||||
|
You can prefix a query with @code{!} if the test can continue after that query
|
||||||
|
returns an error.
|
||||||
|
@item
|
||||||
|
If you are writing a replication test case, you should on the first line put
|
||||||
|
@code{source include/master-slave.inc;} at the start of the test file. To
|
||||||
|
switch between master and slave, use @code{connection master;}/
|
||||||
|
@code{connection slave;}. If you need to do something on an alternate
|
||||||
|
connection, you can do @code{connection master1;} for the master, and
|
||||||
|
@code{connection slave1;} on the slave
|
||||||
|
@item
|
||||||
|
If you need to do something in a loop, you can use someting like this:
|
||||||
|
@example
|
||||||
|
let $1=1000;
|
||||||
|
while ($1)
|
||||||
|
@{
|
||||||
|
# do your queries here
|
||||||
|
dec $1;
|
||||||
|
@}
|
||||||
|
@end example
|
||||||
|
@item
|
||||||
|
To sleep between queries, use @code{sleep} command. It supports fractions of
|
||||||
|
a second, so you can do @code{sleep 1.3;}, for example, to sleep 1.3 seconds.
|
||||||
|
@item
|
||||||
|
To run the slave with additional options for your test case, put them
|
||||||
|
in the command-line format in @code{mysql-test/t/test_name-slave.opt}. For
|
||||||
|
the master, put them in @code{mysql-test/t/test_name-master.opt}.
|
||||||
|
@item
|
||||||
|
If you have a question about the test suite, or have a test case to
|
||||||
|
contribute, e-mail to
|
||||||
|
@email{internals@@lists.mysql.com}. As the list does not accept attachemnts,
|
||||||
|
you should ftp all the relevant files to
|
||||||
|
@url{ftp://support.mysql.com/pub/mysql/Incoming}
|
||||||
|
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@page
|
@page
|
||||||
@cindex environment variables, list of
|
@cindex environment variables, list of
|
||||||
@node Environment variables, Users, MySQL internals, Top
|
@node Environment variables, Users, MySQL internals, Top
|
||||||
|
Loading…
x
Reference in New Issue
Block a user