Пример #1
0
 def test_qsize(self):
     """测试qsize()"""
     queue_qsize = RedisQueue("queue_qsize_" + self.key_rand)
     self.keys.append(queue_qsize.key)
     self.del_key(queue_qsize.key)
     num = random.randint(1, 10)
     for i in range(num):
         queue_qsize.put(i)
     self.assertEqual(queue_qsize.qsize(), num)
Пример #2
0
 def test_put(self):
     """测试put()"""
     queue_put = RedisQueue("queue_put_" + self.key_rand)
     self.keys.append(queue_put.key)
     items = [x for x in range(random.randint(1, 10))]
     for i in items:
         qsize = queue_put.put(i)
         self.assertEqual(queue_put.qsize(), qsize)
     for i in items:
         item = queue_put.get()
         self.assertEqual(item, i)
Пример #3
0
class PutThread(threading.Thread):
    def __init__(self, flag, *args, **kwargs):
        threading.Thread.__init__(self, *args, **kwargs)
        self.q = RedisQueue('test')
        self.flag = flag

    def run(self):
        if self.q.lock(30):
            for i in range(10):
                time.sleep(0.001)
                self.q.put(self.flag + '_' + str(i))
            self.q.unlock()
        else:
            print('locked')
Пример #4
0
 def que(self):
     # 返回一个队列,并在使用后清除该队列
     q = RedisQueue('tests')
     # 此处返回的即为que的值
     yield q
     # yield 前面属于setUp部分,后面属于tearDown
     import redis
     r = redis.Redis()
     r.delete(q.key)
Пример #5
0
 def test_lock(self):
     """测试加锁"""
     queue_lock = RedisQueue("queue_lock_" + self.key_rand)
     self.keys.append(queue_lock.key)
     # 加锁 无锁时加锁
     self.assertTrue(queue_lock.lock(5))
     # 加锁 有锁时加锁
     self.assertFalse(queue_lock.lock())
     # 加锁 超时后加锁
     time.sleep(6)
     self.assertTrue(queue_lock.lock())
     # 加锁 解锁后加锁
     queue_lock.unlock()
     self.assertTrue(queue_lock.lock())
Пример #6
0
 def test_empty(self):
     """测试empty()"""
     queue_empty = RedisQueue("queue_empty_" + self.key_rand)
     self.keys.append(queue_empty.key)
     self.del_key(queue_empty.key)
     self.assertTrue(queue_empty.empty())
     queue_empty.put("empty")
     self.assertFalse(queue_empty.empty())
Пример #7
0
 def __init__(self, flag, *args, **kwargs):
     threading.Thread.__init__(self, *args, **kwargs)
     self.q = RedisQueue('test')
     self.flag = flag
Пример #8
0
import threading
import time


class PutThread(threading.Thread):
    def __init__(self, flag, *args, **kwargs):
        threading.Thread.__init__(self, *args, **kwargs)
        self.q = RedisQueue('test')
        self.flag = flag

    def run(self):
        if self.q.lock(30):
            for i in range(10):
                time.sleep(0.001)
                self.q.put(self.flag + '_' + str(i))
            self.q.unlock()
        else:
            print('locked')


if __name__ == '__main__':
    for i in range(50):
        t = PutThread(daemon=True, flag=str(i))
        t.start()
        time.sleep(0.01)

    q = RedisQueue('test')
    time.sleep(5)
    while not q.empty():
        print(q.get())
Пример #9
0
 def test_get_nowait_when_empty(self):
     """测试异常"""
     queue_err = RedisQueue("queue_err_" + self.key_rand)
     self.del_key(queue_err.key)
     with self.assertRaises(EmptyError):
         queue_err.get_nowait()
Пример #10
0
def test_serialize_name_error():
    with pytest.raises(NameError) as e:
        RedisQueue('tests', serialized="233")