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