def run(self): """ Runs all tests in :attr:`~core.TestRunner.queue` using a pool of greenlets to run tests concurrently. """ try: import gevent from gevent.pool import Pool logger.debug('successfully imported gevent.') except ImportError: raise DtfMissingOptionalDependency('gevent') logger.info('running dtf tests using a gevent-based (micro) thread pool.') p = Pool(self.pool_size) for j in self.queue: logger.debug('adding {0} to the job queue'.format(j[1])) p.spawn(self.case_definition.get(j[0]), j[1], j[2])