Un convertisseur de paquets convertit un flux de
paquets d'enregistreur. Utilisez des convertisseurs de paquets pour adapter les données brutes
capturées par les enregistreurs dans un format utilisable par les générateurs
de tests.
Un convertisseur suit généralement l'un des schémas suivants :
- Un convertisseur filtrant supprime les paquets en entrée qui ne remplissent pas des
critères spécifiques. Il ne modifie pas de paquets et n'ajoute pas de nouveaux paquets au
flux en sortie. Le produit est fourni avec un convertisseur générique,
dont l'identifiant est com.ibm.rational.test.lt.testgen.core3.filter. Il est paramétrable à l'aide de
conditions.
- Un convertisseur annotateur ne supprime ni ne modifie de paquets dans le flux en
entrée, mais ajoute des paquets supplémentaires dans le flux en sortie. Ces paquets sont des paquets d'annotation qui transmettent
des informations supplémentaires découlant des autres paquets. Par exemple, un
convertisseur peut rechercher des limites de session, de connexion ou de page dans un
flux de paquets, puis ajouter un paquet de limite chaque fois qu'une limite est détectée
dans le flux en entrée. Cela aide le générateur de test à identifier les limites car il
n'a pas besoin d'effectuer des recherches préalables dans le flux de paquets.
- Un convertisseur de réorganisation n'ajoute pas, ne modifie pas et ne supprime pas de
paquets dans le flux en entrée, mais il les réorganise. Par exemple, le trieur de paquets
intégré au produit, dont l'identifiant est com.ibm.rational.test.lt.testgen.core3.packetSorter,
trie les paquets en fonction de leur horodatage de début.
- Un convertisseur regroupeur possède des types de paquet en entrée et en sortie
différents. Il regroupe plusieurs paquets en entrée dans un même paquet en sortie.
Il traduit généralement un protocole de niveau inférieur en un protocole de niveau supérieur. Par exemple, le produit intègre un convertisseur qui convertit les données brutes d'un
flux d'octets échangé entre un client et un serveur HTTP en paquets HTTP agrégés
(paires de demande/réponse).
Pour définir un nouveau convertisseur, effectuez les étapes suivantes :
- Déclarez un nouveau type de convertisseur de paquets dans le fichier plugin.xml en utilisant
le point d'extension com.ibm.rational.test.lt.testgen.core3.packetConverter.
- Affectez au convertisseur de paquets un ID unique et un nom.
- Déclarez les propriétés requises du flux d'entrée de paquets reçu par le
convertisseur. L'infrastructure inclut les convertisseurs nécessaires dans la phase de
conversion pour que ces propriétés soient vérifiées lorsque les paquets atteignent le
convertisseur. Par exemple, si le convertisseur requiert que les paquets en entrée
soient classés en fonction de leur horodatage de début, spécifiez le paramètre sorted.
- Déclarez quelles propriétés ce convertisseur ajoute au flux en sortie ou
supprime du flux en sortie, par rapport aux propriétés du flux en entrée. Par exemple, un convertisseur peut contrecarrer l'effet
de la propriété ordered du flux en entrée ; dans ce cas, le paramètre sorted
doit être inclus dans la classe removedProperties.
- Si le convertisseur possède des types de paquet en entrée et en sortie différents et
qu'il peut être considéré comme un convertisseur de types de paquet, déclarez qu'il
contribue à la conversion des types de paquet et spécifiez les types de ses paquets
d'entrée et de sortie.
- Définissez une classe d'implémentation qui implémente l'interface
com.ibm.rational.test.lt.testgen.core.conversion.IPacketConverter.
Tenez compte des points suivants à propos des implémentations de IPacketConverter :
- Généralement, vous étendez la classe com.ibm.rational.test.lt.testgen.core.conversion.BasePacketConverter, qui offre une
implémentation de base et requiert uniquement de réécrire les méthodes spécifiques.
- Un convertisseur de paquets est une interface IPacketReferenceOutputStream qui écrit dans
une autre interface IPacketReferenceOutputStream. En
d'autres termes, un convertisseur de paquets contient une méthode writePacket() qui
est appelée par l'infrastructure pour chaque paquet en entrée qu'il traite. Le
convertisseur de paquets est chargé d'appeler
la méthode getContext().getOutputStream().writePacket() chaque fois qu'il doit envoyer
un paquet à sa sortie.
- Un convertisseur de paquets peut posséder des options. Ces dernières sont
obtenues via la méthode getContext().getConfiguration(), qui est généralement appelée
dans la méthode initialize().
- Un convertisseur de paquets peut envoyer des paquets supplémentaires à sa sortie
dans la méthode complete(). Cette méthode est appelée quand il n'y a plus de paquets en
entrée à consommer.
- Utilisez la méthode getContext().logMessage() pour transmettre les messages et
notamment les messages d'erreur du générateur de test à l'utilisateur. Si le message
est relatif à une erreur irrémédiable, l'infrastructure arrête le processus de génération de
test.
Pour des raisons d'évolutivité, les convertisseurs manipulent des objets IRecorderPacketReference
au lieu d'objets IRecorderPacket. Pour obtenir les meilleurs résultats, suivez ces procédures lorsque
vous écrivez le code de convertisseurs de paquets :
- Une interface IRecorderPacket peut être obtenue à partir d'une référence qui
utilise la méthode IRecorderPacketReference.getRecorderPacket().
- Un convertisseur qui doit répercuter à sa sortie le même paquet que celui reçu en entrée doit écrire la
même instance de référence que celle qu'il a reçue.
- Lorsqu'un convertisseur instancie un nouveau paquet d'enregistreur, il peut
encapsuler le paquet dans une nouvelle référence en utilisant la méthode getContext().createPacketReference()
de sorte que le paquet puisse être envoyé comme sortie.
- Tout comme les enregistreurs, les convertisseurs peuvent générer des pièces jointes de
paquet. Pour créer une nouvelle pièce jointe, utilisez la méthode getContext().createPacketAttachment().
- Si le convertisseur doit conserver un paquet pendant un certain temps avant que ce
paquet ne soit envoyé comme sortie, le convertisseur peut décharger le paquet et ne
conserver qu'une référence à ce paquet. Pour cela, appelez la méthode unload() sur la référence du
paquet.
- Les convertisseurs sont fournis avec une fonction permettant d'accumuler
efficacement une grande quantité de paquets et de les supprimer atomiquement ou de
les expulser vers la sortie. Pour plus de détails, consultez la documentation
de l'interface com.ibm.rational.test.lt.testgen.core.store.IPacketReferenceStore. Un magasin de
paquets peut être créé à l'aide de la méthode getContext().createPacketStore().