JLBH icon indicating copy to clipboard operation
JLBH copied to clipboard

Improper cleanup between runs causes erroneous timeouts to be triggered

Open ivoadf opened this issue 2 years ago • 1 comments

These two variables are not properly reset when a run completes

    private void checkSampleTimeout() {
        long previousSampleCount = 0;
        long previousSampleTime = 0;

while noResultsReturned = 0; is reset in the endOfRun method.

This means that once the first run completes and noResultsReturned is reset to 0 this if condition is never true

if (previousSampleCount < noResultsReturned) {
                previousSampleCount = noResultsReturned;
                previousSampleTime = System.currentTimeMillis();
            } else {
                if (previousSampleTime < (System.currentTimeMillis() - jlbhOptions.timeout)) {
                    printStream.println("Sample timed out. Aborting test...");
                    abort();
                    break;
                }
            }

Meaning the previousSampleCount and previousSampleTime are never updated and unless the jlbhOptions.timeout value is larger than the total runtime of all remaining runs in the test it will eventually trigger a timeout when it should not.

To fix this previousSampleCount and previousSampleTime should be reset alongside the reset that already happens to noResultsReturned in the endOfRun method.

ivoadf avatar Jul 31 '23 09:07 ivoadf

@ivoadf can you provide a failing unit test pls?

JerryShea avatar Sep 01 '23 00:09 JerryShea