Interface WMQTest

Les tests écrits pour IBM® MQ Explorer doivent appartenir à une classe Java™ qui étend la classe WMQTest fournie. La présente rubrique décrit l'interface et le fonctionnement des méthodes fournies.

Attributs du test

Définissez un test dans le fichier de manifeste du plug-in (plugin.xml) à l'aide d'une collection d'attributs. Les attributs associés à un test sont indiqués dans le tableau suivant.

Attribut Description
id Chaîne constituant l'identificateur unique du test.
name Nom significatif du test.
class Nom de la classe Java contenant le code source du test.
testset Chaîne définissant le groupe d'affichage du test (par exemple wmq, qui affiche le test dans la catégorie Tests des gestionnaires de files d'attente).
testsubset Chaîne définissant le sous-groupe d'affichage du test (par exemple queues, qui affiche le test dans la catégorie Files d'attente).
description Brève description des vérifications effectuées par le test.
furtherinfo Emplacement du document HTML ou XHTML qui contient un complément d'information sur le test. Ce document s'affiche dans IBM MQ Explorer lorsque vous cliquez deux fois sur le test dans la boîte de dialogue Exécution des tests ou un résultat de test dans la vue Résultats des tests.

Vous indiquez les valeurs de ces attributs dans le fichier plugin.xml pour définir le test. Ces attributs sont également accessibles par programme, à l'aide des méthodes WMQTest répertoriées dans le tableau ci-après.

Méthode Description
getTestID() Renvoie l'identificateur du test.
getTestName() Renvoie le nom du test.
getDescription() Renvoie la description du test.
getTestSet() Renvoie le descripteur de l'objet ensemble de tests créé comme parent du test.
getFurtherInfoPath() Renvoie l'emplacement du document XHTML ou HTML qui contient un complément d'information sur le test.

Création du test

Le moteur IBM MQ Explorer Tests instancie l'objet test à l'aide du constructeur WMQTest() fourni. Il n'est pas nécessaire de sous-classer ce constructeur.

Structure du test

La méthode WMQTest runTest définit le corps du test, elle est appelée pour lancer une exécution de test.

La fin de la méthode runTest ne signifie pas la fin du test, que vous devez indiquer explicitement par la méthode testComplete. Vous pouvez mettre en oeuvre les tests pour qu'ils extraient les données objet en mode asynchrone.

