Ejemplo n.º 1
0
    def test_wait_timeout_premature(self):
        s1 = operations.sleep(0.25, obj)
        s2 = operations.sleep(0.75, obj2)
        s3 = operations.sleep(1, obj3)

        result = operations.wait([s1, s2, s3], timeout=0.5).result()
        self.assertEqual(len(result.done), 1)
        self.assertEqual(len(result.not_done), 2)
Ejemplo n.º 2
0
    def test_wait_timeout_completed(self):
        s1 = operations.sleep(0.25, obj)
        s2 = operations.sleep(0.5, obj2)
        s3 = operations.sleep(0.75, obj3)

        result = operations.wait([s1, s2, s3], timeout=1).result()
        self.assertEqual(len(result.done), 3)
        self.assertEqual(len(result.not_done), 0)
Ejemplo n.º 3
0
    def test_wait_first_exception_no_error(self):
        s1 = operations.sleep(0.25, obj)
        s2 = operations.sleep(0.5, obj2)
        s3 = operations.sleep(0.75, obj3)

        result = operations.wait([s1, s2, s3],
                                 return_when=FIRST_EXCEPTION).result()
        self.assertEqual(len(result.done), 3)
        self.assertEqual(len(result.not_done), 0)

        self.assertTrue(s1.done())
        self.assertTrue(s2.done())
        self.assertTrue(s3.done())
Ejemplo n.º 4
0
    def test_wait_shield_parent_cancel(self):
        s1 = operations.sleep(0.5, obj)
        s2 = operations.sleep(0.75, obj2)
        s3 = operations.sleep(1, obj3)

        w = operations.wait([s1, s2, s3])
        time.sleep(0.25)
        w.cancel()

        self.assertFalse(s1.cancelled())
        self.assertFalse(s2.cancelled())
        self.assertFalse(s3.cancelled())
        s1.cancel()
        s2.cancel()
        s3.cancel()
Ejemplo n.º 5
0
    def test_wait_first_complete(self):
        s1 = operations.sleep(0.25, obj)
        s2 = operations.sleep(0.5, obj2)
        s3 = operations.sleep(0.75, obj3)

        result = operations.wait([s1, s2, s3],
                                 return_when=FIRST_COMPLETED).result()
        self.assertEqual(len(result.done), 1)
        self.assertEqual(len(result.not_done), 2)

        self.assertTrue(s1.done())
        self.assertFalse(s2.done())
        self.assertFalse(s3.done())

        s2.cancel()
        s3.cancel()
Ejemplo n.º 6
0
    def test_wait_graceful_child_cancel_exception(self):
        s1 = operations.sleep(0.25, obj)
        s2 = operations.sleep(0.75, obj2)
        s3 = operations.sleep(1, obj3)

        w = operations.wait([s1, s2, s3], return_when=FIRST_EXCEPTION)
        time.sleep(0.5)
        s2.cancel()

        self.assertFalse(w.cancelled())
        self.assertFalse(s1.cancelled())
        self.assertTrue(s2.cancelled())
        self.assertFalse(s3.cancelled())

        done, not_done = w.result()
        self.assertEqual(len(done), 2)
        self.assertEqual(len(not_done), 1)

        self.assertTrue(
            any(isinstance(d.exception(), CancelledError) for d in done))
Ejemplo n.º 7
0
    def test_wait_first_exception(self):
        @operations.futurize
        async def _func():
            await operations.sleep(.5)
            raise exc

        s1 = operations.sleep(0.25, obj)
        s2 = _func()
        s3 = operations.sleep(0.75, obj3)

        result = operations.wait([s1, s2, s3],
                                 return_when=FIRST_EXCEPTION).result()
        self.assertEqual(len(result.done), 2)
        self.assertEqual(len(result.not_done), 1)

        self.assertTrue(s1.done())
        self.assertTrue(s2.done())
        self.assertFalse(s3.done())

        s3.cancel()
Ejemplo n.º 8
0
    def test_wait_first_complete_with_error(self):
        @operations.futurize
        async def _func():
            await operations.sleep(.25)
            raise exc

        s1 = _func()
        s2 = operations.sleep(0.5, obj2)
        s3 = operations.sleep(0.75, obj3)

        result = operations.wait([s1, s2, s3],
                                 return_when=FIRST_COMPLETED).result()
        self.assertEqual(len(result.done), 1)
        self.assertEqual(len(result.not_done), 2)

        self.assertTrue(s1.done())
        self.assertFalse(s2.done())
        self.assertFalse(s3.done())

        s2.cancel()
        s3.cancel()