| 24.1.2 Suite de test de MySQL
 24.1 Rouages de MySQL
 24 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
 
 
 | 
  24.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/ |