'This utility method will execute submit various statements for execution using the ConcurrentExecutorListResults,
then invoke a separate thread to execute the callback associated with the futures registered
for those statements. The parameters will toggle various timing, and ordering changes.
Finally it will validate that the results were returned in the order they were submitted
:param reverse: Execute the callbacks in the opposite order that they were submitted
:param slowdown: Cause intermittent queries to perform slowly'

def insert_and_validate_list_results(self, reverse, slowdown):

    our_handler = MockResponseResponseFuture(reverse=reverse)
    mock_session = Mock()
    statements_and_params = zip(cycle(['INSERT    INTO    test3rf.test    (k,    v)    VALUES    (%s,    0)']), [(i,) for i in range(100)])
    mock_session.execute_async.return_value = our_handler
    t = TimedCallableInvoker(our_handler, slowdown=slowdown)
    t.start()
    results = execute_concurrent(mock_session, statements_and_params)
    while (not our_handler.pending_callbacks.empty()):
        time.sleep(0.01)
    t.stop()
    self.validate_result_ordering(results)
