Checking the response body size

1,676 views
Skip to first unread message

Steve Chadsey

unread,
May 13, 2016, 2:18:25 PM5/13/16
to Gatling User Group
Hello,

I'm using Gatling 2.2.0.  I would like to perform a check on the size of the HTTP response.  Based on a previous message in this group (from 2013), I've tried:

check(bodyString.transform(_.map(_.size)).matchWith(io.gatling.core.check.Matchers.greaterThan, 1))

However, this results in exceptions:

14:06:19.516 [ERROR] i.g.c.ZincCompiler$ - C:\tmp\test.scala:24: value size is not a member of Char
14:06:19.518 [ERROR] i.g.c.ZincCompiler$ -           bodyString.transform(_.map(_.size)).matchWith(io.gatling.core.check.Matchers.greaterThan, 1)
14:06:19.519 [ERROR] i.g.c.ZincCompiler$ -                                        ^
14:06:19.519 [ERROR] i.g.c.ZincCompiler$ - C:\tmp\test.scala:24: object Matchers is not a member of package io.gatling.core.check
14:06:19.519 [ERROR] i.g.c.ZincCompiler$ -           bodyString.transform(_.map(_.size)).matchWith(io.gatling.core.check.Matchers.greaterThan, 1)
14:06:19.520 [ERROR] i.g.c.ZincCompiler$ -                                                                               ^
14:06:19.559 [ERROR] i.g.c.ZincCompiler$ - two errors found
14:06:19.562 [ERROR] i.g.c.ZincCompiler$ - Compilation crashed

I tried "_.length" instead of "_.size" to no avail.  What am I doing wrong?  See below for the simulation file and output.
Thanks,
-Steve

import scala.concurrent.duration._

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.jdbc.Predef._

class TestSim extends Simulation {

    val httpProtocol = http
        .baseURL("http://localhost:9000")

    val headers_0 = Map(
    HttpHeaderNames.CacheControl -> HttpHeaderValues.NoCache
  )

    val scn = scenario("Test")
      .exec(
        http("request_0")
        .get("/some/path").asJSON
        .headers(headers_0)
        .basicAuth("someone","password")
        .check(
          bodyString.transform(_.map(_.size)).matchWith(io.gatling.core.check.Matchers.greaterThan, 1)
        )
      )

    setUp(
    scn.inject(atOnceUsers(1))
    .protocols(httpProtocol))
}

$ c:\gatling2.2\bin\gatling.bat --simulations-folder C:\tmp --data-folder C:\tmp --simulation TestSim
GATLING_HOME is set to "c:\gatling2.2"
JAVA = ""C:\Program Files (x86)\Java\jdk1.8.0_91\bin\java.exe""
14:06:19.516 [ERROR] i.g.c.ZincCompiler$ - C:\tmp\test.scala:24: value size is not a member of Char
14:06:19.518 [ERROR] i.g.c.ZincCompiler$ -           bodyString.transform(_.map(_.size)).matchWith(io.gatling.core.check.Matchers.greaterThan, 1)
14:06:19.519 [ERROR] i.g.c.ZincCompiler$ -                                        ^
14:06:19.519 [ERROR] i.g.c.ZincCompiler$ - C:\tmp\test.scala:24: object Matchers is not a member of package io.gatling.core.check
14:06:19.519 [ERROR] i.g.c.ZincCompiler$ -           bodyString.transform(_.map(_.size)).matchWith(io.gatling.core.check.Matchers.greaterThan, 1)
14:06:19.520 [ERROR] i.g.c.ZincCompiler$ -                                                                               ^
14:06:19.559 [ERROR] i.g.c.ZincCompiler$ - two errors found
14:06:19.562 [ERROR] i.g.c.ZincCompiler$ - Compilation crashed
sbt.compiler.CompileFailed: null
        at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:105)
        at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:47)
        at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:41)
        at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply$mcV$sp(AggressiveCompile.scala:95)
        at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:95)
        at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:95)
        at sbt.compiler.AggressiveCompile.sbt$compiler$AggressiveCompile$$timed(AggressiveCompile.scala:168)
        at sbt.compiler.AggressiveCompile$$anonfun$3.compileScala$1(AggressiveCompile.scala:94)
        at sbt.compiler.AggressiveCompile$$anonfun$3.apply(AggressiveCompile.scala:142)
        at sbt.compiler.AggressiveCompile$$anonfun$3.apply(AggressiveCompile.scala:84)
        at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:66)
        at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:64)
        at sbt.inc.IncrementalCommon.cycle(IncrementalCommon.scala:31)
        at sbt.inc.Incremental$$anonfun$1.apply(Incremental.scala:62)
        at sbt.inc.Incremental$$anonfun$1.apply(Incremental.scala:61)
        at sbt.inc.Incremental$.manageClassfiles(Incremental.scala:89)
        at sbt.inc.Incremental$.compile(Incremental.scala:61)
        at sbt.inc.IncrementalCompile$.apply(Compile.scala:54)
        at sbt.compiler.AggressiveCompile.compile2(AggressiveCompile.scala:159)
        at sbt.compiler.AggressiveCompile.compile1(AggressiveCompile.scala:68)
        at com.typesafe.zinc.Compiler.compile(Compiler.scala:201)
        at com.typesafe.zinc.Compiler.compile(Compiler.scala:183)
        at com.typesafe.zinc.Compiler.compile(Compiler.scala:174)
        at com.typesafe.zinc.Compiler.compile(Compiler.scala:165)
        at io.gatling.compiler.ZincCompiler$$anonfun$7.apply(ZincCompiler.scala:154)
        at io.gatling.compiler.ZincCompiler$$anonfun$7.apply(ZincCompiler.scala:154)
        at scala.util.Try$.apply(Try.scala:161)
        at io.gatling.compiler.ZincCompiler$delayedInit$body.apply(ZincCompiler.scala:154)
        at scala.Function0$class.apply$mcV$sp(Function0.scala:40)
        at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
        at scala.App$$anonfun$main$1.apply(App.scala:71)
        at scala.App$$anonfun$main$1.apply(App.scala:71)
        at scala.collection.immutable.List.foreach(List.scala:318)
        at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:32)
        at scala.App$class.main(App.scala:71)
        at io.gatling.compiler.ZincCompiler$.main(ZincCompiler.scala:36)
        at io.gatling.compiler.ZincCompiler.main(ZincCompiler.scala)

Vu Nguyen

unread,
May 13, 2016, 5:04:34 PM5/13/16
to Gatling User Group

Steve, I hope my basic Scala can help:

.check(bodyString.transform(_.size > 1).is(true))

On the other hand, can you check the value of the header Content-Length? 

Steve Chadsey

unread,
May 16, 2016, 10:04:29 AM5/16/16
to Gatling User Group
Hello Vu,

Your suggestion works wonderfully.  Thanks!

I considered checking the Content-Length header, but I wanted to verify that I actually got a response of a certain size rather than trusting the headers.  Although, now that I think about it, an additional check one might do is to verify the response size is the same as what is reported in the Content-Length header, but that is beyond the scope of what I'm interested in.

-Steve
Reply all
Reply to author
Forward
0 new messages