Pergunta

Temos uma comunicação de Applet-Servlet que gostaríamos de gravar com o proxy HTTP do JMeter. Ele funciona com as mensagens Get até que o applet envie uma mensagem de postagem HTTP, que inclui alguns objetos java serializados (tipos internos), então obtemos esse erro no applet:

TEXTO DE ALT http://img339.imageshack.us/img339/9238/AppletServletJMeterhttp.png

OK, então há algum conflito na versão da JVM em algum lugar na fila. Mas onde?

A comunicação funciona bem sem JMeter, ou seja: applet -> tomcat -> servlet. Tudo na minha máquina local.

Mas não funciona através do JMeter: Applet -> JMeter Proxy -> Tomcat -> Servlet. Também tudo na minha máquina.

É como se o JMeter estivesse modificando o conteúdo da mensagem de postagem ...

Também testei com o proxy do Apache, funcionando bem.

Ainda mais engraçado é que tenho apenas uma versão do Java instalada, um JDK e um JRE. Ambos 1.6.0_07 ...

Pensei em perguntar antes de começar a cavar mais fundo na toca do coelho ;-)

Aqui está o depósito hexadecimal dos dados postais enviados diretamente ao 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                                               {

E aqui estão os dados quando enviados pelo Jmeter:

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                                               {

Muitos "3F" no segundo despejo ... então esse é definitivamente algum tipo de problema de codificação. O tipo de conteúdo é definido corretamente no cabeçalho:

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
Foi útil?

Solução

Aqui está a solução: o jmeter tem um arquivo de configuração, bin/jmeter.properties. Aqui você pode encontrar uma opção na qual possa definir os tipos de conteúdo binário:

# 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

Agora eu não sei por que Aplicação/stream de octeto Não está incluído por padrão, mas você pode simplesmente adicioná -lo à lista e terminar.

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

Foi assim que eu descobri:https://issues.apache.org/bugzilla/show_bug.cgi?id=44808

Fiz uma pesquisa no Jmeter fechado insetos... :-)

Outras dicas

Alguém está relatando um muito semelhante: http://markmail.org/message/pl5erin2isehm5q6. Não consigo encontrar nenhum problema relacionado a esse problema em seus rastreador de bug no entanto. Parece que você ganhou o privilégio de se aprofundar na toca do coelho :)

A resposta aceita apenas permite gravar solicitações estáticas. Isso não será realista, pois não permitirá nenhuma variabilização de solicitações (por exemplo, alterando a palavra pesquisada, ...) para que você sempre esteja testando o mesmo grupo de dados.

Para torná -lo um teste real, você precisa usar um plug -in de terceiros.

Um plugin comercial do JMeter permite isso, veja:

Para tornar seus testes realistas, você precisará variabilizar o conteúdo nos objetos serializados.

Este plug -in de serialização Java permitirá o seguinte:

  • Fácil gravação do tráfego com o JMeter Proxy Server, um plano de teste usando amostrador personalizado será criado

  • Variabilização fácil de solicitações (que aparecerão como XML) através da sintaxe tão fácil quanto, por exemplo, $ {Searchedword} onde o pesquisado pode vir de um CSV ou qualquer variável definida pelo usuário.

  • Extração fácil de dados de respostas usando o JMeter Standard Post Processors

  • Fácil depuração de solicitação/respostas através do elemento de árvore de visualização padrão do jmeter

Isenção de responsabilidade: trabalho para esta empresa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top