Created attachment 29356 [details] An illustrating test-case When CSV Data set is reading a CSV-file, upon reaching reaching EOF, all of the specified variables are set to "<EOF>" (the exact string representation is controlled by the csvdataset.eofstring property). Unfortunately, simply using one of the variables as a While-controller's condition is impossible -- apparently, the "<EOF>" is still interpreted as True. There are examples and code-snippets online, where a simple CSV-set variable is used to control a While-controller, so it was/is possible to do on some earlier releases or some Operating Systems (at least one online posting, for example, mentions it working on properly on Windows, but not on Linux). Instead of simply using ${column1} as a while-controller's condition, one must use something as unwieldy (and unportable) as: ${__jexl("${column1}" != "<EOF>")} It would seem, the Boolean representation of EOF ought to be False regardless of its String representation.
Created attachment 29360 [details] Sample CSV-file refered to by the sample test-plan
The While Controller is documented as looping until the condition matches "false". Changing this to also match "<EOF>" would potentially break some scripts. As a work-round, you can use: csvdataset.eofstring=false
This issue has been migrated to GitHub: https://github.com/apache/jmeter/issues/2922