Gatling - Meriv Bi Daneyên Rasthatî Daxwaza Postê Di StringBody () De and

Di vê tutoriya Gatling de, em nîşan didin ka t daxwazên posteyê ku daneyên bêhemdî di StringBody() de hene dişînin.

Di piraniya senaryoyên ceribandina performansê de, hûn dixwazin daneya ku wekî daxwaza posteyê tê şandin, ji bo simulkirina danişînên cûda rast bikin. Ji bo vê, em dikarin feederên ku daneyên pelên CSV an nivîsa xwer dixwînin bikar bînin.

Heke we hîn Gatling li ser makîna xwe saz nekiribe, hûn dikarin nivîsa ku şirove dike bixwînin çawa Gatling wekî projeyek Maven saz dikin.


Scala Generator Rings Random

Ya yekem, ji me re pêdivî ye ku rêbazek ku rêzeyek bêhemdî li Scala çêdike:

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

XML Daxwaza wekî Laşê Postê

Di vê mînakê de, em daxwaznameyek posta XML dişînin. Vê parametreyek log_session_id heye ku pêdivî ye ku di her daxwazê ​​de cûda be:


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

Em pêdivî ye ku awayek heye ku em daxwaznameya XML-ya jorîn wekî şandinek li StringBody() bişînin li Gatling, lê di her daxwazê ​​de, log_session_id nirx divê rêzek bêhemdî be.

Ji bo vê, em hewce ne ku feeder bikar bînin.

Feeder in 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}'''))

Nivîsara tevahî ya ku ji bo şandina daxwaza posta bêhemdî li StringBody() li 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) }