Fix PollForDecisionTask not respecting requested task list

This commit is contained in:
Jean-Baptiste Barth 2015-10-11 22:11:07 +02:00
parent 1ccadb169f
commit 4e223d2318
2 changed files with 9 additions and 2 deletions

View File

@ -179,8 +179,9 @@ class SWFBackend(BaseBackend):
#
# TODO: handle long polling (case 2) for decision tasks
decision_candidates = []
for wf_id, wf_execution in domain.workflow_executions.iteritems():
decision_candidates += wf_execution.scheduled_decision_tasks
for _, wfe in domain.workflow_executions.iteritems():
if wfe.task_list == task_list:
decision_candidates += wfe.scheduled_decision_tasks
if any(decision_candidates):
# TODO: handle task priorities (but not supported by boto for now)
decision = min(decision_candidates, key=lambda d: d.scheduled_at)

View File

@ -45,6 +45,12 @@ def test_poll_for_decision_task_when_none():
# after waiting 60s when there's no decision to be taken
resp.should.equal({"previousStartedEventId": 0, "startedEventId": 0})
@mock_swf
def test_poll_for_decision_task_on_non_existent_queue():
conn = setup_workflow()
resp = conn.poll_for_decision_task("test-domain", "non-existent-queue")
resp.should.equal({"previousStartedEventId": 0, "startedEventId": 0})
@mock_swf
def test_poll_for_decision_task_with_reverse_order():
conn = setup_workflow()