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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | < project name = "MyProject" basedir = "." > <!-- define uma var que guarda a url de app qualquer --> <!-- 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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ... <!-- 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