Ejemplo n.º 1
0
 def test_change_state(self):
     job = Job('change-state')
     states = [JOB_ENQUEUED, JOB_DEQUEUED, JOB_RESERVED]
     for s in states:
         job.change_state(s)
         self.assertEqual(s, job.state)
         self.assertNotEqual(0, job.state)
         if s == JOB_ENQUEUED:
             self.assertIsNotNone(job.enqueue_ts)
         if s == JOB_DEQUEUED:
             self.assertIsNotNone(job.dequeue_ts)
Ejemplo n.º 2
0
    def test_change_state_exception(self):
        job = Job('test-except')
        with self.assertRaises(ValueError) as ar:
            job.change_state(-1)
        self.assertIsInstance(ar.exception, ValueError)

        try:
            with self.assertRaises(ValueError) as ar:
                job.change_state(JOB_DEQUEUED)
        except AssertionError:
            pass
Ejemplo n.º 3
0
 def test_change_state(self):
     job = Job('change-state')
     states = [JOB_ENQUEUED, JOB_DEQUEUED, JOB_RESERVED]
     for s in states:
         job.change_state(s)
         self.assertEqual(s, job.state)
         self.assertNotEqual(0, job.state)
         if s == JOB_ENQUEUED:
             self.assertIsNotNone(job.enqueue_ts)
         if s == JOB_DEQUEUED:
             self.assertIsNotNone(job.dequeue_ts)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 def test_release_undequeued_job(self):
     queue = HashQueue(self.mock_redis_conn, has_proxy=True)
     qname = md5(self.user_id + "_queue").hexdigest()
     job = pickle.dumps(Job(self.uuid))
     self.mock_redis_conn.get.return_value = 10
     self.mock_redis_conn.hget.return_value = job
     with self.assertRaises(ERedisReleaseError) as ar:
         queue.release(qname, self.uuid)
     self.assertIsInstance(ar.exception, ERedisReleaseError)
Ejemplo n.º 8
0
 def test_dequeue_data_missing(self):
     queue = HashQueue(self.mock_redis_conn, has_proxy=True)
     qname = md5(self.user_id + "_queue").hexdigest()
     job = pickle.dumps(Job(self.uuid))
     self.mock_redis_conn.pipeline.return_value.execute.return_value =\
         None, job
     with self.assertRaises(ERedisDataMissing) as ar:
         k, data = queue.dequeue(qname, self.uuid)
     self.assertIsInstance(ar.exception, ERedisDataMissing)
Ejemplo n.º 9
0
 def test_dequeue(self):
     queue = HashQueue(self.mock_redis_conn, has_proxy=True)
     qname = md5(self.user_id + "_queue").hexdigest()
     job = pickle.dumps(Job(self.uuid))
     self.mock_redis_conn.pipeline.return_value.execute.return_value =\
         self.data, job
     k, data = queue.dequeue(qname, self.uuid)
     self.assertEqual(k, self.uuid)
     self.assertEqual(data, self.data)
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
 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)
Ejemplo n.º 12
0
 def test_release(self):
     queue = HashQueue(self.mock_redis_conn, has_proxy=True)
     qname = md5(self.user_id + "_queue").hexdigest()
     job = pickle.dumps(Job(self.uuid))
     job = pickle.loads(job)
     job.change_state(JOB_DEQUEUED)
     job = pickle.dumps(job)
     self.mock_redis_conn.get.return_value = 10
     self.mock_redis_conn.hget.return_value = job
     self.mock_redis_conn.pipeline.return_value.execute.return_value =\
         1, 1, 9, 9
     l1, l2 = queue.release(qname, self.uuid)
     self.assertEqual(9, l1)
     self.assertEqual(9, l2)
Ejemplo n.º 13
0
    def test_change_state_exception(self):
        job = Job('test-except')
        with self.assertRaises(ValueError) as ar:
            job.change_state(-1)
        self.assertIsInstance(ar.exception, ValueError)

        try:
            with self.assertRaises(ValueError) as ar:
                job.change_state(JOB_DEQUEUED)
        except AssertionError:
            pass
Ejemplo n.º 14
0
    def test_release_pipeline_timeout_error(self):
        self.mock_redis_conn.get.return_value = 10
        self.mock_redis_conn.hget.side_effect = TimeoutError
        queue = HashQueue(self.mock_redis_conn)
        qname = md5(self.user_id + "_queue").hexdigest()
        with self.assertRaises(TimeoutError) as ar:
            queue.release(qname, self.uuid)
        self.assertIsInstance(ar.exception, TimeoutError)

        self.mock_redis_conn.reset_mock()
        self.mock_redis_conn.get.side_effect = TimeoutError
        with self.assertRaises(TimeoutError) as ar:
            queue.release(qname, self.uuid)
        self.assertIsInstance(ar.exception, TimeoutError)

        self.mock_redis_conn.reset_mock()
        self.mock_redis_conn.get.return_value = 10
        self.mock_redis_conn.hget.return_value = pickle.dumps(Job(self.uuid))
        self.mock_redis_conn.pipeline.return_value.execute.side_effect =\
            TimeoutError
        with self.assertRaises(TimeoutError) as ar:
            queue.release(qname, self.uuid)
        self.assertIsInstance(ar.exception, TimeoutError)
Ejemplo n.º 15
0
 def test_change_state_to_reserved(self):
     job = Job('test-known')
     job.change_state(JOB_RESERVED)
     self.assertIsNone(job.enqueue_ts)
     self.assertIsNone(job.dequeue_ts)
     self.assertEqual(JOB_RESERVED, job.state)
Ejemplo n.º 16
0
 def test_change_state_to_reserved(self):
     job = Job('test-known')
     job.change_state(JOB_RESERVED)
     self.assertIsNone(job.enqueue_ts)
     self.assertIsNone(job.dequeue_ts)
     self.assertEqual(JOB_RESERVED, job.state)