Guide de dépannage

Conception

1. Lors l'enregistrement d'un scénario Oracle Forms, j'ai le message suivant qui apparait à l'écran: Librairie Java Oracle Forms manquante.
2. NeoLoad n'a pas identifié de requêtes de type Oracle Forms. Les requêtes Oracle Forms de l'enregistrement apparaissent comme des requêtes de type POST binaire classiques.
3. Les enregistrements initialement non-décodés n'ont pas été réparés après avoir configuré correctement les entêtes HTTP dans les préférences générales Oracle Forms.
4. Lors de l'enregistrement d'un scénario Oracle Forms, certaines requêtes de l'enregistrement n'ont pas été décodées correctement. La majorité des requêtes ont été décodées correctement.
5. Lors de l'enregistrement d'un scénario Oracle Forms utilisant WebUtil, l'applet Oracle Forms se bloque.
1.

Lors l'enregistrement d'un scénario Oracle Forms, j'ai le message suivant qui apparait à l'écran: Librairie Java Oracle Forms manquante.

Pour fonctionner correctement, NeoLoad a besoin d'une librairie Java présente sur le serveur d'applications Oracle Forms. Cette librairie doit être placée dans le dossier spécifié par le message. Pour plus d'informations, se référer à la configuration de NeoLoad pour Oracle Forms.

[Note]Note

