1414
1515import unittest
1616
17- queue_name = ""
1817prefix = os .environ .get ('BULLMQ_TEST_PREFIX' ) or "bull"
1918
2019class 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