-
Notifications
You must be signed in to change notification settings - Fork 115
Expand file tree
/
Copy pathtest_general.py
More file actions
114 lines (81 loc) · 3.27 KB
/
Copy pathtest_general.py
File metadata and controls
114 lines (81 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from bson import ObjectId
import urllib2
import json
import time
def test_general_simple_task_one(worker):
result = worker.send_task(
"tests.tasks.general.Add", {"a": 41, "b": 1, "sleep": 1})
assert result == 42
time.sleep(0.1)
db_workers = list(worker.mongodb_jobs.mrq_workers.find())
assert len(db_workers) == 1
assert db_workers[0]["status"] in ["full", "wait"]
# Test the HTTP admin API
admin_worker = json.load(urllib2.urlopen("http://localhost:20020"))
assert admin_worker["_id"] == str(db_workers[0]["_id"])
assert admin_worker["status"] == "wait"
# Stop the worker gracefully
worker.stop(deps=False)
db_jobs = list(worker.mongodb_jobs.mrq_jobs.find())
assert len(db_jobs) == 1
assert db_jobs[0]["result"] == 42
assert db_jobs[0]["status"] == "success"
assert db_jobs[0]["queue"] == "default"
assert db_jobs[0]["worker"]
assert db_jobs[0]["datestarted"]
assert db_jobs[0]["dateupdated"]
assert db_jobs[0]["totaltime"] > 1
assert db_jobs[0]["_id"]
assert db_jobs[0]["params"] == {"a": 41, "b": 1, "sleep": 1}
assert db_jobs[0]["path"] == "tests.tasks.general.Add"
assert db_jobs[0]["time"] < 0.1
assert db_jobs[0]["switches"] >= 1
db_workers = list(worker.mongodb_jobs.mrq_workers.find())
assert len(db_workers) == 1
assert db_workers[0]["_id"] == db_jobs[0]["worker"]
assert db_workers[0]["status"] == "stop"
assert db_workers[0]["jobs"] == []
assert db_workers[0]["done_jobs"] == 1
assert db_workers[0]["config"]
assert db_workers[0]["_id"]
# Job logs
db_logs = list(
worker.mongodb_logs.mrq_logs.find({"job": db_jobs[0]["_id"]}))
assert len(db_logs) == 1
assert "adding" in db_logs[0]["logs"]
# Worker logs
db_logs = list(
worker.mongodb_logs.mrq_logs.find({"worker": db_workers[0]["_id"]}))
assert len(db_logs) >= 1
def test_general_simple_no_trace(worker):
worker.start(trace=False)
result = worker.send_task("tests.tasks.general.Add", {"a": 41, "b": 1})
assert result == 42
def test_general_simple_task_multiple(worker):
result = worker.send_tasks("tests.tasks.general.Add", [
{"a": 41, "b": 1, "sleep": 1},
{"a": 41, "b": 1, "sleep": 1},
{"a": 40, "b": 1, "sleep": 1}
])
assert result == [42, 42, 41]
assert [x["result"] for x in worker.mongodb_jobs.mrq_jobs.find().sort(
[["dateupdated", 1]])] == [42, 42, 41]
def test_general_simple_task_reverse(worker):
worker.start(queues="default_reverse")
result = worker.send_tasks("tests.tasks.general.Add", [
{"a": 41, "b": 1, "sleep": 1},
{"a": 41, "b": 1, "sleep": 1},
{"a": 40, "b": 1, "sleep": 1}
])
assert result == [42, 42, 41]
assert [x["result"] for x in worker.mongodb_jobs.mrq_jobs.find().sort(
[["dateupdated", 1]])] == [41, 42, 42]
def test_general_exception_status(worker):
worker.send_task("tests.tasks.general.RaiseException", {
"message": "xyz"}, block=True, accept_statuses=["failed"])
job1 = worker.mongodb_jobs.mrq_jobs.find_one()
assert job1
assert job1["exceptiontype"] == "Exception"
assert job1["status"] == "failed"
assert "raise" in job1["traceback"]
assert "xyz" in job1["traceback"]