def test_enqueue(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.pipeline.return_value.execute.return_value =\ 10, 1, 1, 10, 11 l = queue.enqueue(qname, self.uuid, self.data) self.assertEqual(l, 10)
def test_enqueue(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.pipeline.return_value.execute.return_value =\ 10, 1, 1, 10, 11 l = queue.enqueue(qname, self.uuid, self.data) self.assertEqual(l, 10)
def test_enqueue_timeout_error(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.pipeline.return_value.execute.side_effect = TimeoutError l = -1 with self.assertRaises(TimeoutError) as ar: l = queue.enqueue(qname, self.uuid, self.data) self.assertEqual(l, -1) self.assertIsInstance(ar.exception, TimeoutError)
def test_dequeue(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.rpoplpush.return_value = self.uuid mock_redis.pipeline.return_value.execute.return_value = \ self.data, pickle.dumps(Job(self.uuid)) k, data = queue.dequeue(qname, self.uuid) self.assertEqual(k, self.uuid) self.assertEqual(data, self.data)
def test_dequeue(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.rpoplpush.return_value = self.uuid mock_redis.pipeline.return_value.execute.return_value = \ self.data, pickle.dumps(Job(self.uuid)) k, data = queue.dequeue(qname, self.uuid) self.assertEqual(k, self.uuid) self.assertEqual(data, self.data)
def test_enqueue_queue_full(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.get.return_value = 1024 l = -1 with self.assertRaises(ERedisQueueFull) as ar: l = queue.enqueue(qname, self.uuid, self.data) self.assertEqual(l, -1) self.assertIsInstance(ar.exception, ERedisQueueFull)
def test_enqueue_timeout_error(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.pipeline.return_value.execute.side_effect = TimeoutError l = -1 with self.assertRaises(TimeoutError) as ar: l = queue.enqueue(qname, self.uuid, self.data) self.assertEqual(l, -1) self.assertIsInstance(ar.exception, TimeoutError)
def test_enqueue_queue_full(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.get.return_value = 1024 l = -1 with self.assertRaises(ERedisQueueFull) as ar: l = queue.enqueue(qname, self.uuid, self.data) self.assertEqual(l, -1) self.assertIsInstance(ar.exception, ERedisQueueFull)
def test_dequeue_key_not_found(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.rpoplpush.return_value = "anan" k = data = None mock_redis.pipeline.return_value.execute.return_value = \ None, None with self.assertRaises(ERedisKeyNotFound) as ar: k, data = queue.dequeue(qname, self.uuid) self.assertIsNone(k) self.assertIsNone(data) self.assertIsInstance(ar.exception, ERedisKeyNotFound)
def test_release(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() job = Job(self.uuid) job.change_state(JOB_DEQUEUED) mock_redis.hget.return_value = pickle.dumps(job) mock_redis.pipeline.return_value.execute.return_value = \ 10, 1, 1, 1, 10 q_len = total_len = -1 q_len, total_len = queue.release(qname, self.uuid) self.assertEqual(1, q_len) self.assertEqual(10, total_len)
def test_release(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() job = Job(self.uuid) job.change_state(JOB_DEQUEUED) mock_redis.hget.return_value = pickle.dumps(job) mock_redis.pipeline.return_value.execute.return_value = \ 10, 1, 1, 1, 10 q_len = total_len = -1 q_len, total_len = queue.release(qname, self.uuid) self.assertEqual(1, q_len) self.assertEqual(10, total_len)
def test_dequeue_data_missing(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.rpoplpush.return_value = "anan" k = data = None mock_redis.pipeline.return_value.execute.return_value = \ None, pickle.dumps(Job(self.uuid)) with self.assertRaises(ERedisDataMissing) as ar: k, data = queue.dequeue(qname, "anan") self.assertIsNone(k) self.assertIsNone(data) self.assertIsInstance(ar.exception, ERedisDataMissing)
def test_dequeue_data_missing(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.rpoplpush.return_value = "anan" k = data = None mock_redis.pipeline.return_value.execute.return_value = \ None, pickle.dumps(Job(self.uuid)) with self.assertRaises(ERedisDataMissing) as ar: k, data = queue.dequeue(qname, "anan") self.assertIsNone(k) self.assertIsNone(data) self.assertIsInstance(ar.exception, ERedisDataMissing)
def test_dequeue_empty_queue(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.rpoplpush.return_value = None k = data = None with self.assertRaises(ERedisEmptyQueue) as ar: k, data = queue.dequeue(qname, self.uuid) self.assertIsNone(k) self.assertIsNone(data) self.assertIsInstance(ar.exception, ERedisEmptyQueue) self.assertEqual("Redis Warn: {} queue is empty!".format(qname), str(ar.exception))
def test_dequeue_key_not_found(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.rpoplpush.return_value = "anan" k = data = None mock_redis.pipeline.return_value.execute.return_value = \ None, None with self.assertRaises(ERedisKeyNotFound) as ar: k, data = queue.dequeue(qname, self.uuid) self.assertIsNone(k) self.assertIsNone(data) self.assertIsInstance(ar.exception, ERedisKeyNotFound)
def test_dequeue_empty_queue(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.rpoplpush.return_value = None k = data = None with self.assertRaises(ERedisEmptyQueue) as ar: k, data = queue.dequeue(qname, self.uuid) self.assertIsNone(k) self.assertIsNone(data) self.assertIsInstance(ar.exception, ERedisEmptyQueue) self.assertEqual("Redis Warn: {} queue is empty!".format(qname), str(ar.exception))
def test_release_undequeued_job(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() job = Job(self.uuid) mock_redis.hget.return_value = pickle.dumps(job) mock_redis.pipeline.return_value.execute.return_value = \ 10, 1, 1, 1, 10 q_len = total_len = -1 with self.assertRaises(ERedisReleaseError) as ar: q_len, total_len = queue.release(qname, self.uuid) self.assertEqual(-1, q_len) self.assertEqual(-1, total_len) self.assertIsInstance(ar.exception, ERedisReleaseError)
def test_release_undequeued_job(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() job = Job(self.uuid) mock_redis.hget.return_value = pickle.dumps(job) mock_redis.pipeline.return_value.execute.return_value = \ 10, 1, 1, 1, 10 q_len = total_len = -1 with self.assertRaises(ERedisReleaseError) as ar: q_len, total_len = queue.release(qname, self.uuid) self.assertEqual(-1, q_len) self.assertEqual(-1, total_len) self.assertIsInstance(ar.exception, ERedisReleaseError)
def test_dequeue_connection_error(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.rpoplpush.side_effect = ConnectionError data = None with self.assertRaises(ConnectionError) as ar: data = queue.dequeue(qname, self.uuid) self.assertIsNone(data) self.assertIsInstance(ar.exception, ConnectionError) mock_redis.reset_mock() mock_redis.rpoplpush.return_value = "anan" mock_redis.pipeline.return_value.execute.side_effect = ConnectionError with self.assertRaises(ConnectionError) as ar: data = queue.dequeue(qname, self.uuid) self.assertIsNone(data) self.assertIsInstance(ar.exception, ConnectionError)
def test_dequeue_connection_error(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.rpoplpush.side_effect = ConnectionError data = None with self.assertRaises(ConnectionError) as ar: data = queue.dequeue(qname, self.uuid) self.assertIsNone(data) self.assertIsInstance(ar.exception, ConnectionError) mock_redis.reset_mock() mock_redis.rpoplpush.return_value = "anan" mock_redis.pipeline.return_value.execute.side_effect= ConnectionError with self.assertRaises(ConnectionError) as ar: data = queue.dequeue(qname, self.uuid) self.assertIsNone(data) self.assertIsInstance(ar.exception, ConnectionError)
def test_queue_length_timeout_error(self, mock_redis): queue = ReliableQueue(mock_redis) mock_redis.get.side_effect = TimeoutError l = -1 with self.assertRaises(TimeoutError) as ar: l = len(queue) self.assertEqual(l, -1) self.assertIsInstance(ar.exception, TimeoutError)
def test_release_timeout_error(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.hget.side_effect = TimeoutError q_len = total_len = -1 with self.assertRaises(TimeoutError) as ar: q_len, total_len = queue.release(qname, self.uuid) self.assertEqual(-1, q_len) self.assertEqual(-1, total_len) self.assertIsInstance(ar.exception, TimeoutError) mock_redis.reset_mock() mock_redis.hget.return_value = "anan" mock_redis.pipeline.return_value.execute.side_effect = TimeoutError with self.assertRaises(TimeoutError) as ar: q_len, total_len = queue.release(qname, self.uuid) self.assertEqual(-1, q_len) self.assertEqual(-1, total_len) self.assertIsInstance(ar.exception, TimeoutError)
def test_release_timeout_error(self, mock_redis): queue = ReliableQueue(mock_redis) qname = md5(self.user_id + "_queue").hexdigest() mock_redis.hget.side_effect = TimeoutError q_len = total_len = -1 with self.assertRaises(TimeoutError) as ar: q_len, total_len= queue.release(qname, self.uuid) self.assertEqual(-1, q_len) self.assertEqual(-1, total_len) self.assertIsInstance(ar.exception, TimeoutError) mock_redis.reset_mock() mock_redis.hget.return_value= "anan" mock_redis.pipeline.return_value.execute.side_effect= TimeoutError with self.assertRaises(TimeoutError) as ar: q_len, total_len = queue.release(qname, self.uuid) self.assertEqual(-1, q_len) self.assertEqual(-1, total_len) self.assertIsInstance(ar.exception, TimeoutError)
def test_queue_length(self, mock_redis): queue = ReliableQueue(mock_redis) mock_redis.get.return_value = None self.assertEqual(0, len(queue)) mock_redis.get.return_value = 1024 self.assertEqual(1024, len(queue))
def test_queue_length_timeout_error(self): queue = ReliableQueue(self.mock_redis_conn) self.mock_redis_conn.get.side_effect = TimeoutError with self.assertRaises(TimeoutError) as ar: l = len(queue) self.assertIsInstance(ar.exception, TimeoutError)