Gatling:如何访问会话数组中的各个值?

时间:2018-04-17 08:13:54

标签: arrays scala gatling

我是加特林和斯卡拉的新手,并希望得到一些建议。使用以下代码:

.check(
    regex(""""childClientIds":\["([^]]*)"""")
        .find
        .transform(_.split("""\",\"""").map(_.trim).toSeq)
        .saveAs("ChildClientIDs")
)

我设法将ID列表保存到会话变量ChildClientIDs。来自加特林日志:

Session(Dashboard,1,Map(ChildClientIDs -> WrappedArray(ID1, ID2, ID3, etc.

如何访问ChildClientIDs中的各个元素并在请求中使用它们?正如预期的那样,${ChildClientIDs}会将整个数组放入请求中。我怎样才能在数组中使用第n个元素? ${ChildClientIDs}[n]${ChildClientIDs[n]}没有做到这一点。

2 个答案:

答案 0 :(得分:1)

我想我已经回答了我自己的问题。

根据文档https://gatling.io/docs/2.3/session/expression_el/ ${ChildClientIDs(n)} 是要走的路。

答案 1 :(得分:0)

如果您不想使用EL,无论出于何种原因,您可以尝试:

public class PersonIdentifier {
    private final int id;
    private final String ssn;

    public PersonIdentifier(int id, String ssn) {
        this.id = id;
        this.ssn = ssn;
    }
    //getters, NO setters since fields are final...

    //now the relevant methods!
    @Override
    public int hashCode() {
        //available since Java 7...
        return Objects.hash(id, ssn);
    }

    @Override
    public boolean equals(Object o) {
        if (o == null) return null;
        if (this == o) return true;
        if (!o.getClass().equals(this.getClass())) return false;
        Person another = (Person)o;
        return another.id == this.id && another.ssn.equals(this.ssn);
    }
}

//...

Map<PersonIdentifier, Person> peopleMap = new HashMap<>();
peopleMap.put(new PersonIdentifier(1, "123456789"), new Person(/* fill with values like firstName, lastName, etc... */));
peopleMap.put(new PersonIdentifier(2, "987654321"), new Person(/* fill with values like firstName, lastName, etc... */));
//and on...