Why am I getting a 'Flood did not produce any data, please check the logs' error?

What to do when you see the 'Flood did not produce any data' message when you start a Flood.
We often get customers asking this question when it comes time to run their first Floods on our platform.
This is mostly caused by scripts that are configured to run with either a single iteration or another kind of very short test duration setup - which means the Flood will run usually less than 10-30 seconds.
The Flood platform aggregates data in 15 second intervals so only running a single iteration does not give the necessary amount of data for us to start plotting data points on our execution dashboard.
It is always recommended to run a test for at least 60 seconds in order to get some meaningful data displayed visually on the execution dashboard.
Also, it is a good idea to actually check the logs just in case there are errors present that indicate another different type of failure. An example of a short duration test causing this message is as follows:​
Please note the absence of any error messages and the node started and node completed messages. This is a tell tale sign of a test script only using a single iteration or very short test duration. ​

So, how do I fix it?

Click here if you'd like to see a demonstration of how to fix this on video. ​ As mentioned before - you will need to check your JMeter thread group or Gatling execution settings. We often tend to see the following setup in the main JMeter thread group for example:​
As you can see using a single thread, quick rampup time, and a loop count of 1 - this test will finish in under 5 seconds.
We'll need to fix this in order to run longer and at the same time it is a great opportunity to implement Flood parameters so we can control these properties from the Flood UI as follows:​
The following parameters should be used within your JMeter or Gatling script. The number values are just defaults that get used if you don't specify anything through the Flood UI.

JMeter

${__P(threads, 50)}
${__P(rampup, 50)}
${__P(duration, 600)}

Gatling

val threads = Integer.getInteger("threads", 50)
val rampup = Integer.getInteger("rampup", 50).toLong
val duration = Integer.getInteger("duration", 600).toLong
The following step when setting up a new Flood uses the above mapped parameters in the script for threads, rampup time, and duration:​
Enabling the Use settings from test script option will use the values specified in the thread group either as hard coded values or the default values specified within the Flood parameters.