Šioje „Gatling“ mokymo programoje parodome, kaip siųsti siuntimo užklausas, kuriose yra atsitiktinių duomenų StringBody()
.
Daugeliu našumo testavimo scenarijų norite atsitiktiniu būdu suskirstyti duomenis, kurie siunčiami kaip užklausa po to, kad imituotų skirtingus seansus. Tam galime naudoti tiektuvus, kurie skaito duomenis iš CSV failų arba paprastą tekstą.
Jei dar nenustatėte „Gatling“ savo kompiuteryje, galite perskaityti paaiškinimą kaip sukonfigūruoti Gatlingą kaip „Maven“ projektą.
Pirma, mums reikia metodo, kuris generuotų atsitiktinę „Scala“ eilutę:
object randomStringGenerator { def randomString(length: Int) = scala.util.Random.alphanumeric.filter(_.isLetter).take(length).mkString
}
Šiame pavyzdyje siunčiame XML pranešimo užklausą. Čia yra parametras „log_session_id“, kuris kiekvienoje užklausoje turi skirtis:
val req = '
' + '
' +
'3
' +
'MY_APP
' +
'0000000000
' +
'b02edd23,ClientIP=10.211.55.3
' +
'ACTIVATION
' + ''
Turime turėti būdą, kaip aukščiau nurodytą XML užklausą siųsti kaip įrašą StringBody()
Gatlinge, bet kiekviename prašyme log_session_id
reikšmė turėtų būti atsitiktinė eilutė.
Tam turime pasinaudoti tiektuvais.
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}'''))
Visas scenarijus, skirtas atsitiktinei pašto užklausai siųsti StringBody()
Gatlinge:
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) }