2014-06-11 4 views
2

CSV 파일에서 시작 번호를 읽고 10 번 반복하는 Gatling 스크립트를 작성하려고합니다. 각 반복에서 매개 변수의 값을 증가시키고 자합니다.Gatlling Loop에서 변수를 증가시키는 방법

스칼라 또는 자바 수학이 필요하지만이를 수행하는 방법이나 Gatling EL을 스칼라 또는 Java와 결합하는 방법 및 정보를 찾을 수 없습니다.

도움이나 방향을 부여하십시오.

var numloop = new java.util.concurrent.atomic.AtomicInteger(0) 

val scn = scenario("Scenario Name") 

.asLongAs(_=> numloop.getAndIncrement() <3, exitASAP = false){ 
    feed(csv("ids.csv")) //read ${ID} from the file 
    .exec(http("request") 
     .get("""http://finance.yahoo.com/q?s=${ID}""") 
     .headers(headers_1)) 
    .pause(284 milliseconds) 

    //How to increment ID for the next iteration and pass in the .get method? 
} 

답변

3

Gatling의 Google 그룹에서이 코드를 복사하여 붙여 넣었지만 매우 구체적인 사례입니다. 먼저 documentation regarding loops을 올바르게 읽었습니까? 유스 케이스는 무엇이며 어떻게 기본 루프에 맞지 않습니까?

편집 : 그래서 질문 : 루프 반복 및 가상 사용자마다 고유 ID를 얻으려면 어떻게해야합니까?

루프 인덱스와 가상 사용자 ID를 계산할 수 있습니다. 세션에는 이미 고유 한 ID가 있지만 문자열 UUID이므로 원하는 작업에별로 편리하지 않습니다. 나는 시간의 구성 집합에 대한 개틀링 실행을 반복했고, 나의 단계 이름은 동적이어야한다 : 문제 설명 :

// first, let's build a Feeder that set an numeric id: 
val userIdFeeder = Iterator.from(0).map(i => Map("userId" -> i)) 

val iterations = 1000 

// set this userId to every virtual user 
feed(userIdFeeder) 
// loop and define the loop index 
.repeat(iterations, "index") { 
    // set an new attribute named "id" 
    exec{ session => 
    val userId = session("userId").as[Int] 
    val index = session("index").as[Int] 
    val id = iterations * userId + index 
    session.set("id", id) 
    } 
    // use id attribute, for example with EL ${id} 
} 
+1

나는 Gatling 그룹에도이 질문을 올렸다. – pparthi

+0

나는이 질문을 Gatling 그룹에도 올렸다. 내가 겪고있는 문제는 시나리오에서 일부 수학 함수를 사용하는 것입니다. IMO, 문서는 좋은 시작점을 제공합니다. 그러나 문제를 해결하는 데 어려움을 겪고 있습니다. 각 사용자는 1,000 GET을 보내야하지만 각 GET의 ID 값은 증가해야합니다. 따라서 첫 번째 사용자가 ID = 1로 시작하면 GET에서 1에서 1000을 보냅니다. 다음 사용자는 2001에서 시작하여 20001에서 3000으로 GET을 보내고, 계속합니다. 시간을내어 응답 해 주시고 다른 사람들을 적극적으로 도와 주셔서 감사합니다. – pparthi

0

여기이 내 대답이다.

object UrlVerifier { 

    val count = new java.util.concurrent.atomic.AtomicInteger(0) 
    val baseUrl = Params.applicationBaseUrl 

    val accessUrl = repeat(Params.noOfPagesToBeVisited,"index") { 
    exec(session=> { 
     val randomUrls: List[String] = UrlFeeder.getUrlsToBeTested() 
     session.set("index", count.getAndIncrement).set("pageToTest", randomUrls(session("index").as[Int])) 
    } 
    ). 
    exec(http("Accessing Page ${pageToTest}") 
     .get(baseUrl+"${pageToTest}") 
     .check(status.is(200))).pause(Params.timeToPauseInSeconds) 
    } 

그래서 기본적으로 UrlFeeder 나에게 문자열 목록 (URL을 테스트 할)을 제공하고, 간부, 우리는 수 (AtomicInteger)를 사용하여, 우리는 값이 시작됩니다 '인덱스'라는 이름의 변수를 채우는하는이 사용하는 0부터 시작하여 각 반복에서 getAndIncremented가됩니다. 이 'index'변수는 counter()로 사용되는 counterVariable의 이름을 지정할 때 repeat() 루프 내에서 사용되는 변수입니다.

다른 사람들에게도 도움이되기를 바랍니다.