2017-02-03 12 views
0

Ich habe eine Thread-Gruppe mit einigen HTTP-Anfragen darin. Ich werde einige Hundert oder Tausende von Threads laufen. Ich möchte die Zeitüberschreitung für die Threadgruppe festlegen, so dass es ein Timeout geben würde, wenn es eine bestimmte Zeit überschreitet. Gibt es eine Möglichkeit, dies zu tun?Ist es möglich, Timeout für eine Thread-Gruppe festzulegen?

Antwort

1

Wenn Sie Timeout für ThreadGroup sagen - meinen Sie die Dauer des Tests? das heißt, Sie möchten den Test für bestimmte Dauer? Wenn ja, können Sie die Dauer in der Thread-Gruppen-Konfiguration festlegen.

enter image description here

Wenn Sie meinen, einzelne HTTP-Anfragen Sampler nach bestimmten Dauer Timeout, dann HTTP Requests Default ist der beste Ort, dass einzustellen.

Sie können dies auch im spezifischen Sampler überschreiben.

enter image description here

+0

Ich würde einige Tausende von Threads ausgeführt werden. Mein Verständnis ist, dass, wenn ich die Dauer verwende, dann würde es den Test nach dem Laufen für diese bestimmte Zeit stoppen. Wenn ich das Timeout in einem HTTP-Anforderungsstandardwert hinzufüge, wäre es nur für diesen Sampler anwendbar. Aber ich möchte die Threadgruppe abbrechen, wenn der Server geladen ist und lange braucht, um Ergebnisse zurückzugeben. – Jane

0

Sie können dies mit tun JSR223 Assertion wie:

  1. hinzufügen JSR223 Assertion irgendwo in Ihrem Testplan (stellen Sie sicher, dass es nicht zu oft ausgeführt werden)
  2. Verwenden Der folgende Code im Bereich "Skript" (Beispielcode, der den aktuellen Sampler nicht erfüllt und den Test stoppt, wenn die Dauer der Threadgruppe 5 Sekunden überschreitet):

    def testStart = Long.parseLong(vars.get("TESTSTART.MS")) 
    def now = System.currentTimeMillis() 
    
    if ((now - testStart) >= 5000) { 
        AssertionResult.setFailure(true) 
        AssertionResult.setFailureMessage("Thread group duration exceeded 5000 ms") 
        SampleResult.setStopTest(true) 
    } 
    

Demo:

JSR223 Assertion Example

Siehe How to Use JMeter Assertions in Three Easy Steps Artikel für ausführlichere Erklärung, wie/Einstellung Anforderungskriterium für die JMeter Tests fehlschlagen.

+0

Ich habe versucht, dies zu testen, indem ich den HTTP-Sampler mit einem falschen Wert durchläuft, so dass es für immer eine Schleife durchlaufen würde. Ich hatte die JSR223 Assertion unterhalb des Samplers hinzugefügt. Aber es sieht so aus, als würde es die Assertion nur ausführen, wenn es die Schleife verlässt. Können Sie mir sagen, wann die Behauptung in einem Thread ausgeführt werden würde? – Jane

+0

Behauptungen gehorchen den [Scoping-Regeln] (http://jmeter.apache.org/usermanual/test_plan.html#scoping_rules), also wenn Sie die Assertion als Kind eines Samplers hinzugefügt haben - wird sie nach jedem Sampler ausgeführt –

-1

Einstellung Reaktion Timeout-Wert in dem Sampler enter image description here

+0

Dies hat gewonnen Hilf mir nicht, da dies auf einen Sampler beschränkt ist. Ich möchte die Zeitüberschreitung, wenn der ganze Thread Zeit braucht, wenn ich Tausende von Threads verwende – Jane

Verwandte Themen