@@ -12,6 +12,8 @@ def test_parallel_100sleeps(worker, p_flags):
1212
1313 worker .start (flags = p_flags )
1414
15+ print ("Worker started. Queueing sleeps" )
16+
1517 start_time = time .time ()
1618
1719 # This will sleep a total of 100 seconds
@@ -27,56 +29,48 @@ def test_parallel_100sleeps(worker, p_flags):
2729 assert result == list (range (100 ))
2830
2931
30- @pytest .mark .parametrize (["p_greenlets" ], [
31- [1 ],
32- [2 ]
32+ @pytest .mark .parametrize (["p_greenlets" , "p_strategy" ], [
33+ [g , s ]
34+ for g in [1 , 2 ]
35+ for s in ["" , "parallel" , "burst" ]
3336])
34- def test_dequeue_strategy (worker , p_greenlets ):
37+ def test_dequeue_strategy (worker , p_greenlets , p_strategy ):
3538
3639 worker .start_deps (flush = True )
3740
3841 worker .send_task (
39- "tests.tasks.general.MongoInsert" , {"a" : 41 , "sleep" : 2 }, queue = "q1" , block = False , start = False )
40- worker .send_task (
41- "tests.tasks.general.MongoInsert" , {"a" : 42 , "sleep" : 2 }, queue = "q2" , block = False , start = False )
42+ "tests.tasks.general.MongoInsert" , {"a" : 41 , "sleep" : 1 }, queue = "q1" , block = False , start = False )
4243 worker .send_task (
43- "tests.tasks.general.MongoInsert" , {"a" : 41 , "sleep" : 2 }, queue = "q1 " , block = False , start = False )
44+ "tests.tasks.general.MongoInsert" , {"a" : 42 , "sleep" : 1 }, queue = "q2 " , block = False , start = False )
4445 worker .send_task (
45- "tests.tasks.general.MongoInsert" , {"a" : 42 , "sleep" : 2 }, queue = "q2 " , block = False , start = False )
46+ "tests.tasks.general.MongoInsert" , {"a" : 43 , "sleep" : 1 }, queue = "q1 " , block = False , start = False )
4647 worker .send_task (
47- "tests.tasks.general.MongoInsert" , {"a" : 43 , "sleep" : 2 }, queue = "q3 " , block = False , start = False )
48+ "tests.tasks.general.MongoInsert" , {"a" : 44 , "sleep" : 1 }, queue = "q2 " , block = False , start = False )
4849 worker .send_task (
49- "tests.tasks.general.MongoInsert" , {"a" : 43 , "sleep" : 2 }, queue = "q3" , block = False , start = False )
50-
51- time .sleep (0.1 )
52-
53- worker .start (flags = "--dequeue_strategy parallel --greenlets %s" % p_greenlets , queues = "q1 q2" , deps = False , start = False )
54-
55- if p_greenlets == 1 :
56- time .sleep (1 + 2 )
57- else :
58- time .sleep (1 )
50+ "tests.tasks.general.MongoInsert" , {"a" : 45 , "sleep" : 1 }, queue = "q3" , block = False , start = False )
5951
60- # Should be dequeued in parallel
61- assert connections .mongodb_jobs .tests_inserts .count ({"params.a" : 41 }) == 1
62- assert connections .mongodb_jobs .tests_inserts .count ({"params.a" : 42 }) == 1
63- assert connections .mongodb_jobs .tests_inserts .count () == 2
52+ time .sleep (0.5 )
6453
65- worker .stop (deps = False , sig = 9 )
66- time .sleep (1 )
54+ flags = "--greenlets %s" % p_greenlets
55+ if p_strategy :
56+ flags += " --dequeue_strategy %s" % p_strategy
6757
68- worker .start (flags = "--dequeue_strategy burst --greenlets 2" , queues = "q3" , deps = False )
58+ print ("Worker has flags %s" % flags )
59+ worker .start (flags = flags , queues = "q1 q2" , deps = False , block = False )
6960
70- time . sleep ( 3 )
61+ gotit = worker . get_wait_for_idle ( )
7162
72- assert connections .mongodb_jobs .tests_inserts .count ({"params.a" : 43 }) == 2
73-
74- # Worker should be stopped now so even if we queue nothing will happen.
75- worker .send_task (
76- "tests.tasks.general.MongoInsert" , {"a" : 43 , "sleep" : 2 }, queue = "q3" , block = False , start = False )
77-
78- time .sleep (2 )
63+ if p_strategy == "burst" :
64+ assert not gotit # because worker should be stopped already
65+ else :
66+ assert gotit
7967
80- assert connections .mongodb_jobs .tests_inserts .count ({"params.a" : 43 }) == 2
68+ inserts = list (connections .mongodb_jobs .tests_inserts .find (sort = [("_id" , 1 )]))
69+ order = [row ["params" ]["a" ] for row in inserts ]
8170
82- worker .stop ()
71+ if p_strategy == "parallel" :
72+ assert set (order [0 :2 ]) == set ([41 , 42 ])
73+ assert set (order [2 :4 ]) == set ([43 , 44 ])
74+ else :
75+ assert set (order [0 :2 ]) == set ([41 , 43 ])
76+ assert set (order [2 :4 ]) == set ([42 , 44 ])
0 commit comments