23.1.2 Suite de test de MySQL
23.1 Rouages de MySQL
23 Etendre MySQL
Manuel de Référence MySQL 4.1 : Version Française
. Exécuter la suite de tests MySQL ->Améliorer la suite de tests MySQL . Rapporter des bugs dans la suite de tests MySQL
|
23.1.2.2 Améliorer la suite de tests MySQL
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.
Les listes de diffusion MySQL .
Comme la liste n'accepte pas les attachements, vous devriez les placer sur le serveur FTP :
ftp://support.mysql.com/pub/mysql/Incoming/
|