예제 #1
0
    def test_enter__exit(self):
        P = self.hub.poller = Mock()
        on_close = Mock()
        self.hub.on_close.add(on_close)

        try:
            read_A = Mock()
            read_B = Mock()
            self.hub.add_reader(10, read_A)
            self.hub.add_reader(File(11), read_B)
            write_A = Mock()
            write_B = Mock()
            self.hub.add_writer(20, write_A)
            self.hub.add_writer(File(21), write_B)
            self.assertTrue(self.hub.readers)
            self.assertTrue(self.hub.writers)
        finally:
            assert self.hub.poller
            self.hub.close()
        self.assertFalse(self.hub.readers)
        self.assertFalse(self.hub.writers)

        P.unregister.assert_has_calls([
            call(10), call(11), call(20), call(21),
        ], any_order=True)

        on_close.assert_called_with(self.hub)
예제 #2
0
 def test_on_message_ready(self):
     channel = Mock(name='channel')
     msg = Mock(name='msg')
     callback = Mock(name='callback')
     self.transport._callbacks = {'q1': callback}
     self.transport.on_message_ready(channel, msg, queue='q1')
     callback.assert_called_with(msg)
예제 #3
0
 def test_on_message_ready(self):
     channel = Mock(name='channel')
     msg = Mock(name='msg')
     callback = Mock(name='callback')
     self.transport._callbacks = {'q1': callback}
     self.transport.on_message_ready(channel, msg, queue='q1')
     callback.assert_called_with(msg)
예제 #4
0
    def test_enter__exit(self):
        P = self.hub.poller = Mock()
        on_close = Mock()
        self.hub.on_close.add(on_close)

        try:
            read_A = Mock()
            read_B = Mock()
            self.hub.add_reader(10, read_A)
            self.hub.add_reader(File(11), read_B)
            write_A = Mock()
            write_B = Mock()
            self.hub.add_writer(20, write_A)
            self.hub.add_writer(File(21), write_B)
            self.assertTrue(self.hub.readers)
            self.assertTrue(self.hub.writers)
        finally:
            assert self.hub.poller
            self.hub.close()
        self.assertFalse(self.hub.readers)
        self.assertFalse(self.hub.writers)

        P.unregister.assert_has_calls([
            call(10),
            call(11),
            call(20),
            call(21),
        ],
                                      any_order=True)

        on_close.assert_called_with(self.hub)
예제 #5
0
 def test_enter_after(self):
     t = Timer()
     t._enter = Mock()
     fun = Mock(name='fun')
     time = Mock(name='time')
     time.return_value = 10
     t.enter_after(10, fun, time=time)
     time.assert_called_with()
     t._enter.assert_called_with(20, 0, fun)
예제 #6
0
    def test_apply_entry_error_not_handled(self, stdout, stderr):
        t = Timer()
        t.schedule.on_error = Mock()

        fun = Mock()
        fun.side_effect = ValueError()
        t.schedule.apply_entry(fun)
        fun.assert_called_with()
        self.assertFalse(stderr.getvalue())
예제 #7
0
 def test_enter_after(self):
     t = Timer()
     t._enter = Mock()
     fun = Mock(name="fun")
     time = Mock(name="time")
     time.return_value = 10
     t.enter_after(10, fun, time=time)
     time.assert_called_with()
     t._enter.assert_called_with(20, 0, fun)
예제 #8
0
    def test_apply_entry_error_not_handled(self, stdout, stderr):
        t = Timer()
        t.schedule.on_error = Mock()

        fun = Mock()
        fun.side_effect = ValueError()
        t.schedule.apply_entry(fun)
        fun.assert_called_with()
        self.assertFalse(stderr.getvalue())
예제 #9
0
 def test_mexe__with_sender(self, _):
     x = AsyncAWSAuthConnection('aws.vandelay.com',
                                http_client=Mock(name='client'))
     Conn = x.get_http_connection = Mock(name='get_http_connection')
     request = x.build_base_http_request('GET', 'foo', '/auth')
     sender = Mock(name='sender')
     callback = PromiseMock(name='callback')
     x._mexe(request, sender=sender, callback=callback)
     sender.assert_called_with(
         Conn.return_value, request.method, request.path,
         request.body, request.headers, callback,
     )
예제 #10
0
 def test_mexe__with_sender(self, _):
     x = AsyncAWSAuthConnection('aws.vandelay.com',
                                http_client=Mock(name='client'))
     Conn = x.get_http_connection = Mock(name='get_http_connection')
     request = x.build_base_http_request('GET', 'foo', '/auth')
     sender = Mock(name='sender')
     callback = PromiseMock(name='callback')
     x._mexe(request, sender=sender, callback=callback)
     sender.assert_called_with(
         Conn.return_value,
         request.method,
         request.path,
         request.body,
         request.headers,
         callback,
     )
