Question

Nous avons une communication applet-servlet que nous aimerions enregistrer avec le proxy HTTP JMeter. Il fonctionne avec des messages GET jusqu'à ce que l'applet envoie un message HTTP POST qui comprend des objets Java sérialisés (types intégrés), nous obtenons cette erreur dans le Applet:

texte alt http://img339.imageshack.us/img339/9238/appletservletjmeterhttp .png

OK, donc il y a un conflit de version JVM quelque part dans la file d'attente. Mais où?

La communication fonctionne OK sans JMeter, c'est: Applet -> Tomcat -> Servlet. Tout sur ma machine locale.

Mais il ne fonctionne pas par JMeter: Applet -> proxy JMeter -> Tomcat -> Servlet. Aussi tout sur ma machine.

Il est comme si JMeter modifiait le contenu du message POST ...

Je l'ai testé avec le proxy Apache ainsi, fonctionne très bien.

Même chose plus drôle est que je ne dispose que d'une version de Java installée, un JDK et un JRE. Les deux 1.6.0_07 ...

Je pensais que je demanderais avant de commencer à creuser plus profondément dans le trou du lapin; -)

Voici le vidage hexadécimal des données POST envoyées directement à Tomcat:

00000348  ac ed 00 05 73 72 00 11  6a 61 76 61 2e 6c 61 6e ....sr.. java.lan
00000358  67 2e 49 6e 74 65 67 65  72 12 e2 a0 a4 f7 81 87 g.Intege r.......
00000368  38 02 00 01 49 00 05 76  61 6c 75 65 78 72 00 10 8...I..v aluexr..
00000378  6a 61 76 61 2e 6c 61 6e  67 2e 4e 75 6d 62 65 72 java.lan g.Number
00000388  86 ac 95 1d 0b 94 e0 8b  02 00 00 78 70 00 00 01 ........ ...xp...
00000398  7b                                               {

Et voici les données envoyées par JMeter quand:

00000128  ac ed 00 05 73 72 00 11  6a 61 76 61 2e 6c 61 6e ....sr.. java.lan
00000138  67 2e 49 6e 74 65 67 65  72 12 e2 a0 a4 f7 3f 3f g.Intege r.....??
00000148  38 02 00 01 49 00 05 76  61 6c 75 65 78 72 00 10 8...I..v aluexr..
00000158  6a 61 76 61 2e 6c 61 6e  67 2e 4e 75 6d 62 65 72 java.lan g.Number
00000168  3f ac 3f 1d 0b 3f e0 3f  02 00 00 78 70 00 00 01 ?.?..?.? ...xp...
00000178  7b                                               {

Beaucoup de s « 3f » dans la deuxième décharge ... Donc, c'est certainement une sorte d'un problème de codage. Le type de contenu est correctement défini dans l'en-tête:

POST /ABCOrder/ABCServlet?cmd=getNetworkConnection HTTP/1.1
Connection: keep-alive
Content-Type: application/octet-stream
Host: 109.107.148.164:8443
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
User-Agent: Mozilla/4.0 (Windows Vista 6.0) Java/1.6.0_14
Content-Length: 81
Était-ce utile?

La solution

Voici la solution: JMeter a un fichier de configuration, bin / jmeter.properties . Ici vous pouvez trouver une option où vous pouvez définir les types de contenu binaire:

# Binary content-type handling
# These content-types will be handled by saving the request in a file:
proxy.binary.types=application/x-amf,application/x-java-serialized-object

Maintenant, je ne sais pas pourquoi n'est pas inclus application / octet-stream par défaut, mais vous pouvez simplement l'ajouter à la liste, et vous avez terminé.

proxy.binary.types=application/x-amf,application/x-java-serialized-object,application/octet-stream

Voici comment je l'ai trouvé sur: https://issues.apache.org/bugzilla/show_bug.cgi?id= 44808

Est-ce une recherche sur JMeter fermé insectes ...: -)

Autres conseils

Une autre personne signale un très similaire: http://markmail.org/message/pl5erin2isehm5q6 . Je ne peux pas trouver toute question relative à ce problème dans leur cependant. On dirait que vous avez gagné le privilège de creuser plus profondément dans le trou de lapin:)

La réponse acceptée ne permet d'enregistrer les demandes statiques. Ce ne sera pas réaliste car il ne permettra à aucun variabilisation des demandes (par exemple changer le mot recherché, ...) afin de toujours être le stress test le même groupe de données.

Pour en faire un vrai test, vous devez utiliser un plugin tiers.

Un plugin JMeter commercial permet à ce sujet, voir:

Pour faire vos tests réalistes, vous aurez besoin de variabiliser contenu dans les objets sérialisés.

Ce plugin Java sérialisation permettra ce qui suit:

  • Enregistrement du trafic facile avec JMeter Proxy Server, un plan de test à l'aide Sampler personnalisé sera créé

  • variabilisation facile des demandes (qui apparaîtra comme XML) grâce à la syntaxe facile par exemple $ {searchedWord} où searchedWord peut provenir d'un fichier CSV ou une variable définie par l'utilisateur.

  • extraction facile de données à partir des réponses normalisées en utilisant les processeurs de messages JMeter

  • débogage facile de la demande / réponses par affichage standard JMeter Résultats élément d'arbre

Disclaimer: Je travaille pour cette entreprise

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top