Mit der Sprache mysqltest können Sie auch Ihre eigenen Testfälle schreiben. Allerdings haben wir leider die Dokumentation dieser Sprache noch nicht ganz fertig gestellt. Sie können sich jedoch unsere aktuellen Testfälle anschauen und als Beispiele heranziehen. Die folgenden Hinweise müssten Ihnen bei den ersten Schritten eine Hilfe sein:
Sie finden die Tests in
mysql-test/t/*.test
.
Ein Testfall besteht aus Anweisungen, die mit
;
abgeschlossen werden, und ähnelt der
Eingabe für den
mysql-Kommandozeilen-Client. Eine
Anweisung ist standardmäßig eine SQL-Anweisung, die an
den MySQL Server gesandt wird, es sei denn, sie wird als
interner Befehl erkannt (wie beispielsweise
sleep).
Vor allen Anfragen, die Ergebnisse produzieren, wie
beispielsweise SELECT
,
SHOW
oder EXPLAIN
,
muss ein @/path/to/result/file
stehen. Diese Datei muss die erwarteten Ergebnisse
enthalten. Ein einfaches Mittel, um die Ergebnisdatei zu
generieren, besteht darin, mysqltest -r <
t/test-case-name.test im Verzeichnis
mysql-test
auszuführen und dann die
generierten Ergebnisdateien wenn nötig zu bearbeiten, um
sie an die erwartete Ausgabe anzupassen. In diesem Fall
müssen Sie sehr genau darauf achten, keine unsichtbaren
Zeichen zu löschen oder hinzuzufügen. Sie dürfen nur
den Text ändern oder Zeilen löschen. Wenn Sie eine Zeile
einfügen müssen, achten Sie darauf, dass die Felder
durch einen Tabulator getrennt werden, und setzen Sie auch
am Ende einen Tabulator. Mit od -c
können Sie sich vergewissern, dass Ihr Editor bei der
Bearbeitung keinen Unsinn gemacht hat. Wir hoffen, dass
Sie niemals die Ausgabe von mysqltest
-r bearbeiten müssen, da dies nur nötig wird,
wenn Sie einen Fehler finden.
Um Ihr System wie unseres einzurichten, legen Sie die
Ergebnisdateien in das Verzeichnis
mysql-test/r
und nennen sie
test_name.result
. Wenn der Test mehr
als ein Ergebnis produziert, verwenden Sie die Namen
test_name.a.result
,
test_name.b.result
und so weiter.
Wenn eine Anweisung einen Fehler zurückgibt, sollten Sie
diesen mit --error error-number
auf der
Zeile vor dieser Anweisung angeben. Die Fehlernummer kann
auch eine kommagetrennte Liste von Fehlernummern sein.
Wenn Sie einen Replikationstestfall schreiben, setzen Sie
in die erste Zeile der Testdatei den Text source
include/master-slave.inc;
. Mit
connection master;
und
connection slave;
schalten Sie zwischen
Master und Slave um. Wenn Sie auf einer anderen Verbindung
arbeiten müssen, können Sie für den Master
connection master1;
und für den Slave
connection slave1;
eingeben.
Falls Sie eine Schleifenverarbeitung ausführen müssen, können Sie Folgendes tun:
let $1=1000; while ($1) { # Hier Anfragen einfügen dec $1; }
Mit sleep schläft das System zwischen zwei Anfragen. Da in diesem Befehl auch Sekundenbruchteile eingestellt werden können, bedeutet beispielsweise sleep 1.3;, dass das System 1,3 Sekunden schläft.
Um den Slave mit Zusatzoptionen für den Testfall
auszuführen, setzen Sie die Optionen in einem
Kommandozeilenformat in die Datei
mysql-test/t/test_name-slave.opt
bzw.
für den Master in die Datei
mysql-test/t/test_name-master.opt
.
Wenn Sie Fragen zu der Testreihe haben oder selbst einen
Test beisteuern möchten, schicken Sie eine E-Mail an die
MySQL-Mailingliste internals
(siehe
Abschnitt 1.7.1, „Die MySQL-Mailinglisten“). Da diese Liste keine
Anhänge akzeptiert, laden Sie alle relevanten Dateien per
FTP auf folgende Adresse hoch:
ftp://ftp.mysql.com/pub/mysql/upload/.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.