def test_popleft(self): q = Queue(hub=self.hub) self.assertEqual(len(q), 0) q.append('an item') q.append('another item') self.assertEqual(len(q), 2) self.assertEqual(q.popleft(), 'an item') self.assertEqual(len(q), 1) self.assertEqual(q.popleft(), 'another item') self.assertEqual(len(q), 0) start = time.time() self.assertRaises(greennet.Timeout, q.popleft, IMMEDIATE_THRESHOLD) self.assert_(time.time() - start < IMMEDIATE_THRESHOLD * 2) self.assertEqual(len(q), 0)
def test_popleft_wait_for_append(self): q = Queue(hub=self.hub) timeout = 0.5 self.hub.call_later(greennet.greenlet(q.append), timeout, 'an item') start = time.time() self.assertEqual(q.popleft(), 'an item') duration = time.time() - start self.assert_(duration < timeout + IMMEDIATE_THRESHOLD and duration > timeout - IMMEDIATE_THRESHOLD)