'All the logic/magic is in this method. The logic is very simple:
* First send the payload as-is, and record the original time
* Send the payload multiplied by 10, and record the time
* If there\'s a big increase in the delay, start testing with the
multipliers using this request as a base.
If there\'s NO noticeable increase then multiply the payload by
10 and try again. Try this 2 more times.
* If the multipliers do their work, we have found a vulnerability!
We go up and down and change the multiplier in order to make sure
that WE are controlling the delay and there is no other external factor
in place.'

def delay_is_controlled(self):

    responses = []
    multipliers_that_delay = []
    for _ in xrange(3):
        original_wait_time = self.get_original_time()
        multiplier = self.find_delay_multiplier(original_wait_time, responses)
        if (multiplier is None):
            return (False, responses)
        else:
            multipliers_that_delay.append(multiplier)
            if (len(set(multipliers_that_delay)) != 1):
                return (False, responses)
    return (True, responses)
