Ejemplo n.º 1
0
    def test_stderr_raising(self):
        if greentest.PYPY:
            # Does not work on PyPy
            return
        # testing that really egregious errors in the error handling code
        # (that prints tracebacks to stderr) don't cause the pool to lose
        # any members
        import sys
        pool = self.klass(size=1)

        # we're going to do this by causing the traceback.print_exc in
        # safe_apply to raise an exception and thus exit _main_loop
        normal_err = sys.stderr
        try:
            sys.stderr = FakeFile()
            waiter = pool.spawn(crash)
            with gevent.Timeout(2):
                self.assertRaises(RuntimeError, waiter.get)
            # the pool should have something free at this point since the
            # waiter returned
            # pool.Pool change: if an exception is raised during execution of a link,
            # the rest of the links are scheduled to be executed on the next hub iteration
            # this introduces a delay in updating pool.sem which makes pool.free_count() report 0
            # therefore, sleep:
            gevent.sleep(0)
            self.assertEqual(pool.free_count(), 1)
            # shouldn't block when trying to get
            t = gevent.Timeout.start_new(0.1)
            try:
                pool.apply(gevent.sleep, (0, ))
            finally:
                t.cancel()
        finally:
            sys.stderr = normal_err
            pool.join()
Ejemplo n.º 2
0
    def test_stderr_raising(self):
        # testing that really egregious errors in the error handling code
        # (that prints tracebacks to stderr) don't cause the pool to lose
        # any members
        import sys
        pool = self.klass(size=1)

        # we're going to do this by causing the traceback.print_exc in
        # safe_apply to raise an exception and thus exit _main_loop
        normal_err = sys.stderr
        try:
            sys.stderr = FakeFile()
            waiter = pool.spawn(crash)
            with gevent.Timeout(2):
                self.assertRaises(RuntimeError, waiter.get)
            # the pool should have something free at this point since the
            # waiter returned
            # pool.Pool change: if an exception is raised during execution of a link,
            # the rest of the links are scheduled to be executed on the next hub iteration
            # this introduces a delay in updating pool.sem which makes pool.free_count() report 0
            # therefore, sleep:
            gevent.sleep(0)
            self.assertEqual(pool.free_count(), 1)
            # shouldn't block when trying to get
            with gevent.Timeout.start_new(0.1):
                pool.apply(gevent.sleep, (0, ))
        finally:
            sys.stderr = normal_err
            pool.join()
Ejemplo n.º 3
0
 def dont_test_timer_cancel(self):
     timer_fired = []
     def fire_timer():
         timer_fired.append(True)
     def some_work():
         gevent.timer(0, fire_timer)
     pool = self.klass(2)
     pool.apply(some_work)
     gevent.sleep(0)
     self.assertEquals(timer_fired, [])
Ejemplo n.º 4
0
    def test_apply_raises(self):
        pool = self.klass(1)

        def raiser():
            raise ExpectedException()
        try:
            pool.apply(raiser)
        except ExpectedException:
            pass
        else:
            self.fail("Should have raised ExpectedException")
Ejemplo n.º 5
0
    def test_apply_raises(self):
        pool = self.klass(1)

        def raiser():
            raise ExpectedException()
        try:
            pool.apply(raiser)
        except ExpectedException:
            pass
        else:
            self.fail("Should have raised ExpectedException")
Ejemplo n.º 6
0
    def dont_test_timer_cancel(self):
        timer_fired = []

        def fire_timer():
            timer_fired.append(True)

        def some_work():
            gevent.timer(0, fire_timer)

        pool = self.klass(2)
        pool.apply(some_work)
        gevent.sleep(0)
        self.assertEqual(timer_fired, [])
Ejemplo n.º 7
0
    def test_reentrant(self):
        pool = self.klass(1)
        def reenter():
            result = pool.apply(lambda a: a, ('reenter', ))
            self.assertEqual('reenter', result)

        pool.apply(reenter)

        evt = Event()
        def reenter_async():
            pool.apply_async(lambda a: a, ('reenter', ))
            evt.set()

        pool.apply_async(reenter_async)
        evt.wait()
Ejemplo n.º 8
0
 def test_reentrant(self):
     pool = self.klass(1)
     result = pool.apply(pool.apply, (lambda a: a + 1, (5, )))
     self.assertEqual(result, 6)
     evt = Event()
     pool.apply_async(evt.set)
     evt.wait()
Ejemplo n.º 9
0
 def test_reentrant(self):
     pool = self.klass(1)
     result = pool.apply(pool.apply, (lambda a: a + 1, (5, )))
     self.assertEqual(result, 6)
     evt = Event()
     pool.apply_async(evt.set)
     evt.wait()
Ejemplo n.º 10
0
 def test_apply(self):
     value = 'return value'
     def some_work():
         return value
     pool = self.klass(2)
     result = pool.apply(some_work)
     self.assertEqual(value, result)
Ejemplo n.º 11
0
    def test_reentrant(self):
        pool = self.klass(1)

        def reenter():
            result = pool.apply(lambda a: a, ('reenter', ))
            self.assertEqual('reenter', result)

        pool.apply(reenter)

        evt = Event()

        def reenter_async():
            pool.apply_async(lambda a: a, ('reenter', ))
            evt.set()

        pool.apply_async(reenter_async)
        evt.wait()
Ejemplo n.º 12
0
    def test_apply(self):
        value = 'return value'

        def some_work():
            return value

        pool = self.klass(2)
        result = pool.apply(some_work)
        self.assertEqual(value, result)
Ejemplo n.º 13
0
    #     target_tickets,
    #     events_tried)


if __name__ == '__main__':
    if SINGLE_DNS_LOOKUP:
        url = urlparse(ROOT_URL)
        ip = socket.gethostbyname(url.hostname)
        ROOT_URL = '{}://{}:{}{}'.format(url.scheme, ip, url.port, url.path)

    print('Connecting to {}'.format(ROOT_URL))

    date_from, date_to = get_eventsdatesrange()
    print('Searching for events between {} and {}'.format(date_from, date_to))

    if not CONTINUOUS:
        jobs = [gevent.spawn(main) for _ in range(COROUTINES)]
        gevent.joinall(jobs, timeout=10)
        print([job.value for job in jobs])
    else:
        pool = gevent.pool.Pool(COROUTINES)

        def schedule():
            while True:
                pool.wait_available()
                print('Starting greenlet')
                pool.apply_async(main)

        pool.apply(schedule)
        pool.join()
Ejemplo n.º 14
0
 def reenter():
     result = pool.apply(lambda a: a, ('reenter', ))
     self.assertEqual('reenter', result)
Ejemplo n.º 15
0
 def reenter():
     result = pool.apply(lambda a: a, ('reenter', ))
     self.assertEqual('reenter', result)