Ritesh Sharma
Ritesh Sharma

Reputation: 173

Gatling Feeder Issue : No attribute name 'CSVFieldName' is defined issue

I am newbie for Gatling and trying to read some fields from CSV and use them in my gatling scenario but facing

No attribute name 'CSVFieldName' is defined

issue ;

some details:

Gatling Version : bundle-2.2.3

CSV Name : memId.csv

CSV contents :

memid
CKABC123

Scala File contents :

//Class Declaration 
{

     //some http configuration 


val memId_feeder = csv("memId.csv").circular                  

val scn = scenario("Scn name").during( 10 seconds ) {
     feed(memId_feeder)
     exec(http("Req_01_Auth")
           .post("/auth")
           .check(status.is(200))
           .headers(header_1)
           .formParam("memberId","${memid}"))
}

setup(scn.inject(atOnceUsers(1)).protocols(httpConf))
}   

Any help or clue to resolve this issue is really appreciable .

P.S. : There is no whitespaces in the input csv file .

Upvotes: 2

Views: 3608

Answers (2)

Avinash Pingale
Avinash Pingale

Reputation: 1

In my case applying dot implies error.


import com.shutterfly.loadtest.commerce.webcartorch.simulations.AbstractScenarioSimulation
import com.shutterfly.loadtest.siteServices.services.MyProjectsService
import com.shutterfly.loadtest.siteServices.util.{Configuration, HttpConfigs}
import io.gatling.core.Predef._
import com.shutterfly.loadtest.siteServices.services.MyProjectsService._
import io.gatling.http.config.HttpProtocolBuilder

class MetaDataApiSimulation extends Simulation {
  def scenarioName = "MetaData Flow. Get All Projects"
  def userCount = Configuration.getNumUsers(20)
  def rampUpTime = Configuration.getRampUpTime(60)
  def httpConf: HttpProtocolBuilder = HttpConfigs.newConfig(Configuration.siteServicesServer.hostname)
  def getMetadata = exec(MyProjectsService.getAllProjectsForUser("${userId}"))
  def dataFileName = "MetadataSimulationData.csv"

  def Photobook_AddToCartDataFile="Photobook_AddToCartData.csv"
  def Calendar_AddToCartDataFile="Calendar_AddToCartData.csv"
  def dataFileName4="AddToCartData.csv"

  def assertions = List(
    details("First Assertion").responseTime.percentile3.lessThan(1000)
  )

  val scn = scenario(scenarioName).during(5) {
    .exec().feed(csv(dataFileName).circular).exec(getMetadata)
  }
  setUp(scn.inject(rampUsers(userCount) over rampUpTime))
    .protocols(httpConf)
    .assertions(assertions)
}

Upvotes: 0

micropaul
micropaul

Reputation: 305

Oh, I can feel your pain… It's a while since I played with Gatling. As far I remember you have to provide a "chain" of actions in the scenario definition employing currying. This all means: placing a dot before exec should make it.

val scn = scenario("Scn name").during( 10 seconds ) {
     feed(memId_feeder)
     .exec(http("Req_01_Auth")
           .post("/auth")
           .check(status.is(200))
           .headers(header_1)
           .formParam("memberId","${memid}"))
}

Upvotes: 6

Related Questions