Skip to content

Commit 0b8bd10

Browse files
Copilotmanast
authored andcommitted
test(python): stabilize flow addBulk ordering test
1 parent 69eb242 commit 0b8bd10

1 file changed

Lines changed: 25 additions & 46 deletions

File tree

python/tests/flow_test.py

Lines changed: 25 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,13 @@
1414

1515
import unittest
1616

17-
queue_name = ""
1817
prefix = os.environ.get('BULLMQ_TEST_PREFIX') or "bull"
1918

2019
class TestJob(unittest.IsolatedAsyncioTestCase):
2120

2221
def setUp(self):
2322
print("Setting up test queue")
24-
queueName = f"__test_queue__{uuid4().hex}"
23+
self.queue_name = f"__test_queue__{uuid4().hex}"
2524

2625
async def asyncTearDown(self):
2726
connection = redis.Redis(host='localhost')
@@ -53,7 +52,7 @@ async def process2(job: Job, token: str):
5352
return 1
5453

5554
parent_worker = Worker(parent_queue_name, process2, {"prefix": prefix})
56-
children_worker = Worker(queue_name, process1, {"prefix": prefix})
55+
children_worker = Worker(self.queue_name, process1, {"prefix": prefix})
5756

5857
flow = FlowProducer({"prefix": prefix})
5958
await flow.add(
@@ -62,9 +61,9 @@ async def process2(job: Job, token: str):
6261
"queueName": parent_queue_name,
6362
"data": {},
6463
"children": [
65-
{"name": child_job_name, "data": {"idx": 0, "foo": 'bar'}, "queueName": queue_name},
66-
{"name": child_job_name, "data": {"idx": 1, "foo": 'baz'}, "queueName": queue_name},
67-
{"name": child_job_name, "data": {"idx": 2, "foo": 'qux'}, "queueName": queue_name}
64+
{"name": child_job_name, "data": {"idx": 0, "foo": 'bar'}, "queueName": self.queue_name},
65+
{"name": child_job_name, "data": {"idx": 1, "foo": 'baz'}, "queueName": self.queue_name},
66+
{"name": child_job_name, "data": {"idx": 2, "foo": 'qux'}, "queueName": self.queue_name}
6867
]
6968
}
7069
)
@@ -83,67 +82,47 @@ async def process2(job: Job, token: str):
8382

8483
async def test_addBulk_should_process_children_before_parent(self):
8584
child_job_name = 'child-job'
86-
children_data = [
87-
{"idx": 0, "bar": 'something'},
88-
{"idx": 1, "baz": 'something'}
89-
]
85+
child_queue_name = f"__test_child_queue__{uuid4().hex}"
9086
parent_queue_name = f"__test_parent_queue__{uuid4().hex}"
9187

92-
processing_children = Future()
93-
94-
processed_children = 0
95-
async def process1(job: Job, token: str):
96-
nonlocal processed_children
97-
processed_children+=1
98-
if processed_children == len(children_data):
99-
processing_children.set_result(None)
100-
return children_data[job.data.get("idx")]
101-
102-
processing_parents = Future()
103-
104-
processed_parents = 0
105-
async def process2(job: Job, token: str):
106-
nonlocal processed_parents
107-
processed_parents+=1
108-
if processed_parents == 2:
109-
processing_parents.set_result(None)
110-
return 1
111-
112-
parent_worker = Worker(parent_queue_name, process2, {"prefix": prefix})
113-
children_worker = Worker(queue_name, process1, {"prefix": prefix})
114-
11588
flow = FlowProducer({"prefix": prefix})
116-
await flow.addBulk([
89+
trees = await flow.addBulk([
11790
{
11891
"name": 'parent-job-1',
11992
"queueName": parent_queue_name,
12093
"data": {},
12194
"children": [
122-
{"name": child_job_name, "data": {"idx": 0, "foo": 'bar'}, "queueName": queue_name}
95+
{"name": child_job_name, "data": {"idx": 0, "foo": 'bar'}, "queueName": child_queue_name}
12396
]
12497
},
12598
{
12699
"name": 'parent-job-2',
127100
"queueName": parent_queue_name,
128101
"data": {},
129102
"children": [
130-
{"name": child_job_name, "data": {"idx": 1, "foo": 'baz'}, "queueName": queue_name}
103+
{"name": child_job_name, "data": {"idx": 1, "foo": 'baz'}, "queueName": child_queue_name}
131104
]
132105
}
133106
])
134107

135-
await processing_children
136-
await processing_parents
108+
parent_queue = Queue(parent_queue_name, {"prefix": prefix})
109+
child_queue = Queue(child_queue_name, {"prefix": prefix})
110+
111+
for tree in trees:
112+
self.assertTrue(await tree["job"].isWaitingChildren())
113+
child_job = tree["children"][0]["job"]
114+
self.assertEqual(await child_job.getState(), "waiting")
137115

138-
await parent_worker.close()
139-
await children_worker.close()
140116
await flow.close()
141117

142-
parent_queue = Queue(parent_queue_name, {"prefix": prefix})
143118
await parent_queue.pause()
144119
await parent_queue.obliterate()
145120
await parent_queue.close()
146121

122+
await child_queue.pause()
123+
await child_queue.obliterate()
124+
await child_queue.close()
125+
147126
async def test_get_children_values(self):
148127
child_job_name = 'child-job'
149128
children_data = [
@@ -171,7 +150,7 @@ async def process2(job: Job, token: str):
171150
return 1
172151

173152
parent_worker = Worker(parent_queue_name, process2, {"prefix": prefix})
174-
children_worker = Worker(queue_name, process1, {"prefix": prefix})
153+
children_worker = Worker(self.queue_name, process1, {"prefix": prefix})
175154

176155
flow = FlowProducer({"prefix": prefix})
177156
await flow.add(
@@ -180,9 +159,9 @@ async def process2(job: Job, token: str):
180159
"queueName": parent_queue_name,
181160
"data": {},
182161
"children": [
183-
{"name": child_job_name, "data": {"idx": 0, "foo": 'bar'}, "queueName": queue_name},
184-
{"name": child_job_name, "data": {"idx": 1, "foo": 'baz'}, "queueName": queue_name},
185-
{"name": child_job_name, "data": {"idx": 2, "foo": 'qux'}, "queueName": queue_name}
162+
{"name": child_job_name, "data": {"idx": 0, "foo": 'bar'}, "queueName": self.queue_name},
163+
{"name": child_job_name, "data": {"idx": 1, "foo": 'baz'}, "queueName": self.queue_name},
164+
{"name": child_job_name, "data": {"idx": 2, "foo": 'qux'}, "queueName": self.queue_name}
186165
]
187166
}
188167
)
@@ -207,7 +186,7 @@ def on_parent_processed(future):
207186
await parent_queue.close()
208187

209188
async def test_get_children_values_on_simple_jobs(self):
210-
queue = Queue(queue_name, {"prefix": prefix})
189+
queue = Queue(self.queue_name, {"prefix": prefix})
211190
job = await queue.add("test", {"foo": "bar"}, {"delay": 1500})
212191
children_values = await job.getChildrenValues()
213192
self.assertEqual(children_values, {})

0 commit comments

Comments
 (0)