Gatling - Hvernig á að senda beiðni um póst í StringBody () með handahófskenndum gögnum

Í þessari Gatling kennslu, sýnum við hvernig t sendir beiðnir um póst sem innihalda handahófi gögn í StringBody()

Í flestum atburðarásarprófunaraðstæðum vilt þú slembiraða gögnin sem eru send sem beiðni um póst til að líkja eftir mismunandi lotum. Til þess getum við notað fóðrara sem lesa gögn úr CSV skrám eða venjulegum texta.

Ef þú hefur ekki sett upp Gatling á vélinni þinni ennþá geturðu lesið færsluna sem útskýrir hvernig á að setja Gatling upp sem Maven verkefni.


Scala handahófi strengjaafls

Í fyrsta lagi þurfum við aðferð sem myndar handahófi streng í Scala:

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

XML beiðni sem meginmál

Í þessu dæmi erum við að senda XML póstbeiðni. Þetta inniheldur breytu log_session_id sem þarf að vera mismunandi í hverri beiðni:


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

Við verðum að hafa leið til að senda ofangreinda XML beiðni sem færslu í StringBody() í Gatling, en í hverri beiðni, log_session_id gildi ætti að vera handahófi strengur.

Til þess þurfum við að nota fóðrara.

Fóðrari í 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}'''))

The fullur handrit til að senda handahófi eftir beiðni í StringBody() í Gatling:

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) }