Exemplo n.º 1
0
    def _run_scenario_continuously_for_duration(self, cls, method, args,
                                                duration, concurrent, timeout):
        pool = multiprocessing.Pool(concurrent)
        run_args = utils.infinite_run_args((cls, method, args))
        iter_result = pool.imap(_run_scenario_loop, run_args)

        start = time.time()

        results_queue = collections.deque([], maxlen=concurrent)

        while True:

            if time.time() - start > duration * 60:
                break

            try:
                result = iter_result.next(timeout)
            except multiprocessing.TimeoutError as e:
                result = {"time": timeout, "idle_time": cls.idle_time,
                          "error": utils.format_exc(e)}
            results_queue.append(result)

        results = list(results_queue)

        pool.terminate()
        pool.join()

        return results
Exemplo n.º 2
0
 def test_infinite_run_args(self):
     args = ("a", "b", "c", "d", 123)
     for i, real_args in enumerate(utils.infinite_run_args(args)):
         self.assertEqual((i,) + args, real_args)
         if i == 10:
             break