2016-07-11 10 views
0

Ich entwickle einen Java Request Sampler mit JMeter durch Erweitern AbstractJavaSamplerClient. Der Test geht so:jmeter: AbstractJavaSamplerClient - SetUpTest nur einmal für alle Threads

public class JmeterTest extends AbstractJavaSamplerClient { 
    public void setupTest(JavaSamplerContext context) { 
     System.out.println("Test setup"); 
    } 

    public SampleResult runTest(JavaSamplerContext context) { 
     SampleResult result = new SampleResult(); 
     System.out.println("Test.."); 
     result.setSuccessful(true); 
     result.setResponseData("Success"); 
    } 

    public void teardownTest(JavaSamplerContext context) { 
     System.out.println("Test cleanup"); 
    } 
} 

ich ein Glas aus dieser Testklasse erstellt und zeigte es durch die JMeter UI (durch Java anfordern Sampler). Das Problem in meinem Fall ist, wenn ich den Test mit 5 users, die setUpTest & tearDownTest Methoden wird für jeden Benutzer wie pro Design aufgerufen wird.

Gibt es eine Einstellung, bei der die Methoden setUp und Cleanup nur einmal für alle Threads in der Threadgruppe aufgerufen werden. Meine Anforderung ist tun Setup und Bereinigung nur einmal für alle Threads.

Antwort

1

Hier sind die Optionen können Sie ausprobieren:

  1. Führen setUp Aktionen separat in setUp Thread Group
  2. separat durchführen setUp Aktionen im selben Thread-Gruppe. Setzen Sie setUp Logik unter dem If Controller und verwenden ${__BeanShell(vars.getIteration() == 1)} als Bedingung
  3. Ändern Sie den Code wie:

    public void setupTest(JavaSamplerContext context) { 
        if (JMeterContextService.getContext().getVariables().getIteration() == 1) { 
         System.out.println("Test setup"); 
        } 
    } 
    

beide Punkte 2 und 3 davon ausgehen, dass setUp Code nur während der ersten Iteration des Tests ausgeführt werden, indem jeder Thread. Denken Sie daran, dass JMeterVariables.getIteration() Nummer nur erhöht wird, wenn Thread Group -level-Schleifen auftreten.

+0

Ausgezeichnet, danke. Option 1 wird mein Problem vorerst lösen. Ich werde mehr über 2 & 3 lesen. – sysuser