Gatling - Kako poslati zahtjev za objavu u StringBody () sa slučajnim podacima

U ovom vodiču za Gatling prikazujemo kako šaljemo zahtjeve za objavu koji sadrže slučajne podatke u StringBody().

U većini scenarija testiranja izvedbe želite randomizirati podatke koji se šalju kao zahtjev za postom kako bi simulirali različite sesije. Za to se možemo poslužiti ulagačima koji čitaju podatke iz CSV datoteka ili običnog teksta.

Ako još niste postavili Gatling na svom stroju, možete pročitati objašnjenje kako postaviti Gatlinga kao Mavenov projekt.

Generator slučajnih nizova Scala

Prvo, trebamo metodu koja generira slučajni niz u Scali:

object randomStringGenerator { def randomString(length: Int) = scala.util.Random.alphanumeric.filter(_.isLetter).take(length).mkString
}

XML zahtjev kao tijelo pošte

U ovom primjeru šaljemo zahtjev za XML postom. Sadrži parametar log_session_id koji se mora razlikovati u svakom zahtjevu:

val req = ' ' + ' ' +
'3 ' +
'MY_APP ' +
'0000000000 ' +
'b02edd23,ClientIP=10.211.55.3 ' +
'ACTIVATION ' + ''

Moramo imati način slanja gore navedenog XML zahtjeva kao posta u StringBody() u Gatlingu, ali u svakom zahtjevu, log_session_id vrijednost treba biti slučajni niz.



Za to moramo koristiti hranilice.

Ulagač u StringBody ()

var randomSession = Iterator.continually(Map('randsession' -> ( req.replace('0000000000', randomStringGenerator.randomString(10))))) val scn = scenario('Activate')
.feed(randomSession)
.exec(http('activate request')
.post('/login/activate')
.body(StringBody('''${randsession}'''))

Cijela skripta za slanje slučajnog zahtjeva za post u StringBody() u Gatlingu:

import io.gatling.core.Predef._ import io.gatling.http.Predef._ import io.gatling.http.config.HttpProtocolBuilder.toHttpProtocol import io.gatling.http.request.builder.HttpRequestBuilder.toActionBuilder class Activate extends Simulation { object randomStringGenerator {
def randomString(length: Int) = scala.util.Random.alphanumeric.filter(_.isLetter).take(length).mkString } val req = ' ' +
' ' +
'3 ' +
'MY_APP ' +
'0000000000 ' +
'b02edd23,ClientIP=10.211.55.3 ' +
'ACTIVATION ' +
'' var randomSession = Iterator.continually(Map('randsession' -> ( req.replace('0000000000', randomStringGenerator.randomString(10))))) val httpConf = http
.baseURL('http://localhost:5000')
.acceptHeader('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
.userAgentHeader('Mozilla/4.0(compatible;IE;GACv10. 0. 0. 1)') val scn = scenario('Activate')
.feed(randomSession)
.exec(http('activate request')
.post('/login/activate')
.body(StringBody('''${randsession}'''))
.check(status.is(200)))
.pause(5) setUp(
scn.inject(atOnceUsers(5)) ).protocols(httpConf) }