示例#1
0
文件: proxy.py 项目: yutiansut/pulsar
 def should_terminate(self):
     if self.stopping_start is None:
         self.stopping_start = default_timer()
         return False
     else:
         dt = default_timer() - self.stopping_start
         return dt if dt >= ACTOR_ACTION_TIMEOUT else False
示例#2
0
文件: proxy.py 项目: arhik/pulsar
 def should_terminate(self):
     if self.stopping_start is None:
         self.stopping_start = default_timer()
         return False
     else:
         dt = default_timer() - self.stopping_start
         return dt if dt >= ACTOR_ACTION_TIMEOUT else False
示例#3
0
文件: queue.py 项目: japaks/pulsar
 def test_timeout(self):
     q = Queue()
     self.assertEqual(q.qsize(), 0)
     start = default_timer()
     try:
         item = yield q.get(timeout=0.5)
     except Empty:
         pass
     self.assertTrue(default_timer() - start >= 0.5)
     self.assertEqual(q.qsize(), 0)
示例#4
0
文件: queue.py 项目: japaks/pulsar
 def test_maxsize(self):
     q = Queue(maxsize=2)
     self.assertEqual(q.maxsize, 2)
     yield self. async .assertEqual(q.put('hello'), None)
     yield self. async .assertEqual(q.put('ciao'), None)
     self.assertEqual(q.qsize(), 2)
     self.assertTrue(q.full())
     start = default_timer()
     yield self. async .assertRaises(Full, q.put, 'ciao', timeout=0.5)
     self.assertTrue(default_timer() - start >= 0.5)
示例#5
0
 def test_timeout(self):
     q = Queue()
     self.assertEqual(q.qsize(), 0)
     start = default_timer()
     try:
         item = yield q.get(timeout=0.5)
     except Empty:
         pass
     self.assertTrue(default_timer()-start >= 0.5)
     self.assertEqual(q.qsize(), 0)
示例#6
0
 def test_maxsize(self):
     q = Queue(maxsize=2)
     self.assertEqual(q.maxsize, 2)
     yield self.async.assertEqual(q.put('hello'), None)
     yield self.async.assertEqual(q.put('ciao'), None)
     self.assertEqual(q.qsize(), 2)
     self.assertTrue(q.full())
     start = default_timer()
     yield self.async.assertRaises(Full, q.put, 'ciao', timeout=0.5)
     self.assertTrue(default_timer()-start >= 0.5)
示例#7
0
 def test_start_hook(self):
     proxy = yield self.spawn(start=create_echo_server(('127.0.0.1', 0)))
     address = None
     start = default_timer()
     while not address:
         info = yield send(proxy, 'info')
         address = info['extra'].get('echo-address')
         if default_timer() - start > 3:
             break
     self.assertTrue(address)
     echo = Echo().client(address)
     result = yield echo(b'Hello')
     self.assertEqual(result, b'Hello')
     yield self.stop_actors(proxy)
示例#8
0
 def test_start_hook(self):
     proxy = yield self.spawn(start=create_echo_server(('127.0.0.1', 0)))
     address = None
     start = default_timer()
     while not address:
         info = yield send(proxy, 'info')
         address = info['extra'].get('echo-address')
         if default_timer() - start > 3:
             break
     self.assertTrue(address)
     echo = Echo().client(address)
     result = yield echo(b'Hello')
     self.assertEqual(result, b'Hello')
     yield self.stop_actors(proxy)
示例#9
0
文件: defer.py 项目: japaks/pulsar
 def _():
     start = default_timer()
     di = 0.1
     interval = 0
     result = while_clause(*args)
     while result:
         interval = min(interval + di, MAX_ASYNC_WHILE)
         try:
             yield Deferred(timeout=interval)
         except CancelledError:
             pass
         if timeout and default_timer() - start >= timeout:
             break
         result = while_clause(*args)
     yield result