예제 #11
0
 def test_simple(self):
     prev_count, utils.count = utils.count, Mock()
     try:
         utils.count.return_value = list(range(1))
         x = utils.retry_over_time(self.myfun, self.Predicate,
                                   errback=None, interval_max=14)
         self.assertIsNone(x)
         utils.count.return_value = list(range(10))
         cb = Mock()
         x = utils.retry_over_time(self.myfun, self.Predicate,
                                   errback=self.errback, callback=cb,
                                   interval_max=14)
         self.assertEqual(x, 42)
         self.assertEqual(self.index, 9)
         cb.assert_called_with()
     finally:
         utils.count = prev_count
예제 #12
0
 def test_simple(self):
     prev_count, utils.count = utils.count, Mock()
     try:
         utils.count.return_value = list(range(1))
         x = utils.retry_over_time(self.myfun,
                                   self.Predicate,
                                   errback=None,
                                   interval_max=14)
         self.assertIsNone(x)
         utils.count.return_value = list(range(10))
         cb = Mock()
         x = utils.retry_over_time(self.myfun,
                                   self.Predicate,
                                   errback=self.errback,
                                   callback=cb,
                                   interval_max=14)
         self.assertEqual(x, 42)
         self.assertEqual(self.index, 9)
         cb.assert_called_with()
     finally:
         utils.count = prev_count
예제 #13
0
    def test_acquire_release(self):
        x = LaxBoundedSemaphore(2)

        c1 = Mock()
        x.acquire(c1, 1)
        self.assertEqual(x.value, 1)
        c1.assert_called_with(1)

        c2 = Mock()
        x.acquire(c2, 2)
        self.assertEqual(x.value, 0)
        c2.assert_called_with(2)

        c3 = Mock()
        x.acquire(c3, 3)
        self.assertEqual(x.value, 0)
        self.assertFalse(c3.called)

        x.release()
        self.assertEqual(x.value, 0)
        x.release()
        self.assertEqual(x.value, 1)
        x.release()
        self.assertEqual(x.value, 2)
        c3.assert_called_with(3)
예제 #14
0
    def test_acquire_release(self):
        x = LaxBoundedSemaphore(2)

        c1 = Mock()
        x.acquire(c1, 1)
        self.assertEqual(x.value, 1)
        c1.assert_called_with(1)

        c2 = Mock()
        x.acquire(c2, 2)
        self.assertEqual(x.value, 0)
        c2.assert_called_with(2)

        c3 = Mock()
        x.acquire(c3, 3)
        self.assertEqual(x.value, 0)
        c3.assert_not_called()

        x.release()
        self.assertEqual(x.value, 0)
        x.release()
        self.assertEqual(x.value, 1)
        x.release()
        self.assertEqual(x.value, 2)
        c3.assert_called_with(3)
예제 #15
0
    def test_grow_shrink(self):
        x = LaxBoundedSemaphore(1)
        self.assertEqual(x.initial_value, 1)
        cb1 = Mock()
        x.acquire(cb1, 1)
        cb1.assert_called_with(1)
        self.assertEqual(x.value, 0)

        cb2 = Mock()
        x.acquire(cb2, 2)
        self.assertFalse(cb2.called)
        self.assertEqual(x.value, 0)

        cb3 = Mock()
        x.acquire(cb3, 3)
        self.assertFalse(cb3.called)

        x.grow(2)
        cb2.assert_called_with(2)
        cb3.assert_called_with(3)
        self.assertEqual(x.value, 2)
        self.assertEqual(x.initial_value, 3)

        self.assertFalse(x._waiting)
        x.grow(3)
        for i in range(x.initial_value):
            self.assertTrue(x.acquire(Mock()))
        self.assertFalse(x.acquire(Mock()))
        x.clear()

        x.shrink(3)
        for i in range(x.initial_value):
            self.assertTrue(x.acquire(Mock()))
        self.assertFalse(x.acquire(Mock()))
        self.assertEqual(x.value, 0)

        for i in range(100):
            x.release()
        self.assertEqual(x.value, x.initial_value)
예제 #16
0
    def test_grow_shrink(self):
        x = LaxBoundedSemaphore(1)
        self.assertEqual(x.initial_value, 1)
        cb1 = Mock()
        x.acquire(cb1, 1)
        cb1.assert_called_with(1)
        self.assertEqual(x.value, 0)

        cb2 = Mock()
        x.acquire(cb2, 2)
        cb2.assert_not_called()
        self.assertEqual(x.value, 0)

        cb3 = Mock()
        x.acquire(cb3, 3)
        cb3.assert_not_called()

        x.grow(2)
        cb2.assert_called_with(2)
        cb3.assert_called_with(3)
        self.assertEqual(x.value, 2)
        self.assertEqual(x.initial_value, 3)

        self.assertFalse(x._waiting)
        x.grow(3)
        for i in range(x.initial_value):
            self.assertTrue(x.acquire(Mock()))
        self.assertFalse(x.acquire(Mock()))
        x.clear()

        x.shrink(3)
        for i in range(x.initial_value):
            self.assertTrue(x.acquire(Mock()))
        self.assertFalse(x.acquire(Mock()))
        self.assertEqual(x.value, 0)

        for i in range(100):
            x.release()
        self.assertEqual(x.value, x.initial_value)