Completed
Pull Request — master (#794)
by
unknown
33s
created

TestTaskQueue.test_task_queue_in_time_order()   B

Complexity

Conditions 5

Size

Total Lines 33

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
dl 0
loc 33
rs 8.0894
c 1
b 0
f 0
1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
3
4
import Queue
5
import unittest
6
7
import six
8
9
from pyspider.scheduler.task_queue import InQueueTask, TaskQueue
10
11
12
class TestTaskQueue(unittest.TestCase):
13
    """
14
        TestTaskQueue
15
    """
16
17
    def test_task_queue_in_time_order(self):
18
        tq = TaskQueue(rate=300, burst=1000)
19
20
        queues = dict()
21
        tasks = dict()
22
23
        for i in range(0, 100):
24
            it = InQueueTask(str(i), priority=i / 10, exetime=0)
25
            tq.put(it.taskid, it.priority, it.exetime)
26
27
            if it.priority not in queues:
28
                queues[it.priority] = Queue.Queue()
29
30
            q = queues[it.priority]  # type:Queue.Queue
31
            q.put(it)
32
            tasks[it.taskid] = it
33
34
            six.print_('put, ', it)
35
36
        for i in range(0, 100):
37
            task_id = tq.get()
38
            task = tasks[task_id]
39
            q = queues[task.priority]  # type: Queue.Queue
40
            expect_task = q.get()
41
            self.assertEqual(task_id, expect_task.taskid)
42
            self.assertEqual(task.priority, 9 - i / 10)
43
            six.print_('get, ', task)
44
45
        self.assertEqual(tq.priority_queue.qsize(), 0)
46
        self.assertEqual(tq.processing.qsize(), 100)
47
        for q in six.itervalues(queues):  # type:Queue.Queue
48
            self.assertEqual(q.qsize(), 0)
49
        pass
50
51
    pass
52
53
54
if __name__ == '__main__':
55
    unittest.main()
56