示例#10
0
    def monitor_start(self, monitor):
        '''When the monitor starts load all test classes into the queue'''
        # Create a datastore for this test suite
        if not self.cfg.task_backend:
            server = PulsarDS(bind='127.0.0.1:0',
                              workers=0,
                              key_value_save=[],
                              name='%s_store' % self.name)
            yield server()
            address = 'pulsar://%s:%s' % server.cfg.addresses[0]
        else:
            address = self.cfg.task_backend

        store = create_store(address, pool_size=2, loop=monitor._loop)
        self.get_backend(store)
        loader = self.loader
        tags = self.cfg.labels
        exclude_tags = self.cfg.exclude_labels
        if self.cfg.show_leaks:
            show = show_leaks if self.cfg.show_leaks == 1 else hide_leaks
            self.cfg.set('when_exit', show)
            arbiter = pulsar.arbiter()
            arbiter.cfg.set('when_exit', show)
        try:
            tests = []
            loader.runner.on_start()
            for tag, testcls in loader.testclasses(tags, exclude_tags):
                suite = loader.runner.loadTestsFromTestCase(testcls)
                if suite and suite._tests:
                    tests.append((tag, testcls))
            self._time_start = None
            if tests:
                self.logger.info('loading %s test classes', len(tests))
                monitor.cfg.set('workers', min(self.cfg.workers, len(tests)))
                self._time_start = default_timer()
                queued = []
                self._tests_done = set()
                self._tests_queued = None
                #
                # Bind to the task_done event
                self.backend.bind_event('task_done',
                                        partial(self._test_done, monitor))
                for tag, testcls in tests:
                    r = self.backend.queue_task('test',
                                                testcls=testcls,
                                                tag=tag)
                    queued.append(r)
                queued = yield multi_async(queued)
                self.logger.debug('loaded %s test classes', len(tests))
                self._tests_queued = set(queued)
                yield self._test_done(monitor)
            else:  # pragma    nocover
                raise ExitTest('Could not find any tests.')
        except ExitTest as e:  # pragma    nocover
            monitor.stream.writeln(str(e))
            monitor._loop.stop()
        except Exception:  # pragma    nocover
            monitor.logger.critical('Error occurred while starting tests',
                                    exc_info=True)
            monitor._loop.call_soon(self._exit, 3)
示例#11
0
    def monitor_start(self, monitor):
        '''When the monitor starts load all test classes into the queue'''
        # Create a datastore for this test suite
        if not self.cfg.task_backend:
            server = PulsarDS(bind='127.0.0.1:0', workers=0,
                              key_value_save=[],
                              name='%s_store' % self.name)
            yield server()
            address = 'pulsar://%s:%s' % server.cfg.addresses[0]
        else:
            address = self.cfg.task_backend

        store = create_store(address, pool_size=2, loop=monitor._loop)
        self.get_backend(store)
        loader = self.loader
        tags = self.cfg.labels
        exclude_tags = self.cfg.exclude_labels
        if self.cfg.show_leaks:
            show = show_leaks if self.cfg.show_leaks == 1 else hide_leaks
            self.cfg.set('when_exit', show)
            arbiter = pulsar.arbiter()
            arbiter.cfg.set('when_exit', show)
        try:
            tests = []
            loader.runner.on_start()
            for tag, testcls in loader.testclasses(tags, exclude_tags):
                suite = loader.runner.loadTestsFromTestCase(testcls)
                if suite and suite._tests:
                    tests.append((tag, testcls))
            self._time_start = None
            if tests:
                self.logger.info('loading %s test classes', len(tests))
                monitor.cfg.set('workers', min(self.cfg.workers, len(tests)))
                self._time_start = default_timer()
                queued = []
                self._tests_done = set()
                self._tests_queued = None
                #
                # Bind to the task_done event
                self.backend.bind_event('task_done',
                                        partial(self._test_done, monitor))
                for tag, testcls in tests:
                    r = self.backend.queue_task('test', testcls=testcls,
                                                tag=tag)
                    queued.append(r)
                queued = yield multi_async(queued)
                self.logger.debug('loaded %s test classes', len(tests))
                self._tests_queued = set(queued)
                yield self._test_done(monitor)
            else:   # pragma    nocover
                raise ExitTest('Could not find any tests.')
        except ExitTest as e:   # pragma    nocover
            monitor.stream.writeln(str(e))
            monitor.arbiter.stop()
        except Exception:   # pragma    nocover
            monitor.logger.critical('Error occurred while starting tests',
                                    exc_info=True)
            monitor._loop.call_soon(self._exit, 3)
示例#12
0
文件: defer.py 项目: japaks/pulsar
    def lock(self):
        '''Lock the :class:`MultiDeferred` so that no new items can be added.
If it was alread :attr:`locked` a runtime exception occurs.'''
        if self._locked:
            raise RuntimeError(self.__class__.__name__ +
                               ' cannot be locked twice.')
        self._time_locked = default_timer()
        self._locked = True
        if not self._deferred:
            self._finish()
        return self
示例#13
0
文件: defer.py 项目: japaks/pulsar
 def _finish(self):
     if not self._locked:
         raise RuntimeError(self.__class__.__name__ +
                            ' cannot finish until completed.')
     if self._deferred:
         raise RuntimeError(self.__class__.__name__ +
                            ' cannot finish whilst waiting for '
                            'dependents %r' % self._deferred)
     self._time_finished = default_timer()
     if self.raise_on_error and self._failures:
         self.callback(self._failures[0])
     else:
         self.callback(self._stream)
示例#14
0
 def _check_queue(self):
     runner = self.runner
     tests = yield self.backend.get_tasks(status=tasks.READY_STATES)
     if len(tests) == len(self.local.tests):
         self.logger.info('All tests have finished.')
         time_taken = default_timer() - self._time_start
         for task in tests:
             runner.add(task.result)
         runner.on_end()
         runner.printSummary(time_taken)
         # Shut down the arbiter
         if runner.result.errors or runner.result.failures:
             exit_code = 2
         else:
             exit_code = 0
         raise pulsar.HaltServer(exit_code=exit_code)