Une fois la librairie copiée dans NeoLoad, il faut impérativement redémarrer NeoLoad (il n'est pas nécessaire de redémarrer toute la machine) pour prendre les changements en compte.

2.

NeoLoad n'a pas identifié de requêtes de type Oracle Forms. Les requêtes Oracle Forms de l'enregistrement apparaissent comme des requêtes de type POST binaire classiques.

Il y a plusieurs points à vérifier:

  1. Vérifiez que la librairie Oracle Forms a été placée dans NeoLoad. Une fenêtre de dialogue a du vous informer que la librairie Oracle Forms était manquante. Pour plus d'informations, consulter la documentation générale du module Oracle Forms pour savoir comment ajouter cette librairie dans NeoLoad.

    A la fin de l'enregistrement, si la librairie Oracle Forms est manquante mais que les requêtes ont bien été identifiée par NeoLoad, vous devriez avoir des requêtes ayant l'icône Oracle Forms mais non décodées.

  2. La librairie Oracle Forms a été ajoutée. NeoLoad n'a pas identifié les requêtes Oracle Forms. Les requêtes Oracle Forms n'ont pas l'icône Oracle Forms et apparaissent comme des requêtes POST binaire classiques.

    Procédure 11.2. Résoudre ce problème

    1. Faire un enregistrement de l'application Oracle Forms.

    2. Parcourir manuellement l'enregistrement et repérer une requête Oracle Forms.

      Une requête Oracle Forms non identifiée est de type POST binaire et a un contenu binaire non-lisible.

    3. Cliquer sur le bouton "Avancé..." puis sélectionner l'onglet Requête enregistrée.

    4. Copier le contenu du champ texte dans un fichier texte pour l'avoir à disposition plus tard.

    5. Sélectionner l'onglet Réponse enregistrée.

    6. Copier le contenu du champ texte dans un autre fichier texte pour l'avoir à disposition plus tard.

    7. Quitter la fenêtre des paramètres avancés de la requête.

    8. Cliquer sur Edition > Préférences > Préférences générales > Oracle Forms.

    9. Pour la requête, comparer les entêtes Content-type et User-Agent aux expressions régulières configurées.

    10. Pour la réponse, comparer les entêtes Content-type et Server aux expressions régulières configurées.

    11. Ajouter si nécessaire de nouvelles expressions régulières vérifiant les entêtes de l'enregistrement.

    12. Recommencer l'enregistrement et vérifier que les requêtes enregistrées ont bien été décodées en XML.

    [Note]Note

    Pour plus de détails sur l'écriture d'expressions régulière, se reporter à l'Annexe dédiée aux expressions régulières.

3.

Les enregistrements initialement non-décodés n'ont pas été réparés après avoir configuré correctement les entêtes HTTP dans les préférences générales Oracle Forms.

La modification n'est pas rétro-active. Il est nécessaire de refaire l'enregistrement. Cela peut nécessiter plusieurs enregistrements pour aboutir à des expressions régulières fonctionnelles.

4.

Lors de l'enregistrement d'un scénario Oracle Forms, certaines requêtes de l'enregistrement n'ont pas été décodées correctement. La majorité des requêtes ont été décodées correctement.

Avant de démarrer un nouvel enregistrement, assurez-vous d'avoir fermé toutes les instances du navigateur, particulièrement si certaines sont encore ouvertes et connectées à des applets Oracle Forms. Ces requêtes non-décodées capturées lors de l'enregistrement proviennent généralement d'applet Oracle Forms ouvertes dans d'autres instances du navigateur.

5.

Lors de l'enregistrement d'un scénario Oracle Forms utilisant WebUtil, l'applet Oracle Forms se bloque.

NeoLoad supporte la technologie WebUtil. Dans le cas où WebUtil est utilisé pour communiquer avec des dlls, il se peut que le navigateur lancé automatiquement lors de l'enregistrement par NeoLoad rentre en conflit avec le chargement de ces dlls. La meilleure solution est de lancer manuellement le navigateur, afin d'éviter le conflit. Voici les instructions à suivre.

Procédure 11.3. Eviter le blocage de l'applet Forms lors de l'enregistrement

  1. Depuis le menu NeoLoad, cliquer sur "Enregistrer > Démarrer l'enregistrement".

  2. Décocher l'option "Démarrer le navigateur".

  3. Lancer manuellement le navigateur internet, puis configurer manuellement le proxy sur le proxy NeoLoad (par défaut: localhost:8090). Consulter la section intitulée « Régler manuellement le proxy d'enregistrement » pour plus de détails.

  4. Enregistrer le scénario Oracle Forms.

  5. Se déconnecter de l'application Oracle Forms.

  6. Rétablir les paramètres de proxy d'origine dans le navigateur, puis fermer le navigateur.

  7. Depuis le menu NeoLoad, cliquer sur "Enregistrer > Stopper l'enregistrement".

Exécution

1. Lorsque j'exécute une validation de mon utilisateur virtuel, l'exécution s'arrête sur l'erreur NL-PLUGIN-ENGINE-03.
2. J'ai enregistré un scénario simple Oracle Forms. Je n'ai pas modifié l'enregistrement et je le rejoue tel quel en utilisant la validation d'utilisateur virtuel. L'option de suppression automatique des composants invalides lors de l'enregistrement est désactivée. L'exécution de l'utilisateur virtuel échoue en renvoyant une erreur NL-OF-PLUGIN-ENGINE-03.
3. J'ai enregistré un scénario simple Oracle Forms. J'ai créé un utilisateur virtuel qui fait une boucle sur un ensemble de requête Oracle Forms sur n itérations. L'exécution de l'utilisateur virtuel échoue en renvoyant une erreur NL-OF-PLUGIN-ENGINE-03. Je remarque que l'exécution s'est terminée sur cette erreur lors de la 2ème itération de la boucle. L'option de suppression automatique des composants invalides lors de l'enregistrement est activée.
4. Lorsque j'exécute une validation de mon utilisateur virtuel, l'exécution s'arrête sur l'erreur NL-OF-PLUGIN-ENGINE-01. Les détails de l'erreur mentionnent une erreur ifError.
5. Malgré l'aide apportée par ce guide de dépannage, j'ai besoin de plus d'informations sur ce que fait NeoLoad à l'enregistrement et à l'exécution.
6. Lors de l'exécution de mon utilisateur virtuel, je rencontre l'erreur suivante:
7. Après un test en charge Oracle Forms, plusieurs processus frmweb.exe subsistent sur le serveur.
1.

Lorsque j'exécute une validation de mon utilisateur virtuel, l'exécution s'arrête sur l'erreur NL-PLUGIN-ENGINE-03.

Les requêtes Oracle Forms qui n'ont pas été décodées correctement ne peuvent pas être rejouées. Ces requêtes ne peuvent pas non plus être réparées. Consulter les autres questions/réponses de cette partie de la documentation et essayez d'identifier le problème rencontré.

[Note]Note

Une fois le problème résolu, il est recommandé de supprimer les enregistrements précédents qui n'ont pas correctement fonctionnés.

2.

J'ai enregistré un scénario simple Oracle Forms. Je n'ai pas modifié l'enregistrement et je le rejoue tel quel en utilisant la validation d'utilisateur virtuel. L'option de suppression automatique des composants invalides lors de l'enregistrement est désactivée. L'exécution de l'utilisateur virtuel échoue en renvoyant une erreur NL-OF-PLUGIN-ENGINE-03.

Il arrive que l'applet Oracle Forms envoie des requêtes comportant des composants invalides au moment de l'enregistrement. Ce problème peut être résolu de 2 manières différentes.

  1. Supprimer manuellement les DataMessage des requêtes référençant des composants invalides.

  2. Activer l'option Oracle Forms du projet nommée "Suppression automatique des composants invalides lors de l'enregistrement", et refaire un enregistrement.

Procédure 11.4. Suppression manuelle des composants invalides

  1. Exécuter la validation de l'utilisateur virtuel qui comporte l'erreur rencontrée.

  2. Sélectionner la requête en erreur. Dans le panneau "Détails", cliquer sur le bouton Réponse.

  3. Prendre note des handlerId entre [ et ] mentionnés comme inconnus.

  4. Cliquer sur le lien bleu "Requête" pour ouvrir automatiquement la requête dans les profils d'Utilisateurs Virtuels.

  5. Supprimer les DataMessage du contenu XML de la requête dont les handlerId sont reportés comme inconnus.

  6. Exécuter à nouveau une validation de l'utilisateur virtuel. Répeter les opérations 1 à 5 pour chaque requête présentant la même erreur.

Procédure 11.5. Suppression automatique des composants invalides

  1. Aller dans Edition > Préférences > Préférences du projet > Oracle Forms.

  2. Cocher la case Supprimer automatiquement les composants invalides puis cliquer sur OK.

  3. Refaire un enregistrement de l'application Oracle Forms.

  4. Exécuter une validation de l'utilisateur virtuel et vérifier qu'il n'y a plus d'erreur du type NL-OF-PLUGIN-ENGINE-03.

[Note]Note

La modification n'est pas rétro-active: les enregistrements précédents ne sont pas affectés. Par conséquent, si vous souhaitez rejouer les enregistrements précédents, il faut les nettoyer: il est nécessaire de suivre la procédure de suppression manuelle des composants invalides.

3.

J'ai enregistré un scénario simple Oracle Forms. J'ai créé un utilisateur virtuel qui fait une boucle sur un ensemble de requête Oracle Forms sur n itérations. L'exécution de l'utilisateur virtuel échoue en renvoyant une erreur NL-OF-PLUGIN-ENGINE-03. Je remarque que l'exécution s'est terminée sur cette erreur lors de la 2ème itération de la boucle. L'option de suppression automatique des composants invalides lors de l'enregistrement est activée.

Il s'agit d'un problème de conception de l'utilisateur virtuel. Cela signifie que lors de la 2ème itération l'utilisateur virtuel n'était plus dans le même état graphique dans l'applet Oracle Forms que lors de la 1ère itération. Il faut s'assurer qu'à chaque début d'itération de la boucle, l'utilisateur virtuel soit dans le même état graphique au clic près.

L'état graphique dans une applet Oracle Forms se définit par un ensemble de composants graphiques existants à un moment donné. Voici un exemple de composant crée dans une réponse du serveur:

<DataMessage>
  <actionCode>CREATE</actionCode>
  <handlerId>8</handlerId>
  <handlerClassId>259</handlerClassId>
  <properties>
    <Property>
      <id>DRAWN_CANVASUSAGE</id>
      <type>BYTE</type>
      <value objectClass="byte">3</value>
    </Property>
  </properties>
</DataMessage>
Le composant portant le handlerId 8 est créé. Dans toutes les requêtes qui suivent, le handlerId 8 pourra être utilisé dans les DataMessage. Lorsque le message suivant est rencontré dans une réponse du serveur:

<DataMessage>
  <actionCode>DESTROY</actionCode>
  <handlerId>8</handlerId>
  <properties/>
</DataMessage>

Cela signifie que le composant portant le handlerId 8 est détruit. Les requêtes qui suivent cette réponse ne peuvent plus contenir de DataMessage référençant le composant portant le handlerId 8.
[Note]Note

Il se peut qu'une valeur d'un handlerId soit réutilisée par un composant graphique d'un tout autre type plus tard dans l'enregistrement. Ces identifiants numériques sont assignés à un seul composant simultanément par le serveur, mais peuvent être utilisés par plusieurs composants différents dont le cycle de vie est disjoint.

4.

Lorsque j'exécute une validation de mon utilisateur virtuel, l'exécution s'arrête sur l'erreur NL-OF-PLUGIN-ENGINE-01. Les détails de l'erreur mentionnent une erreur ifError.

Il existe plusieurs types d'erreur ifError, les plus courantes sont:

  • ifError:3

    Le serveur indique que le client ne gère pas les cookies. Il faut activer la gestion des cookies pour l'utilisateur virtuel.

  • ifError:4

    Le serveur n'a pas pu créer le processus Oracle Forms. Il s'agit d'un problème coté serveur.

  • ifError:5

    Le serveur n'a pas pu démarrer le processus Oracle Forms. Il s'agit d'un problème coté serveur.

  • ifError:6

    Le processus serveur responsable de gérer la session Oracle Forms en cours n'existe plus. Cela peut arriver en lorsque le serveur est soumis à une forte charge ou en cas d'erreur de conception dans l'utilisateur virtuel rejoué. Dans ce dernier cas, veuillez vous référer à l'ensemble des bonnes pratiques.

  • ifError:7

    Le processus serveur est actuellement occupé. il faut réessayer la requête plus tard. Si vous voyez cette erreur, cela signifie que NeoLoad a tenté 5 fois d'envoyer la requête sans réponse valide du serveur.

  • ifError:11/xxx

    Le serveur est occupé, réessayer la requête dans xxx millisecondes. Ce type d'erreur est géré automatiquement par NeoLoad et ne devrait pas apparaitre durant le test.

5.

Malgré l'aide apportée par ce guide de dépannage, j'ai besoin de plus d'informations sur ce que fait NeoLoad à l'enregistrement et à l'exécution.

Le module Oracle Forms peut être configuré en mode DEBUG. Dans ce mode, le module consigne beaucoup d'informations dans les fichiers de logs. Ces logs permettent de débuguer l'exécution d'un utilisateur virtuel. Cependant, il est fortement déconseillé de l'utiliser sur un test en charge.

Lors de l'enregistrement, les logs d'informations sont stockés dans les fichiers nommés plugins.log.xxxxx.

Lors de l'exécution, les logs d'informations sont stockés dans les fichiers nommés loadgenerator.log.xxxxx.

Pour accéder rapidement au répertoire contenant les fichiers de logs, dans NeoLoad, cliquez sur Aide > Ouvrir le répertoire des logs.

Procédure 11.6. Configurer le module Oracle Forms en mode DEBUG

  1. Stopper NeoLoad.

  2. Ouvrir le répertoire <neoload>/conf. Editer les fichiers logs.xconfig et lglogs.xconfig.

  3. Remplacer la ligne suivante:

    <category name="neoload.plugins" log-level="ERROR">

    Par la ligne:

    <category name="neoload.plugins" log-level="DEBUG">
  4. Redémarrer NeoLoad. Le module est maintenant en mode DEBUG aussi bien à l'enregistrement qu'à l'exécution.

6.

Lors de l'exécution de mon utilisateur virtuel, je rencontre l'erreur suivante:

Message: An error occured while reading the encrypted Oracle Forms response.

Details: Oracle Forms request max retry count reached (5)

Lorsque le serveur répond ifError:7/500, NeoLoad reproduit le comportement de l'applet Oracle Forms: par défaut, il essaie jusqu'à 5 fois, en appliquant un delai de 1000 millisecondes entre chaque essai, de renvoyer la requête au serveur en vue d'obtenir une réponse valide. Le comportement de NeoLoad peut être redéfini en modifiant le fichier de configuration controller.properties.

Procédure 11.7. Redéfinir les propriétés Oracle Forms NeoLoad

  1. Stopper NeoLoad.

  2. Ouvrir le fichier <neoload>/conf/controller.properties.

  3. Si la catégorie de préférences [OracleForms] n'existe pas, la créer.

  4. En dessous de la catégorie, créer la clef oracle.forms.session.migration.max.retry. Voici un exemple:

    oracle.forms.session.migration.max.retry=5

    Cette clef définit le nombre maximal d'essais à 5 avant de renvoyer une erreur. Par défaut, NeoLoad fait 5 essais au maximum. La valeur de la clef doit être un entier supérieur ou égal à 1.

  5. Créer la clef oracle.forms.session.migration.retry.delay. Voici un exemple:

    oracle.forms.session.migration.retry.delay=1000

    Cette clef définit le temps d'attente entre chaque essai, exprimé en millisecondes. Par défaut, NeoLoad applique un délai de 1000 millisecondes. La valeur doit êre un entier supérieur ou égal à 1000.

  6. Sauver le fichier de configuration.

  7. Redémarrer NeoLoad.

7.

Après un test en charge Oracle Forms, plusieurs processus frmweb.exe subsistent sur le serveur.

Il y a plusieurs points à vérifier:

  1. S'assurer que chaque utilisateur virtuel quitte correctement l'application Oracle Forms. Si c'est le cas, la dernière requête Oracle Forms porte le nom session_close. Cette requête doit également avoir l'entête HTTP ifSession: close.

  2. S'assurer que la politique d'arrêt de chaque population est configurée sur "Indéterminée: laisser les utilisateurs virtuels terminer leurs actions".