高手的存在,就是让服务10亿人的时候,你感觉只是为你一个人服务......

ngrinder unique方式取参数

目录

ngrinder 参数化取值的时候,不如LR便捷。

在做unique取参的时候,LR简单的设置即可,ngrinder就要相对麻烦一些。

Alt text


demo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

private int invokeTimes = 0 //调用方法计数


private enum WhenOutOfValues {
AbortVuser, ContinueInCycleManner, ContinueWithLastValue
}

//迭代唯一取值方法
//update Once
private int getCounterByOnce() {
int counter = getCounter(invokeTimes)
invokeTimes++;
return counter + 1
}


//取唯一值的计算方法
private int getCounter(int iteration){
int intAgents = Integer.parseInt(grinder.getProperties().get("grinder.agents").toString())
int intProcs = Integer.parseInt(grinder.properties.get("grinder.processes").toString())
int intThreads = Integer.parseInt(grinder.properties.get("grinder.threads").toString())
int agent_no = grinder.agentNumber
int proc_no = grinder.processNumber
int thread_no = grinder.threadNumber

int counter = agent_no * intProcs * intThreads + proc_no * intThreads + thread_no + intAgents * intProcs * intThreads * iteration
return counter
}

读数据文件:

1
2
3
4
public static List<String> NoList ;
public static def NoRowNumber ;

NoList = new File("./resources/id.txt").readLines();

取值完后可以循环取值或者终止

1
2
3
4
5
6
7
8
9
10
11
12
int line2 = this.getCounterByOnce();
int MaxLine = NoList.size() - 1;

if (line2 > MaxLine) {
if (outHandler.equals(WhenOutOfValues.AbortVuser)) {
grinder.stopThisWorkerThread()
} else if (outHandler.equals(WhenOutOfValues.ContinueInCycleManner)) {
line2 = line2 % MaxLine + 1
} else if (outHandler.equals(WhenOutOfValues.ContinueWithLastValue)) {
line2 = MaxLine;
}
}