Gatling - Hur man skickar inläggsförfrågan i StringBody () med slumpmässiga data

I denna Gatling-handledning visar vi hur man skickar postförfrågningar som innehåller slumpmässiga data i StringBody().

I de flesta scenarier för prestandatestning vill du randomisera data som skickas som postbegäran för att simulera olika sessioner. För detta kan vi använda matare som läser data från CSV-filer eller vanlig text.

Om du inte har konfigurerat Gatling på din maskin än kan du läsa inlägget som förklarar hur man ställer in Gatling som ett Maven-projekt.


Scala slumpmässig stränggenerator

Först behöver vi en metod som genererar en slumpmässig sträng i Scala:

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

XML-begäran som inläggsdel

I det här exemplet skickar vi en XML-postförfrågan. Detta innehåller en log_session_id-parameter som måste vara annorlunda i varje begäran:


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

Vi måste ha ett sätt att skicka ovanstående XML-begäran som ett inlägg i StringBody() i Gatling, men i varje begäran, log_session_id värdet ska vara en slumpmässig sträng.

För detta måste vi använda matare.

Matare i 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}'''))

Hela skriptet för att skicka slumpmässig postförfrågan i StringBody() i 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) }