示例#15
0
文件: defer.py 项目: japaks/pulsar
 def __init__(self,
              data=None,
              type=None,
              raise_on_error=True,
              mute_failures=False,
              **kwargs):
     self._deferred = {}
     self._failures = []
     self._mute_failures = mute_failures
     self._raise_on_error = raise_on_error
     if not type:
         type = data.__class__ if data is not None else list
     if not issubclass(type, (list, Mapping)):
         type = list
     self._stream = type()
     super(MultiDeferred, self).__init__(**kwargs)
     self._time_start = default_timer()
     if data:
         self.update(data)
示例#16
0
 def _test_done(self, monitor, task_id=None, exc=None):
     runner = self.runner
     if task_id:
         self._tests_done.add(to_string(task_id))
     if self._tests_queued is not None:
         left = self._tests_queued.difference(self._tests_done)
         if not left:
             tests = yield self.backend.get_tasks(self._tests_done)
             self.logger.info('All tests have finished.')
             time_taken = default_timer() - self._time_start
             for task in tests:
                 runner.add(task.get('result'))
             runner.on_end()
             runner.printSummary(time_taken)
             # Shut down the arbiter
             if runner.result.errors or runner.result.failures:
                 exit_code = 2
             else:
                 exit_code = 0
             monitor._loop.call_soon(self._exit, exit_code)
示例#17
0
 def _test_done(self, monitor, task_id=None, exc=None):
     runner = self.runner
     if task_id:
         self._tests_done.add(to_string(task_id))
     if self._tests_queued is not None:
         left = self._tests_queued.difference(self._tests_done)
         if not left:
             tests = yield self.backend.get_tasks(self._tests_done)
             self.logger.info('All tests have finished.')
             time_taken = default_timer() - self._time_start
             for task in tests:
                 runner.add(task.get('result'))
             runner.on_end()
             runner.printSummary(time_taken)
             # Shut down the arbiter
             if runner.result.errors or runner.result.failures:
                 exit_code = 2
             else:
                 exit_code = 0
             monitor._loop.call_soon(self._exit, exit_code)
示例#18
0
 def monitor_start(self, monitor):
     '''When the monitor starts load all test classes into the queue'''
     super(TestSuite, self).monitor_start(monitor)
     loader = self.local.loader
     tags = self.cfg.labels
     exclude_tags = self.cfg.exclude_labels
     if self.cfg.show_leaks:
         show = show_leaks if self.cfg.show_leaks == 1 else hide_leaks
         self.cfg.set('when_exit', show)
         arbiter = pulsar.arbiter()
         arbiter.cfg.set('when_exit', show)
     try:
         self.local.tests = tests = []
         self.runner.on_start()
         for tag, testcls in loader.testclasses(tags, exclude_tags):
             suite = self.runner.loadTestsFromTestCase(testcls)
             if suite and suite._tests:
                 tests.append((tag, testcls))
         self._time_start = None
         if tests:
             self.logger.info('loaded %s test classes', len(tests))
             self.fire_event('tests', tests=tests)
             monitor.cfg.set('workers', min(self.cfg.workers, len(tests)))
             self._time_start = default_timer()
             for tag, testcls in self.local.tests:
                 self.backend.run('test', testcls, tag)
             monitor.event_loop.call_repeatedly(1, self._check_queue)
         else:   # pragma    nocover
             raise ExitTest('Could not find any tests.')
     except ExitTest as e:   # pragma    nocover
         monitor.stream.writeln(str(e))
         monitor.arbiter.stop()
     except Exception:   # pragma    nocover
         self.logger.critical('Error occurred before starting tests',
                              exc_info=True)
         monitor.arbiter.stop()
示例#19
0
def timeout(start):
    return default_timer() - start > 1.5*ACTOR_ACTION_TIMEOUT
示例#20
0
文件: me.py 项目: japaks/pulsar
def wait(actor, period=0.5):
    start = default_timer()
    yield pulsar.async_sleep(period)
    yield default_timer() - start
示例#21
0
文件: proxy.py 项目: yutiansut/pulsar
 def should_be_alive(self):
     if not self.mailbox:
         return default_timer() - self.spawning_start > ACTOR_ACTION_TIMEOUT
     else:
         return True
示例#22
0
文件: proxy.py 项目: yutiansut/pulsar
 def start(self):
     '''Start the remote actor.
     '''
     self.spawning_start = default_timer()
     self.impl.start()
示例#23
0
def timeout(start):
    return default_timer() - start > 1.5 * ACTOR_ACTION_TIMEOUT
示例#24
0
文件: proxy.py 项目: arhik/pulsar
 def should_be_alive(self):
     if not self.mailbox:
         return default_timer() - self.spawning_start > ACTOR_ACTION_TIMEOUT
     else:
         return True
示例#25
0
文件: proxy.py 项目: arhik/pulsar
 def start(self):
     '''Start the remote actor.
     '''
     self.spawning_start = default_timer()
     self.impl.start()