Rubrique précédente: API de transaction d'agentRubrique suivante: Exemples d'API d'agent


API VSE de l'agent

Le VSE permet de mettre fin à des processus, des services, en totalité ou en partie, le long de périmètres bien définis. Les éléments internes de ces processus et ces services peuvent être remplacés par une couche exécutée par DevTest en fonction de règles personnalisées définies par l'utilisateur. Ces couches exécutées par DevTest sont appelées modèle. En général, le point de départ par défaut pour ces règles est obtenu à partir d'un enregistrement d'interactions de système dynamiques.

DevTest prend déjà en charge le VSE pour le protocole HTTP (permettant la virtualisation d'applications Web et de services Web), JMS et JDBC dans une certaine mesure. L'agent fournit des API pour activer la virtualisation directement à partir des processus de serveur, ce qui le rend indépendant par rapport aux protocoles. Vous pouvez activer la virtualisation pour HTTP, JMS et JDBC, mais également pour RMI, EJB ou tout objet Java personnalisé.

DevTest (ou un autre client de l'agent) peut réaliser cette virtualisation à l'aide des API suivantes définies dans com.itko.lisa.remote.client.VSEClient, telles qu'obtenues par la méthode AgentClient.getInstance().getVSEClient().

Remarque : Vous pouvez consulter des informations détaillées sur cette classe dans le document JavaDocs pour l'agent. Les documents JavaDocs sont disponibles dans le répertoire LISA_HOME\doc.

/**
  * Renvoie une liste de tous les noms de classe/d'interface dont le nom correspond à l'expression régulière fournie
  * ou étend/implémente une classe/interface dont le nom correspond à l'expression régulière fournie
  * si l'implémentation est définie sur true. La recherche d'annotations est prise en charge via la syntaxe suivante :
  * class regex@annotation regex (e.g. ".*.Remote@.*.Stateless").
  * @param agentInfo
  * @param regex
  * @param impl
  * @return
  */
 public String[] getMatchingClasses(IAgentInfo info, String regex, boolean impl) throws JMSInvocationException
 
 /**
  * Enregistre un rappel du VSE avec l'agent spécifié dont la méthode onFrameRecord sera appelée
  * en mode d'enregistrement pour toutes les méthodes virtualisées et dont la méthode onFramePlayback sera appelée.
  * en mode de lecture pour toutes les méthodes virtualisées.
  * @param info
  * @param callback
  */
 public void registerVSECallback(IAgentInfo info, IVSECallback callback);
 
 /**
  * Annule l'enregistrement d'un rappel de VSE avec l'agent spécifié.
  * @param info
  * @param callback
  */
 public void unregisterVSECallback(IAgentInfo info, IVSECallback callback);
 
 /**
  * Lance l'appel à notre rappel d'enregistrement de virtualisation sur l'agent spécifié.
  * @param agentInfo
  * @throws RemoteException
  */
 public void startVSERecording(IAgentInfo agentInfo) throws JMSInvocationException
 
 /**
  * Lance l'appel à notre rappel de lecture de virtualisation sur l'agent spécifié.
  * @param agentInfo
  * @throws RemoteException
  */
 public void startVSEPlayback(IAgentInfo agentInfo) throws JMSInvocationException
 
 /**
  * Arrête la virtualisation sur l'agent spécifié.
  * @param agentInfo
  * @throws RemoteException
  */
 public void stopVSE(IAgentInfo agentInfo) throws JMSInvocationException
 
 /**
  * Virtualise la classe/l'interface spécifiée et tous ses descendants sur l'agent spécifié.
  * @param agentInfo
  * @param className
  * @return
  */
 public void virtualize(IAgentInfo agentInfo, String className) throws JMSInvocationException

L'interface pour les API de rappel est définie par com.itko.lisa.remote.vse.IVSECallback et définit les méthodes suivantes :

/**
  * Il s'agit de la méthode appelée par des agents dont l'enregistrement de VSE est activé
  * lorsqu'une méthode de virtualisation est appelée. La trame VSE dispose de toutes les informations requises
  * pour lire ultérieurement la méthode en mode de lecture.
  * @param frame
  * @throws RemoteException
  */
 void onFrameRecord(VSEFrame frame) throws RemoteException;
 
 /**
  * Il s'agit de la méthode appelée par des agents dont la lecture de VSE est activée.
  * lorsqu'une méthode de virtualisation est appelée. La trame VSE dispose de toutes les informations requises
  * pour correspondre à une trame enregistrée existante de sorte que son résultat (et par arguments de référence)
  * puisse être défini de façon appropriée.
  * @param frame
  * @return
  * @throws RemoteException
  */
 VSEFrame onFramePlayback(VSEFrame frame) throws RemoteException;

Finalement, l'objet com.itko.lisa.remote.vse.VSEFrame est un objet POJO avec des accesseurs get et set pour les propriétés suivantes :

/** Obtient/définie un identificateur unique pour cette trame */
 public String getFrameId();
 public void setFrameId(String frameId);
 
 /** ID d'agent dont est issue cette trame */
 public long getAgentGuid();
 public void setAgentGuid(long agentId);
 
 /** Nom du thread sur lequel cette méthode de trame a été invoquée */
 public String getThreadName();
 public void setThreadName(String threadName);
 
 /** Nom de la classe sur laquelle cette méthode de trame a été invoquée. */
 public String getClassName();
 public void setClassName(String className);
 
 /**Identificateur unique qui effectue un suivi des objets pour la durée de la vie de la machine virtuelle */
 public String getSourceId();
 public void setSourceId(String srcId);
 
 /** ID de session la plus profonde du protocole limité par session qui englobe cette trame */
 public String getSessionId();
 public void setSessionId(String sessionId);
 
 /** Nom de la méthode qui a été appelée */
 public String getMethod();
 public void setMethod(String method);
 
 /** Tableau d'arguments convertis au format XStream pour la méthode qui a été appelée. */
 public String[] getArgumentsXML();
 public void setArgumentsXML(String[] argumentsXML);
 
 /** Résultat converti au format XStream de la méthode qui a été appelée. */
 public String getResultXML();
 public void setResultXML(String resultXML);
 
 /** Heure (serveur) d'appel de la méthode */
 public long getTime();
 public void setTime(long time);
 
 /** Durée d'exécution de la méthode */
 public long getClockDuration();
 public void setClockDuration(long duration);
 
 /** Indique d'utiliser getCode ou ResultXML pour calculer le résultat attendu en mode de lecture. */
 public boolean isUseCode();
 public void setUseCode(boolean useCode);
 
 /**
  * Code à exécuter sur le serveur si isUseCode est défini sur True. Il peut s'agir d'un code arbitraire.
  * ayant accès à l'objet ($0) et aux arguments de la méthode ($1, $2...)
  */
 public String getCode();
 public void setCode(String code);