Vous pouvez utiliser le langage de
mysqltest
pour écrire vos propres cas de
tests. Malheureusement, nous n'avons pas encore écrit une
documentation complète pour ce logiciel, et nous prévoyons
de le faire rapidement. Vous pouvez, toutefois, utiliser les
cas de tests actuels comme exemples. Les points suivants
devraient vous mettre le pied à l'étrier.
Les tests sont situé dans
mysql-test/t/*.test
Un cas de tests est constitué de commandes terminées par
un ;
, et est similaire aux données
d'entrées du client mysql
. Une
commande est par défaut une commande envoyée au serveur
MySQL, à moins qu'il ne soit reconnu comme une commande
interne (par exemple, sleep
).
Toutes les requêtes qui produisent des résultats, comme
SELECT
, SHOW
,
EXPLAIN
, etc., doivent être
précédées par @/path/to/result/file
.
Le fichier contient alors les résultats attendus. Un
moyen simple pour générer le résultat du fichier est
d'exécuter mysqltest -r <
t/test-case-name.test
depuis le dossier de tests
mysql-test
, puis d'éditer le fichier
résultant, si nécessaire, pour ajuster le contenu. Dans
ce cas, soyez très prudent lors de l'ajout ou la
suppression de caractères invisibles : assurez vous de
ne changer que du texte, ou d'effacer des lignes. Vous
pouvez utiliser od -c
pour vous assurer
que votre éditeur n'a pas perturbé le fichier durant
l'édition. Bien sur, nous espérons que vous n'aurez
jamais a éditer le résultat du fichier
mysqltest -r
ca vous n'avez à faire
cela que lorsque vous découvrez un bug.
Pour être cohérent avec votre configuration, vous
devriez placer les fichiers de résultats dans le dossier
mysql-test/r
et les nommer
test_name.result
. Si le test produit
plus qu'un résultat, vous devez utiliser
test_name.a.result
,
test_name.b.result
, etc.
Si une commande retourne une erreur, vous devez, sur la
ligne de la commande, le spécifier avec --error
error-number
. Le numéro d'erreur peut être une
liste d'erreurs possibles, séparées par des virgules
','
.
Si vous écrivez un test de réplication, vous devez, sur
la première ligne du fichier de test, ajouter le code
source include/master-slave.inc;
. Pour
passer entre le maître et l'esclave, utilisez
connection master;
et
connection slave;
. Si vous avez besoin
d'utiliser une connexion alternative, vous pouvez utiliser
connection master1;
pour le maître, et
connection slave1;
pour l'esclave.
Si vous avez besoin d'une boucle, vous pouvez utiliser ceci :
let $1=1000; while ($1) { # votre requête ici dec $1; }
Pour faire une pause entre les requêtes, utilisez la
commande sleep
. Elle supporte les
fraction de secondes, ce qui vous permet d'utiliser
sleep 1.3;
, pour attendre 1,3 secondes.
Pour exécuter l'esclave avec des options additionnelles
pour votre cas de tests, ajoutez les au format ligne de
commande dans
mysql-test/t/test_name-slave.opt
. Pour
le maître, ajoutez les dans
mysql-test/t/test_name-master.opt
.
Si vous avez une question sur la suite de tests, ou que vous avez un test à proposer, envoyez le par email à sur la liste interne. See Section 1.4.1.1, « Les listes de diffusion de MySQL ». Comme la liste n'accepte pas les attachements, vous devriez les placer sur le serveur FTP : 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.