apache / jmeter

Apache JMeter open-source load testing tool for analyzing and measuring the performance of a variety of services
https://jmeter.apache.org/
Apache License 2.0
7.97k stars 2.02k forks source link

Interleave Controller inside Loop Controller fools loop counter #919

Closed asfimport closed 21 years ago

asfimport commented 21 years ago

John Kavadias (Bug 11844): Test Plan (functional test ON) Thread Group (threads 1; ramp up 1; loop count 5) HTTP Cookie Manager (empty) HTTP Request Defaults (IP set, port set, HTTP, GET, follow ON, keepalive ON) Interleave Controller HTTP Request Defaults (HTTP, GET, Path set) Simple Controller 1 HTTP Request 1 (HTTP, GET, param type=type1, follow ON, keepalive ON) HTTP Request 2 (HTTP, GET, param id=id1, follow ON, keepalive ON) Simple Controller 2 HTTP Request 3 (HTTP, GET, param type=type2, follow ON, keepalive ON)

The request sequence produced is just 5 HTTP requests (in both 1.7.3 and CVS checkout and build at 2002-08-20 05:00 UTC/GMT):

HTTP Request 1 HTTP Request 2 HTTP Request 3 HTTP Request 1 HTTP Request 2

Unless a naive understanding of Loop Controller (as part of Thread Group) and Interleave Controller is incorrect, the Test Plan should produce:

HTTP Request 1 (iter 1) HTTP Request 2 (iter 1) HTTP Request 3 (iter 2) HTTP Request 1 (iter 3) HTTP Request 2 (iter 3) HTTP Request 3 (iter 4) HTTP Request 1 (iter 5) HTTP Request 2 (iter 5)

Severity: major OS: Solaris

asfimport commented 21 years ago

Mike Stover (migrated from Bugzilla): Now there's a choice for how you want the interleave controller to behave.

asfimport commented 21 years ago

John Kavadias (migrated from Bugzilla): This is a comment that does not necessarily mean the bug should be REOPENED.

JMeter 1.7.3 (and 1.7, by manually recreating the test plan) produces:

HTTP Request 1 (iter 1) HTTP Request 2 (iter 2) HTTP Request 3 (iter 3) HTTP Request 1 (iter 4) HTTP Request 2 (iter 5)

From this behaviour for the submitted test plan, we can say that the Simple Controllers are immaterial to the interleaving produced. The Interleave Controller is interleaving across the three actual requests only.

The CVS version of JMeter which updates Interleave Controller on 20 August or so, which defaults to Interleave Controllers to ignore subcontroller blocks ON, produces similar, but NOT identical behaviour. I get:

HTTP Request 1 (iter 1) HTTP Request 3 (iter 2) HTTP Request 2 (iter 3) HTTP Request 3 (iter 4) HTTP Request 1 (iter 5)

From this behaviour for the submitted test plan, we can say that the Simple Controllers are material to the interleaving produced. The Interleave Controller is interleaving the Simple Controllers themselves AND the requests they contain.

When ignore subcontroller blocks is OFF, I get the behaviour proposed at the end of the original bug submission.

How to deal with the difference between 1.7.3 and current CVS version with ignore subcontroller blocks ON I leave to the JMeter owner/s. 1.7.3 and 1.7 (after translation) test plans will interleave differently using the CVS version.

Thanks for your work.

asfimport commented 21 years ago

Mike Stover (migrated from Bugzilla): Yes, you are right. However, I decided the new way is more consistent than the old. There's a choice to either ignore sub-controllers, or to treat them like blocks of requests. The old way sort of did half of both.

asfimport commented 21 years ago

Jordi Salvat i Alabart (migrated from Bugzilla): Marking all bugs RESOLVED before JMeter 1.8's release date as VERIFIED. Yes, it's pretty poor QA procedure, but there's bugs here lingering since JMeter 1.6, and we need to clean up a little.

asfimport commented 21 years ago

Jordi Salvat i Alabart (migrated from Bugzilla): Bulk-closing all bugs RESOLVED before JMeter 1.8 release date.