Thursday, May 31, 2007

Jmeter com JSF

Quebrei um pouco a cabeça pra fazer o jmeter "testar" uma aplicação feita em JavaServer Faces. Esse site indicou o caminho das pedras... Mas mesmo assim precisei seguir alguns passos, pra resumir:

1º Criar um HTTP Proxy Server abaixo de WorkBench, configurar a porta e indicar o proxy no navegador. Este proxy deve rodar no server!

2º Ao requisitar uma pagina que passe pelo proxy, todos os dados enviados do client para o server são armazenados, como HTTP Request, com o respectivo método http e parametros enviados.

3º Ainda não é suficiente... Com as requisições na mão (na sequencia que foram solicitadas) é necessário criar XPath Extractor dentro da primeira request para descobrir qual o valor do controle de estado do faces, o "javax.faces.ViewState". Este cara é armazenado em um inputHidden em cada página. A query para descobrir o valor é //input[@id='javax.faces.ViewState']/@value. Além da query é necessário definir Reference Name, o qual valor será utilizado por outras request's um exemplo seria view.

4º Agora é o momento de usar a variável definida no XPath. Isso na segunda request feita para um mesma página (via post). Para isso é colocar o parametro javax.faces.ViewState com o valor ${view} na configuração do HTTP Request.

5º Por fim é necessário criar uma HTTP Cookie Manager abaixo do Thread Group, e nele adicionar um valor de cookie, neste caso o JSessionID. O name deve ficar com o valor jsessionid, um valor default e o domínio devem ser preenchido.

Depois é rodar o teste.

Friday, May 25, 2007

JMeter em um diretório com espaços...

Outro dia estava aplicando um teste de stress em um EJB, mas ao fazer o lookup do bean o jmeter lançava a seguinte exception:

Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested ex
ception is:
java.net.MalformedURLException: no protocol: de
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:282)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:4
66)
...

Quebrei um pouco a cabeça, e foi ai que caiu a ficha, o jmeter estava instalado em:
C:\Arquivos de Programas\...

Pronto tai o problemas, o espaço no nome do diretório! Coloquei o jmeter em outro dir, sem espaço no nome, e teste foi executado com sucesso.

Thursday, May 17, 2007

Informações da VM em jmx-console (jboss)

O jmx-console do jboss disponibiliza algumas informações sobre a VM, similar ao jconsole.

Pra isso é só logar no jmx-console:
--> em jboss.system selecionar type=Serverinfo
--> no JMX MBean View além dos atributos da VM, podemos invocar operações como por exemplo listMemoryPools, que exibe as informações de uso de memória.

Tuesday, May 08, 2007

Maldito PermGen

PermGen - outofmemory

+ PermGen

jconsole no jboss

Pra acessar o jconsole no jboss, siga os passos:
1º colocar as seguintes propriedades no run do jboss
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port={nroPorta} -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

2º no jconsole informar o host e o nroPorta que vc definiu no jboss.

jmx é bala.