Dica útil para projetos aonde os builds são realizados pelo ANT. O projeto jmeter-ant-task define uma task customizada do ANT, para executar testes (stress / carga / ...) com o JMeter.
Na task jmeter existem diversos atributos utilizados para indicar qual é o diretório de instalação do JMeter, qual é o diretório com os planos de testes (arquivos jmx), qual diretório deve conter resultados dos testes devem ser armazenados e outros.
O trecho de build.xml a seguir demonstra como utilizar a task para executar o plano de testes MyTest.jmx.
<project name="MyProject" basedir="."> <!-- define uma var que guarda a url de app qualquer --> <property name="app.url" value="htpp://localhost:8080/myapp" /> <!-- vars utilizadas pelo jmeter --> <property name="jmeter-home" value="/opt/jmeter" /> <property name="jmeter-lib-dir" value="${jmeter-home}/lib" /> <property name="jmeter-results" value="/home/app/jmeter-results" /> <property name="jmeter-tests" value="/home/app/jmeter-tests" /> <!-- Carrega a task do JMeter --> <taskdef name="jmeter" classpathref="apache.ant.ext.lib.classpath" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> <target name="jmeter.run" depends="" > <echo>Acionando o JMeter local p/ os testes de stress</echo> <jmeter jmeterhome="${jmeter-home}" testplan="${jmeter-tests}/MyTest.jmx" resultlogdir="${jmeter-results}/jtl" jmeterlogfile="${jmeter-results}/log"> <property name="app.url" value="${app.url}"/> <!-- passa argumentos p/ a vm do jmeter --> <jvmarg value="-Xincgc"/> <jvmarg value="-Xmx128m"/> </jmeter> </target> ... </project>
No inicio do build são definidas variáveis utilizadas pelo o script, boa parte delas na task jmeter. Um detalhe sobre o plano de teste é que ele depende de uma variável que indica a url da aplicação, app.url. Note o uso da tag property, nela eu repasso a variável definida no build ANT, a ${app.url} com o endereço da aplicação. Dessa é possível enviar informações para o JMeter, sem manipular o arquivo jmeter.properties. Na tag jvmarg você pode indicar parâmetros para a VM do JMeter.
O target a seguir simila a execução do Jmeter remoto, em outro servidor. Para executar o JMeter remoto, é necessário pelo menos dois nós (instâncias) do JMeter, uma cliente e outra servidor, veja mais na documentação do projeto. O próximo target aciona o JMeter cliente, na mesma máquina que o build está sendo executado, indicando a propriedade remote_hosts. Dessa forma a instância cliente irá acionar o JMeter servidor nesse endereço indicado.
... <!-- host/ip para o jmeter remoto --> <property name="jmeter-host" value="192.168.1.18"/> <property name="jmeter-port" value="1099"/> <target name="jmeter.run.remote"> <echo>Acionando o JMeter remoto p/ os testes de stress</echo> <jmeter jmeterhome="${jmeter-home}" jmeterlogfile="${jmeter-results}/log" resultlogdir="${jmeter-results}/jtl" runremote="true"> <!-- outra forma de definir os planos de testes --> <testplans dir="test/jmeter/jmx" includes="MyTest.jmx"/> <!-- indica que essa property deve ser enviada ao jmeter server --> <property name="app.url" remote="true" value="${app.url}"/> <!-- indica a url do jmeter server --> <property name="remote_hosts" value="${jmeter-host}:${jmeter-port}"/> </jmeter> </target> ...
Note que a propriedade app.url foi marcada como remote="true", dessa forma o JMeter cliente repassa o valor para o JMeter servidor. Mais informações sobre essa task foram disponibilizadas na página do projeto.
http://twitter.com/edermag
http://www.yaw.com.br
http://twitter.com/edermag
http://www.yaw.com.br
2 comments:
Are you looking for free Twitter Re-tweets?
Did you know you can get them AUTOMATICALLY & ABSOLUTELY FREE by getting an account on Add Me Fast?
Opa, muito interessante, o fera é que pode ser executado com um processo de integração contínua, usando Jenkins.
Post a Comment