La méthode runTest soumet une demande d'extraction de données relatives aux objets et le test s'exécute à partir de la méthode Listener (programme d'écoute) qui reçoit la réponse. Ceci permet au test d'attendre les données sans délai d'attente pour les unités d'exécution (voir Exemple 3).

Si une attente manuelle (mode veille) est requise lors du test, le moniteur des objets test permet d'utiliser les méthodes Java wait et notify. Le traitement en unités d'exécution du moteur de test est mis en oeuvre sans les moniteurs des objets test individuels.

Exécution du test

Le moteur IBM MQ Explorer Tests appelle runTest(WMQTestEngine, IProgressMonitor,contextObjects, treeNode) pour démarrer le test. Le corps principal de votre test doit être présent.

WMQTestEngine
le paramètre WMQTestEngine fournit un descripteur d'accès au moteur de test qui exécute le test.

Ainsi, des résultats peuvent être renvoyés alors qu'un test est en cours d'exécution, à l'aide de la méthode returnResult(WMQTestResult[], WMQTest) du moteur de test.

Le premier paramètre de cette méthode (WMQTestResult[]) contient les résultats à renvoyer ; le second paramètre (WMQTest) doit être 'this' pour que le moteur de test puisse identifier la provenance des résultats. L'utilisation du paramètre WMQTestEngine pour renvoyer des résultats intermédiaires est facultative, car les résultats peuvent être renvoyés à la fin du test (voir Achèvement du test).

IProgressMonitor
Le paramètre IProgressMonitor fournit un descripteur d'accès au moniteur de retour d'informations d'interface graphique, utilisé pour le passage d'essai en cours. Ceci permet au test de fournir un retour d'informations de type texte sur la tâche et les sous-tâches actives ainsi qu'une barre de progression de l'exécution en cours.

Le descripteur d'accès au moniteur de progression est mis en mémoire cache par l'implémentation par défaut de la méthode runTest. Si cette méthode a été utilisée, un descripteur d'accès au moniteur de progression peut également être obtenu par la méthode WMQTest getGUIMonitor().

Le moniteur de progression est une ressource Eclipse de base. Pour plus d'informations sur son utilisation, voir la documentation des API Eclipse sur le Web.

contextObjects
Le paramètre contextObjects fournit un tableau MQExtObject. Ce paramètre indique le contexte du test à exécuter : les cases à cocher appropriées sont donc présélectionnées lorsque l'utilisateur ouvre la boîte de dialogue Exécution des tests.
treeNode
Le paramètre treeNode enregistre le dossier ou l'objet sur lequel l'utilisateur a cliqué dans la vue Navigateur pour exécuter les tests par défaut ou pour ouvrir la boîte de dialogue Exécution des tests.

Préférences utilisateur

Les tests doivent respecter les préférences utilisateur indiquées dans la boîte de dialogue des préférences Eclipse. Utilisez les méthodes suivantes pour accéder aux préférences :

  • PreferenceStoreManager.getIncludeHiddenQmgrsPreference() qui renvoie true si vous incluez des gestionnaires de files d'attente masqués dans IBM MQ Explorer dans le test, ou false s'ils doivent être exclus.
  • PreferenceStoreManager.getIncludeSysObjsPreference() qui renvoie true lorsque les objets système (objets dont le nom commence par SYSTEM) doivent être inclus dans le test ou false, dans le cas contraire.

Achèvement du test

Un test est terminé par l'appel de testComplete(WMQTestResult[]), avec la transmission d'un tableau d'objets résultat de test (pour plus d'informations sur les objets résultat de test, voir Création d'un résultat de test).

Le renvoi des résultats à la fin du test par cette méthode peut être utilisé en complément ou en remplacement du renvoi des résultats pendant l'exécution du test (voir Exécution du test). Cependant, les résultats renvoyés deux fois s'affichent deux fois.

Même si votre test utilise la méthode WMQTestEngine returnResult pour renvoyer tous les résultats, il doit appeler la méthode testComplete lors de son achèvement. Cette méthode est nécessaire pour terminer le traitement du test. Un tableau vide d'objets WMQTestResult peut être fourni dans la méthode testComplete si aucun nouveau résultat ne doit être renvoyé.

Pour plus d'informations, voir Structure du test.

Création d'un résultat de test

Les résultats des tests sont mis en oeuvre en tant qu'objets WMQTestResult. Créez des résultats à l'aide de :

WMQTestResult(int severity, String description, String qmgrname, String objectType)

où :

  • severity est entier identifiant la gravité de l'incident. Utilisez l'un des niveaux de gravité suivants : IMarker.SEVERITY_ERROR, IMarker.SEVERITY_WARNING ou IMarker.SEVERITY_INFO
  • description correspond à la chaîne décrivant l'incident identifié par le test, à afficher dans la vue des incidents.
  • qmgrname est le nom du gestionnaire de files d'attente où l'incident a été détecté.
  • objectType est la chaîne indiquant la classe de l'objet dans lequel l'incident peut être identifié, par exemple, "Queues" ou "Channels".

Pour plus d'informations sur l'utilisation de l'objet résultat de test, voir Achèvement du test.

Traitement de l'annulation d'un test

Vous pouvez annuler le test en cours d'exécution. La méthode isCancelled() permet de vérifier si un test doit s'arrêter.

Un bon test doit contrôler régulièrement les demandes d'annulation pour éviter tout retard inutile à l'utilisateur.

Si vous tentez d'annuler un test mais que celui-ci ne répond pas pendant une période prolongée, le moteur de test force l'arrêt du test par l'arrêt de l'unité qui l'exécute. Néanmoins, il est préférable que le test réponde dans le délai prévu, pour permettre le nettoyage des ressources utilisées et le renvoi des résultats générés.

Documentation sur le test

Les tests peuvent être dotés d'une documentation supplémentaire qui explique les résultats renvoyés et fournit de l'aide sur les actions correctives.

La documentation doit être mise à disposition au format HTML et son emplacement identifié dans le fichier plugin.xml pour le plug-in qui fournit le test. Voir Création d'un test pour des informations sur la définition de tests au format XML.

L'emplacement du fichier HTML de documentation peut être :

  • interne - stocké dans le projet enfichable qui fournit le test ; l'emplacement doit être défini dans le fichier XML par rapport au fichier plugin.xml. Par exemple, doc/TestDoc.html
  • externe - stocké sur un serveur Web, permettant de tenir à jour la documentation indépendamment de la maintenance du test ; cet emplacement doit être défini sous la forme d'une adresse URL complète, commençant par 'http://'.