mysqltest
言語を使用して独自にテストケースを作成できます。残念ながら、その完全なマニュアルはまだ作成されていません。ただ、現在のテストケースを参考にすることができます。独自にテストケースを作成する際の注意点を以下に示します。
作成したテストは
mysql-test/t/*.test
に置く。
テストケースは、;
で終端されたステートメントで構成され、mysql
コマンドラインクライアントへの入力と同様である。ステートメントは、それが内部コマンド(sleep
など)として認識される場合を除いて、デフォルトでクエリとして
MySQL サーバに送信される。
SELECT
、SHOW
、EXPLAIN
など、結果セットを生成するすべてのクエリは、先に
@/path/to/result/file
を指定する必要がある。ファイルには予想される結果を記述する必要がある。結果ファイルを簡単に生成する方法としては、mysql-test
ディレクトリから mysqltest -r <
t/test-case-name.test
を実行し、必要に応じて生成された結果ファイルを編集して予想される出力に変更する。この場合、表示されない文字を追加または削除しないように注意する必要がある。必ずテキストの変更または行の削除、あるいはその両方だけを実行するようにする。行を挿入する必要がある場合、必ずフィールドをハードタブで区切り、行の最後にハードタブを置くようにする。od
-c
を使用すると、編集中にテキストエディタで何も壊していないことを確認できる。mysqltest
-r
の出力を編集する必要があるのはバグが見つかった場合だけなので、そのような必要性が生じないことを祈っている。
テストスイートとの整合性を取るには、結果ファイルを
mysql-test/r
ディレクトリに置いて、名前を
test_name.result
にする必要がある。テストで複数の結果ファイルを生成する場合は、test_name.a.result
、test_name.b.result
のように名前を付ける必要がある。
ステートメントがエラーを返す場合、そのステートメントの前に
--error error-number
を指定する。ここで、エラー番号には、','
で区切られたエラー番号のリストを指定できる。
レプリケーションのテストケースを作成している場合、テストファイルの先頭行に
source include/master-slave.inc;
と記述する必要がある。マスタとスレーブを切り替えるには、connection
master;
および connection
slave;
を使用する。もう一方の接続で何らかの処理を実行する必要がある場合、マスタには
connection master1;
を実行し、スレーブには connection
slave1;
を実行する。
ループの中で何らかの処理を実行する必要がある場合、以下のようなコードを作成する。
let $1=1000; while ($1) { # do your queries here dec $1; }
クエリ間でスリープするには、sleep
コマンドを使用する。秒数は小数点以下まで指定できるので、たとえば
1.3 秒スリープする場合は sleep
1.3;
を実行する。
テストケースのためにオプションを追加してスレーブを実行するには、mysql-test/t/test_name-slave.opt
にコマンドライン形式で記述する。マスタの場合は、mysql-test/t/test_name-master.opt
に記述する。
テストスイートに質問がある場合、またはテストスイートに提供するテストケースがある場合、MySQL 内部情報のメーリングリストにメールを送信する。See 項1.7.1.1. 「MySQL メーリングリスト」。 このメーリングリストは添付ファイルを受け付けないので、関連するファイルは ftp://support.mysql.com/pub/mysql/Incoming/ にアップロードする必要がある。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.