2017-09-20 6 views
0

In meinem Jmeter 3.0 Testplan habe ich mehrere Gewindegruppen. Jetzt möchte ich verteilen Benutzer unter ihnen auf der Grundlage von Prozent.Lastverteilung für mehrere Gewindegruppen in Jmeter

Ich habe deklarierten Variablen in Benutzervariablen definiert und verwendet dann die folgende Anweisung in Thread-Gruppe

${__BeanShell(${__evalVar(threads)}*${__evalVar(WeightOfGroup1)}/100)} 

Aber ich erhalte die folgende Ausnahme während dies zu tun

2017/09/20 19:25:39 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval In file: inline evaluation of: ``**ERROR - see log file*****ERROR - see log file**/100;'' Encountered "*" at line 1, column 1. 

2017/09/20 19:25:39 WARN - jmeter.functions.BeanShell: Error running BSH script org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval In file: inline evaluation of: ``**ERROR - see log file*****ERROR - see log file**/100;'' Encountered "*" at line 1, column 1. 

Antwort

1

Sie Variablen in Thread-Gruppendefinitionen können nicht verwendet werden, da Variablen lokal für einen Thread sind und daher initialisiert werden, nachdem die Thread-Gruppe ihre Threads gestartet hat.

Sie haben 2 Möglichkeiten:

  1. Verwenden Eigenschaften, wie in this Lösung beschrieben. Berechnung Sie versuchen zu tun, müssen auch modifiziert werden, zum Beispiel wie folgt aus:

    ${__javaScript(Math.max(1\,Math.round(props.get('threads')*props.get('WeightOfGroup1')/100)))}

    hier Angenommen, Sie haben beide threads und WeightOfGroup1 Eigenschaften definiert. Beachten Sie auch, dass Sie die Zahl auf Integer runden müssen. Um nicht mit 0 Threads zu enden, nehme ich auch das Maximum zwischen 1 und Formelberechnung (es wird also mindestens ein Thread laufen) - das ist natürlich optional.

  2. Aus Ihrem Anwendungsfall sieht es tatsächlich so aus, als ob Sie keine Thread-Gruppen benötigen. Stattdessen können Sie eine Thread-Gruppe verwenden, für jedes Fragment, das zuvor Ihre Thread-Gruppe war, Throughput Controller haben und Ihr Verteilungsziel in Throughput Controller-Parameter angeben. In diesem Fall müssen Sie nicht Prozentsatz berechnen, nur angeben, was den Prozentsatz sein müssen, zB:

    enter image description here

    Ich denke, diese Lösung ist eleganter, es sei denn, es gibt andere Gründe für den Einsatz mehrere Thread-Gruppen, würde ich damit gehen.

Verwandte Themen